Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

分散システムアーキテクチャ

複数のサービス・プロセスにまたがるシステムをどう設計するかに関するパターン群。単一アプリケーション内部の構造は application/ を参照。

分散は最後の手段

分散システムは モジュラモノリス にはない複雑さを持ち込む:ネットワーク分断、 部分障害、結果整合性、デプロイの複雑化。アーキテクチャ特性 の観点では、 拡張性やチームの独立デプロイ性と引き換えに、シンプルさ・強い整合性・デバッグのしやすさを犠牲にする。

マイクロサービス にすればスケールする」という理由だけで分散化するのではなく、 モジュラモノリスとして境界を明確にした上で、実際にチームや負荷特性がボトルネックになった箇所から段階的に 切り出すのが定石とされる。

分散化した場合に向き合うことになる主な論点:

論点関連ページ
サービスをどう分割するかマイクロサービス
サービス間の連携をどう疎結合にするかイベント駆動アーキテクチャ
読み書きの負荷特性が異なるモデルをどう分けるかCQRS
状態変化の履歴をどう扱うかイベントソーシング
サービスをまたぐトランザクションをどう扱うかSaga・分散トランザクション
クライアントとサービス群の間をどう仲介するかAPI Gateway・BFF