なぜ私たちはモジュラーモノリスに戻ったのか

ソフトウェアチームは戦略を変えつつあります。多くのチームが、アプリケーションをマイクロサービスに分割することに何年も費やしてきました。しかし今、彼らはそれらの断片を再び一つにまとめようとしています。彼らが構築しているのは、かつての乱雑なモノリスではありません。「モジュラーモノリス」です。

マイクロサービスは隠れたコストを生み出します。分散システムは膨大な複雑さを加えます。多くのチームがマイクロサービスを採用するのは、スケールが必要だからではなく、流行に乗っているからです。もしチームが小規模であれば、マイクロサービスは開発の足を引っ張っている可能性があります。

モジュラーモノリスは、両方の利点を兼ね備えています。デプロイ可能なユニットとしては一つに保たれますが、コードは厳格なモジュールに整理されています。分散システムを運用する高いコストをかけることなく、明確な境界線を確保できます。

2つのアプローチを比較してみましょう:

• デプロイ: モノリスは1つのユニットを使用します。マイクロサービスは多数を使用します。 • 境界: モノリスは厳格なコードルールを使用します。マイクロサービスはネットワークを使用します。 • 通信: モノリスは単純な関数呼び出しを使用します。マイクロサービスはネットワーク呼び出しを使用します。 • オーバーヘッド: モノリスは運用コストが低いです。マイクロサービスはコストが高くなります。

どのような場合にモジュラーモノリスを選ぶべきでしょうか?

  • チームのエンジニアが50人未満である。
  • クラウドインフラストラクチャのコストを削減する必要がある。
  • デバッグとテストを簡素化したい。
  • 結局のところ、サービスをまとめてデプロイする必要があることが多い。

すでに実在の企業がこれを実践しています。Shopifyは、数百万のマーチャントを管理するためにモジュラーアプローチを採用しています。Amazon Prime Videoは、特定のワークロードをマイクロサービスからモノリスへと戻しました。その結果、インフラコストを90%削減することに成功しました。

小規模なチームであれば、Netflixのような規模を目指して構築しないでください。まずはモジュラーな構成から始めましょう。サービスを切り出すのは、データによって本当に必要だと証明された時だけにしてください。

集約が必要かどうかを判断するために、このチェックリストを活用してください:

  • 機能開発よりも、サービス間の接続のデバッグに時間を費やしていませんか?
  • クラウドの請求額がユーザー数の増加よりも速く増えていませんか?
  • 多くのサービスに対して、DevOpsエンジニアが5人未満ではありませんか?
  • バグを見つけるために、エンジニアが3つ以上のサービスにわたって1つのリクエストを追跡していませんか?

「はい」と答えた場合、モジュラーモノリスへの移行が正しい選択である可能性が高いです。

出典: https://dev.to/ail_akram_dcc5063c428734b/why-we-moved-back-to-a-modular-monolith-the-costly-reality-of-microservices-in-2026-3kbo

オプションの学習コミュニティ: https://t.me/GyaanSetuAi