マイクロサービスは運用の単純性を独立性とスケーラビリティと引き換えにします。大規模なシステムとチームに役立ちますが、分散システムの複雑性を追加します。
利点
- 独立したデプロイ — フル リリースなしで 1 つのサービスをリリースします。
- 独立したスケーリング — ホットなサービスだけをスケールします。
- テクノロジーの自由度 — サービスごとに適切な言語/DB を選択します。
マイクロサービスは運用の単純性を独立性とスケーラビリティと引き換えにします。大規模なシステムとチームに役立ちますが、分散システムの複雑性を追加します。
✗ Distributed-systems complexity (network failures, retries, timeouts)
✗ Eventual consistency instead of simple ACID transactions
✗ Harder testing & debugging across service boundaries
✗ Operational overhead (CI/CD, monitoring, tracing per service)
✗ Network latency between services
Monolith pain ──────────────▶ grows with code/team size
Microservice pain ───────────▶ high fixed cost, flatter slope
→ Below a certain scale, a monolith is simply cheaper.
利点は組織的および運用的なもので、魔法ではありません。多くのチームが独立してデプロイし、異なる部分をスケーリングする必要があるときに報われます。
欠点は初期段階で継続的です。
オートメーション、可観測性、CI/CD に投資できない場合、マイクロサービスはあなたをスピードアップするのではなく、遅くします。