サービスの粒度に関するトレードオフ

    ソフトウェアアーキテクチャ・ハードパーツ

    マイクロサービスの粒度を大きくするか?小さくするか?もトレードオフである。

    粒度を小さくする要因としては以下のようなものがある。

    • サービスの範囲と機能
      • 凝集性が高い状態になっているか?
    • コード変動率
      • 一部のコードだけ変更頻度が高くないか?
    • スケーラビリティとスループット
      • 一部だけスケールする必要があるか?
    • 耐障害性
      • 一部の故障で全体が故障してしまわないか?
    • セキュリティ
      • 一部だけ高いセキュリティが必要か?
    • 拡張性
      • どの程度拡張されるか?

    粒度を大きくする要因としては以下のようなものがある。

    • トランザクション
      • サービスをまたいだトランザクションが必要か?
    • ワークフローとコレオグラフィ
      • サービス同士がやりとりする必要はあるか?
    • 共有コード
      • サービス同士がコード共有の必要はあるか?
    • データ関係
      • データは分解できるか?