マイクロサービスを提案するときのメリット・デメリットを書き出してみる。
参考:https://engineering.mercari.com/blog/entry/20210806-3c12d85b97/
メリット
- ソース変更による影響を局所化できる
- メンテナンス性・拡張性が向上する
- サービスごとに自由に技術選定できる
- 開発のスピードを向上できる(全体を把握する必要がなくなる)
デメリット
- 設計のレベルが上がる(影響範囲・関心事を分離し設計を行う)
- サービス通信間によるレイテンシの増大
- サービスの規模感が小さい場合、コストのほうが大きくなる
- 開発環境をサービスごとに作成する必要がある(開発環境作成・準備の難易度が上がるため、mono-repositoryなどを使用して全てのサービスが稼働する環境を作成する必要がある)
- Circular dependency(循環参照)を考慮する必要がある