マイクロサービスを提案するときのメリット・デメリットを書き出してみる。

参考:https://engineering.mercari.com/blog/entry/20210806-3c12d85b97/

メリット

  • ソース変更による影響を局所化できる
  • メンテナンス性・拡張性が向上する
  • サービスごとに自由に技術選定できる
  • 開発のスピードを向上できる(全体を把握する必要がなくなる)

デメリット

  • 設計のレベルが上がる(影響範囲・関心事を分離し設計を行う)
  • サービス通信間によるレイテンシの増大
  • サービスの規模感が小さい場合、コストのほうが大きくなる
  • 開発環境をサービスごとに作成する必要がある(開発環境作成・準備の難易度が上がるため、mono-repositoryなどを使用して全てのサービスが稼働する環境を作成する必要がある)
  • Circular dependency(循環参照)を考慮する必要がある