サービスの粒度に関するトレードオフ
マイクロサービスの粒度を大きくするか?小さくするか?もトレードオフである。
粒度を小さくする要因としては以下のようなものがある。
- サービスの範囲と機能
- 凝集性が高い状態になっているか?
- コード変動率
- 一部のコードだけ変更頻度が高くないか?
- スケーラビリティとスループット
- 一部だけスケールする必要があるか?
- 耐障害性
- 一部の故障で全体が故障してしまわないか?
- セキュリティ
- 一部だけ高いセキュリティが必要か?
- 拡張性
- どの程度拡張されるか?
粒度を大きくする要因としては以下のようなものがある。
- トランザクション
- サービスをまたいだトランザクションが必要か?
- ワークフローとコレオグラフィ
- サービス同士がやりとりする必要はあるか?
- 共有コード
- サービス同士がコード共有の必要はあるか?
- データ関係
- データは分解できるか?