要点
- 新しいプロダクトの多くにとって、モジュール化されたモノリスが正しい初期選択。
- マイクロサービスは、複数のチームと明確に分かれたドメインがあるときに効果を発揮する。
- 分散システムには、整合性、トレーシング、運用という現実のコストがある。
- 一括の作り直しではなく、機能ごとに段階的に移行する。
マイクロサービスはモノリスの上位版ではなく、トレードオフです。今のプロダクトに合うアーキテクチャの決め方と、両者の間を安全に移行する方法を解説します。
成熟度ではなくトレードオフ
モノリスはデプロイ可能なひとつのアプリケーションです。マイクロサービスは、アプリケーションを独立してデプロイできるサービスに分け、それぞれが業務機能とそのデータを持ちます。どちらかが本質的に優れているわけではなく、それぞれ簡単になることと難しくなることが異なります。
モノリスが有利な点
よく構造化されたモジュラーモノリス、つまりインターフェースが定義された明確な内部モジュールを持つモノリスは、これらの利点を保ちながら将来の分割に備えられます。
- 理解、テスト、デプロイの対象がひとつのコードベース。
- ドメイン全体にわたるデータベーストランザクション。
- ひとつのプロセス、ひとつのログによる簡単なデバッグ。
- 小さなチームでも運用負担が少ない。
マイクロサービスが有利な点
Spring BootとKafkaで構築した配送プラットフォームでは、注文と決済をメニューや配車から分離したことで、ピーク負荷の中でも決済が動き続けました。そのビジネスにとっては、複雑さを上回る価値がありました。
- チームがリリースを調整せずに独立してデプロイできる。
- 負荷の高いコンポーネントだけをスケールできる。
- ひとつのサービスの障害を封じ込められる。
- 各サービスが適したストレージを使える。
シンプルな判断基準
次の多くが当てはまるならマイクロサービスを検討し、そうでなければモジュラーモノリスから始めましょう。
- 複数のチームが独立してリリースする必要がある。
- ドメインに明確に分かれた業務機能がある。
- システムの部分ごとに負荷の性質が大きく異なる。
- CI/CD、監視、トレーシングをすでに自信を持って運用している。
モノリスからサービスへの移行
そのときが来たら、機能をひとつずつ切り出します。前にインターフェースを置き、その背後に新しいサービスを作り、新旧を並行稼働させ、トラフィックを段階的に切り替えます。各ステップは元に戻せるようにし、本番で検証してから次に進みます。
参考になりましたか?次の記事をメールで受け取れます。

