コンテンツにスキップ

バックエンド設計の11パターン:モノリスからSaga・BFFまで

概要

バックエンドアーキテクチャの主要 11 パターンの概要。システムデザイン面接や設計判断の場で使う共通語彙として整理。

詳細

1. Monolith(モノリス)

  • 全機能が 1 デプロイ単位
  • 採用場面: 小規模チーム・初期フェーズ・社内ツール
  • トレードオフ: シンプルだが、スケールと独立デプロイが難しい

2. Microservices(マイクロサービス)

  • 機能を独立したサービスに分割
  • 採用場面: チームが大きく、機能ごとに独立したスケールが必要な場合
  • トレードオフ: 分散システムの複雑さ(ネットワーク、整合性)が増す

3. Event-Driven(イベント駆動)

  • サービス間はイベントで非同期通信(Kafka, SQS 等)
  • 採用場面: 高スループット・疎結合が必要な場合
  • トレードオフ: デバッグが難しい、結果整合性

4. Serverless(サーバーレス)

  • 関数単位でデプロイ、実行時のみ課金(AWS Lambda 等)
  • 採用場面: 使用頻度が低い・不規則なワークロード
  • トレードオフ: コールドスタート、長時間処理に不向き

5. Layered Architecture(レイヤードアーキテクチャ)

Presentation Layer → Business Logic Layer → Data Access Layer
- MVC の延長線上にある最もポピュラーなパターン

6. Clean Architecture

  • 依存方向を内側(ビジネスロジック)へのみ向ける
  • Domain → Use Case → Interface Adapters → Frameworks

7. Hexagonal Architecture(ポート&アダプター)

  • ビジネスロジックを外部依存(DB・UI・外部API)から分離
  • テスト容易性が高い

8. CQRS(Command Query Responsibility Segregation)

Command(書き込み)→ Write Model(更新に最適化)
Query(読み取り)  → Read Model(参照に最適化、読み取り専用のビュー)
- 読み書きのスケール要件が異なる場合に有効

9. Saga Pattern

  • マイクロサービス間の分散トランザクションを管理
  • 補償トランザクションで整合性を保つ

10. API Gateway

  • クライアントと複数サービスの間に立つ単一エントリポイント
  • 認証・レートリミット・ルーティングを集約

11. BFF(Backend for Frontend)

  • フロントエンドの種別(Web・モバイル)ごとに専用バックエンドを用意
  • 各クライアントに最適化したレスポンスを返せる

なぜ重要か / いつ使うか

  • システムデザイン面接で「どのアーキテクチャを選ぶか」の回答軸として
  • 新機能追加や既存システム改善のアーキテクチャ議論のとき
  • 「このシステムにマイクロサービスは必要か?」の判断材料として