メインコンテンツまでスキップ

システム概要

Bazbiiシステムの全体構成と、リクエストがどのように処理されるかを説明します。

システム全体図

クライアントアプリケーション

user-mobile

  • 技術: React Native (Expo)
  • 役割: エンドユーザー向けモバイルアプリ
  • 主要機能:
    • 位置情報ベースのフィード表示
    • 投稿作成
    • ヒートマップ表示
    • 店舗情報閲覧

partner-web

  • 技術: Next.js
  • 役割: パートナー(店舗)向けWebアプリケーション
  • 主要機能: 店舗情報管理、投稿管理

ops-web

  • 技術: Next.js
  • 役割: 運用管理向けWebアプリケーション
  • 主要機能: 監視、運用操作

サーバーアプリケーション

Gateway (server-apps/gateway)

  • 役割: 外部APIのエントリーポイント
  • 責務:
    • HTTP/JSON ↔ gRPC の変換 (Connect RPC)
    • JWT認証・認可
    • レート制限(Cloudflareと協調)
    • リクエストトレースの開始
    • エラーハンドリングとフォーマット統一

API Server (server-apps/api)

  • 役割: ビジネスロジックの実行
  • 責務:
    • gRPC APIの実装
    • ドメインサービス呼び出し
    • データベース操作
    • ドメインイベント発行

レイヤー構成

server-core

ドメインモデルとビジネスロジック。外部依存なし。

  • entities: ドメインエンティティ(Post, Actorなど)
  • services: ユースケースサービス
  • ports: インターフェース定義(Repository, EventPublisherなど)
  • events: ドメインイベント

server-platform

インフラストラクチャの実装。

  • datastore: PostgreSQL実装
  • observability: ログ・トレース・メトリクス(OpenTelemetry)
  • security/auth: JWT認証実装
  • bootstrap: アプリケーション起動時の初期化

リクエストフロー例:投稿作成

  1. Client → Cloudflare

    • WAF、レート制限、DDoS防御
  2. Cloudflare → Gateway

    • Authenticated Origin Pulls (mTLS)
    • Connect RPCハンドラーが受信
  3. Gateway内処理

    • JWT検証 → ActorID抽出
    • HTTP/JSON → gRPCメッセージ変換
    • トレース開始(Traceparent付与)
    • API ServerへgRPCリクエスト送信
  4. API Server内処理

    • gRPCハンドラー受信
    • PostService.CreateUserPost 呼び出し
    • Repository経由でDB保存
    • ドメインイベント発行(post.created)
  5. API Server → Gateway

    • gRPCレスポンス返却
  6. Gateway → Client

    • gRPC → HTTP/JSON変換
    • レスポンス返却
  7. 並行処理

    • ドメインイベントがObservabilityシステムへ送信
    • メトリクス・ログ・トレースが収集

データフロー

書き込みフロー

読み取りフロー

通信プロトコル

通信経路プロトコル用途
Client ↔ GatewayHTTPS (Connect RPC)外部API
Gateway ↔ APIgRPC (mTLS)内部通信
API ↔ DBPostgreSQLデータ永続化
各コンポーネント → ObservabilityOTLP (HTTP/gRPC)テレメトリ送信

環境別エンドポイント

各環境でのエンドポイントURLについては、ドメイン運用を参照してください。

関連ドキュメント