モノリスはすべての機能を単一のデプロイ可能なユニットにパッケージ化し、マイクロサービスはその機能を多くの独立してデプロイ可能なサービスに分割します。コアの違いはデプロイメントのユニットとモジュール間の境界です。
モノリスはすべての機能を単一のデプロイ可能なユニットにパッケージ化し、マイクロサービスはその機能を多くの独立してデプロイ可能なサービスに分割します。コアの違いはデプロイメントのユニットとモジュール間の境界です。
| 側面 | モノリス | マイクロサービス |
|---|
| デプロイメント | 1つのユニット | 多くの独立したユニット |
| データベース | 通常は1つの共有DB | サービスごとに1つのDB |
| スケーリング | アプリ全体をスケーリング | サービスを個別にスケーリング |
| 通信 | プロセス内呼び出し | ネットワーク (HTTP/gRPC/events) |
| チーム結合度 | 高い | 低い (サービスごとの所有権) |
| 障害の影響範囲 | アプリ全体 | 多くの場合1つのサービスに限定 |
| 運用上の複雑さ | 低い | 高い |
MONOLITH best when:
✓ small team / early-stage product
✓ domain not yet well understood
✓ simplicity and fast iteration matter most
MICROSERVICES best when:
✓ large org with many teams
✓ parts have very different scaling needs
✓ you need independent deploy cadence
モジュール化が不十分なモノリスは分割しても魔法のように改善されません — 分散された混乱が生じるだけです。まず境界を修正してください。
間違ったスタイルを選択すると、コストが高くつきます。時期尚早な分割は、小さなチームに対してレイテンシ、運用コスト、デバッグの苦痛を追加します。
ほとんどの成功したシステムは、よく構造化されたモノリスとして始まり、チームサイズまたはスケーリングの圧力がそれを明確に正当化するときにのみサービスを抽出します。