アーキテクチャ 構成関連 - yama-0t0k0/wiki GitHub Wiki

人材紹介向けCRMシステム+チャット機能を想定したサーバーサイドDart構成を、構成要素・目的・使用技術ごとにまとめた表

リアルタイムチャットやPVカウンターのような“高頻度での書き込み”や“リアルタイム性”が求められる機能は、Cloud Firestore ではなく Firebase Realtime Database(RTDB)を併用するのが合理的な選択です。 ※「高頻度」の基準 書き込み制限(1ドキュメントにつき1秒あたり最大1書き込み) を超える場合。

構成要素 目的・役割 使用技術・サービス 備考
フロントエンド UI・ユーザー操作 Flutter Web/モバイル共通対応可
バックエンドAPI 業務ロジック、データアクセスAPI Dart(shelf, shelf_router, shelf_cors)など REST API or GraphQL
データベース(業務) 候補者情報、求人票、進捗、レポートなどの保管 Cloud Firestore 認証付きクエリ、検索性良
データベース(チャット) チャットメッセージ、既読通知、PVカウントなどのリアルタイム処理 Firebase Realtime Database 低レイテンシ処理向け
認証・認可 ユーザー認証、セキュリティルール適用 Firebase Auth(Google・メール等) FirestoreとRealtimeDB両方に適用可能
ホスティング・CDN APIや静的ファイルの提供 Firebase Hosting or Cloud Run(for Dart backend) DartはCloud Runと相性◎
ロギング/監視 エラー・パフォーマンス監視 Google Cloud Logging、Crashlytics(Flutter側) 任意でDatadogなども可
バッチ・スケジュール 日次レポート生成、期限切れ通知 Cloud Scheduler + Dart Functions or Cloud Functions Firebaseベースでも対応可
チャット通知 新着メッセージの通知(クライアント) Firebase Cloud Messaging(FCM) モバイル/ブラウザ通知両方可
ストレージ 履歴書、職務経歴書のアップロード・管理 Firebase Storage Firestoreとの連携可能

想定ユースケースと適合性

ユースケース 適合性 備考
業務管理(求人・求職者・マッチング) Firestoreとの相性が良く、リアルタイム更新も可能
リアルタイムチャット機能 RTDBを使用することで低レイテンシで実装可能
プッシュ通知 Firebase Cloud Messagingがそのまま使える
大量アクセス時のスケーラビリティ ◯〜△ Cloud Run や Cloud Functions でスケーラブルだが、超大規模には注意
複雑な集計・分析 Firestoreのみでは不向き、必要に応じて BigQuery や RDB 併用を検討
graph TD
    subgraph Client
        FE[Flutter App/Web]
    end

    subgraph Backend
        API[Dart Server]
    end

    subgraph Firebase
        AUTH[Firebase Auth]
        FS[Firestore]
        RTDB[Realtime Database]
        FCM[Firebase Cloud Messaging]
        STG[Firebase Storage]
        MON[Cloud Monitoring & Logging]
    end

    subgraph DevOps
        CI[GitHub Actions]
        CR[Cloud Run]
    end

    FE -->|REST/gRPC| API
    FE -->|Login| AUTH
    FE -->|Receive| FCM
    FE -->|Upload/Download| STG

    API -->|Verify Token| AUTH
    API -->|Read/Write| FS
    API -->|Chat I/O| RTDB
    API -->|Notify| FCM
    API -->|File Access| STG
    API -->|Logs/Errors| MON

    CI -->|Deploy API| CR
    CI -->|Deploy Web| FE
    CR --> API

    FS --> MON
    RTDB --> MON
    AUTH --> MON

https://www.mermaidchart.com/raw/e89b92fa-0919-46e8-9761-f8f05314413a?theme=light&version=v0.1&format=svg

OSSのRAGを想定したチャットボット構成

https://www.mermaidchart.com/raw/119f3d37-1b8d-48f1-8141-d5fee013994b?theme=light&version=v0.1&format=svg

graph TD
    subgraph User Side - Smartphone
        A1[Flutter Web\nUser Smartphone Browser]
    end

    subgraph Firebase
        B1[Firebase Auth\nUser Authentication]
        B2[Firestore\nUser Profile]
        B3[Firebase Functions\nor Dart Server]
    end

    subgraph On-Premises Environment
        C1[API Gateway\nWith Auth]
        C2[Haystack Pipeline RAG]
        C3[Retriever\nFAISS / Qdrant]
        C4[Document Store\nLocal]
        C5[Reader\nLocal LLM Mistral 7B and others]
        C6[Chat Log Storage\nPostgreSQL / SQLite]
    end

    %% Flow
    A1 --> B1
    B1 --> B3
    A1 --> B3
    B3 -->|Send User ID and Profile| C1
    C1 --> C2
    C2 --> C3
    C3 --> C4
    C2 --> C5
    C2 --> C6
    C5 -->|Response| C2
    C2 -->|Return Response| B3
    B3 --> A1