System Topologies(サービス構成・粒度)
System Topologies は、アプリケーションをどの粒度で分割し、どのように配置・デプロイするか を扱うアーキテクチャ層を対象とする。
- “1 サービスの中身”ではなく 複数サービス/プロセス間の構成 が対象
- モノリスからマイクロサービスまで、スケール戦略・組織構造と密接に関係する
✅ このカテゴリが扱う問題
- システムをどの粒度で分割すべきか
- 変更とデプロイの単位をどう決めるか
- チーム構造とアーキテクチャが噛み合わない問題
- 可用性・スケール・フォールトアイソレーションをどう実現するか
- マイクロサービスが“多すぎる/少なすぎる”問題
✅ System Topologies の代表スタイル
● Monolith(モノリス)
- 単一デプロイ、単一プロセス構成
- 小〜中規模、密結合で問題ない範囲では最も効率的
- 強い内的整合性・簡単なデプロイがメリット
● Modular Monolith(モジュラーモノリス)
- 内部をモジュール化しつつ、デプロイは 1 つ
- “将来のマイクロサービス化”を見据えるが、過度な分割はしない
● Microservices(マイクロサービス)
- プロセス単位で独立デプロイ可能なサービス群
- チーム単位で進化できる構成
- ただし運用コスト・可観測性のハードルが高い
● Service-Oriented Architecture(SOA)
- エンタープライズ統合の文脈で登場
- ESB 中心の古典的 SOA と、API 中心のモダン SOA がある
● Serverless / FaaS
- Function 単位でデプロイ
- 機能単位のスケール/コスト効率を目的
- きめ細かい分割が可能だが複雑にもなりやすい
● Edge / Fog Architecture
- クラウドに加え、エッジ(端末/ローカル拠点)で処理分散
- IoT・低レイテンシ系のアプリで重要
● Cell-based Architecture(セル構造)
- 超大規模システムで採用される構成
- Cell(小さな独立クラスター)単位で水平スケール
- フォールトアイソレーションとスケールを両立
● Multi-region Architecture(マルチリージョン構成)
- 複数リージョンにサービスを配置
- 可用性・レイテンシ・DR を高水準で実現
- Active-active / Active-passive 構成
✅ このカテゴリの読み方
- 小 → 大、単純 → 複雑に進む順で理解する
- 自社/自分のシステム規模・組織規模をマッピングする
- コスト(認知・運用)と価値(独立性・スケール)を比較する
✅ 他の階層との関係
- Integration Styles:マイクロサービスでは通信方式が死活問題
- Structural Styles:各サービス内部構造は別カテゴリ(Layered/Hex など)
- Cross-cutting:Observability・SLO は特にマイクロサービスで必須
- Data Architecture:分散データ整合性問題(CQRS / Event Sourcing)が登場