Modular_Monolith
モジュラ・モノリス ## 概要
- モノリシックアーキテクチャーの中で複数のモジュールを実装する
- 各モジュールが独立して動作する
- モジュールの連携で1つのサービスを提供する
特徴
メリット
理解しやすい
テストしやすい
データ管理しやすい
デメリット
デプロイが全体に影響を与える場合がある
モジュール間の通信が複雑化したり、遅くなる可能性がある
スケールアウトしづらい
APIの単位
以下のようなグラデーションが考えられる。
スタンプ結合0
- デメリット
- 組合せが無限にあるため、人間の認知を越えそう
- 似たような(もしくは重複する)APIが生まれてしまう
- GraphQL なら実現できるが、モジュラ・モノリスでは難しい
- メリット
- オーバーヘッド0
公約数的にいくつかの単位にする
- メリット
- 利用側で必要な情報を取捨選択することで、スタンプ結合を上のレイヤーに波及させずにすむ
- APIの数が認知の範囲内に収まる
- デメリット
- ややオーバーヘッドがある
スタンプ結合許容でAPI 1つ
- メリット
- APIが1つで済み、利用側は明確
- デメリット
- オーバーヘッドが大きい
- 毎回大きいオブジェクトを作らなければならない