モノリスからマイクロサービスへ: マイクロサービスを選択する理由

モノリスからマイクロサービスへ』を読んだ

マイクロサービスを選択する上での参考になりそうな情報があったのでメモ マイクロサービスを導入するためには明確な理由を持つべきであり、同じ結果を達成できる他の方法も踏まえて検討すべし、とした上で、2.2章でマイクロサービスを選択する代表的な理由と、同じ結果を達成できる他の方法が列挙されている

  1. チームの自律性を高めるため
    マイクロサービスによって、チームの規模を小さく保つ
    代替案 チーム設計が本質で、マイクロサービス化は必須ではない モジュラーモノリスでも実現できる

  2. 市場投入までの時間を減らす
    デプロイ独立性から、各マイクロサービスは他サービスとの調整なくリリースできる
    代替案 リリースを早めるための手法をいくらでもある ボトルネックに効く対策が必要

  3. 負荷への費用対効果が高いスケーリング
    マイクロサービス単位でのスケールができる
    代替案 既存のモノリスのスケールアウト、スケールアップで十分な場合も多い

  4. 堅牢性を改善する
    サービス全体を止めなくても、マイクロサービスを変更できる、という意味合い
    単にマイクロサービスは堅牢性があるというわけではなく、 "むしろ、マイクロサービスはネットワークの分割やサービス停止などに一層耐えられるようなシステムの設計を必要とする"
    代替案 LBによる冗長化や、地理的なインフラの分散などで十分な場合も

  5. 開発者の数を増やす
    マイクロサービスごとにチームができるので開発者のスケールができる
    代替案 モジュラーモノリスでも複数チームで担当を分けることができる
    ただしモジュラーモノリスではデプロイ時はチーム間で調整が必要なため限界がある

  6. 新しい技術を受け入れる
    サービスごとに別の技術を選択できるので、一部のサービスだけ新しい技術を採用する、といったことができる