モノリス

全機能を 1 つのデプロイ単位にまとめたアーキテクチャで、シンプルだが大規模化で課題が生じる

アーキテクチャ設計
モノリス」の技術書を見る →

モノリスとは

モノリスは、全機能を 1 つのデプロイ単位にまとめたアーキテクチャである。シンプルで開発が速いが、大規模化するとデプロイの遅延やチーム間の調整コストが増加する。

モノリス vs マイクロサービス

モノリスとマイクロサービスの違いを以下にまとめる。

観点モノリスマイクロサービス
デプロイ全体を一括サービスごと
スケーリング全体をスケールサービスごと
開発速度 (初期)速い遅い (インフラ構築)
開発速度 (大規模)遅い (調整コスト)速い (独立)
運用の複雑さ低い高い
トランザクション容易分散トランザクション

モノリスの問題

モノリスの問題を以下にまとめる。

問題説明
デプロイの遅延小さな変更でも全体をデプロイ
スケーリングの非効率注文処理だけスケールしたいのに全体をスケール
チーム間の調整同じコードベースで衝突
技術スタックの固定全体が同じ言語・フレームワーク

モノリスの段階的分割

モノリスの段階的分割を図で示す。

Phase 1: モノリス (1 Lambda)
Phase 2: モジュラーモノリス (内部を分離)
Phase 3: マイクロサービス (Lambda を分割)

いつモノリスを選ぶか

分割するかどうかは規模の大小ではなく、境界を間違えたときにやり直せる余地が残っているかで考える。

場面判断理由
新規開発でこれから仕様が動くモノリスで始める境界の引き直しがコードの移動だけで済み、サービス間の通信やデータの分割をやり直す作業が発生しない
チームが 1〜5 人モノリス分割しても並行して開発できる人数が増えるわけではなく、増えるのはデプロイ対象と監視対象の数になる
どこで機能を切れるか見えていないモノリス間違った位置で切ると分散トランザクションを抱え込むため、境界が見えるまで 1 つのデプロイ単位に留める
チームが 10 人以上で同じコードの変更が衝突する分割を検討リリースの足並みを揃える調整が重くなり、独立してデプロイできる単位に切る利点が運用の複雑さを上回りはじめる

より深く学ぶには関連書籍が役立つ。

この記事は役に立ちましたか?

関連用語

関連する記事