Modular_Monolith

モジュラ・モノリス ## 概要

  • モノリシックアーキテクチャーの中で複数のモジュールを実装する
  • 各モジュールが独立して動作する
  • モジュールの連携で1つのサービスを提供する

特徴

メリット

理解しやすい

テストしやすい

データ管理しやすい

デメリット

デプロイが全体に影響を与える場合がある

モジュール間の通信が複雑化したり、遅くなる可能性がある

スケールアウトしづらい

APIの単位

以下のようなグラデーションが考えられる。

スタンプ結合0

  • デメリット
    • 組合せが無限にあるため、人間の認知を越えそう
    • 似たような(もしくは重複する)APIが生まれてしまう
    • GraphQL なら実現できるが、モジュラ・モノリスでは難しい
  • メリット
    • オーバーヘッド0

公約数的にいくつかの単位にする

  • メリット
    • 利用側で必要な情報を取捨選択することで、スタンプ結合を上のレイヤーに波及させずにすむ
    • APIの数が認知の範囲内に収まる
  • デメリット
    • ややオーバーヘッドがある

スタンプ結合許容でAPI 1つ

  • メリット
    • APIが1つで済み、利用側は明確
  • デメリット
    • オーバーヘッドが大きい
    • 毎回大きいオブジェクトを作らなければならない

参考

事例

TypeScript