モノリス
全機能を 1 つのデプロイ単位にまとめたアーキテクチャで、シンプルだが大規模化で課題が生じる
アーキテクチャ設計
モノリスとは
モノリスは、全機能を 1 つのデプロイ単位にまとめたアーキテクチャである。シンプルで開発が速いが、大規模化するとデプロイの遅延やチーム間の調整コストが増加する。
モノリス vs マイクロサービス
モノリスとマイクロサービスの違いを以下にまとめる。
| 観点 | モノリス | マイクロサービス |
|---|---|---|
| デプロイ | 全体を一括 | サービスごと |
| スケーリング | 全体をスケール | サービスごと |
| 開発速度 (初期) | 速い | 遅い (インフラ構築) |
| 開発速度 (大規模) | 遅い (調整コスト) | 速い (独立) |
| 運用の複雑さ | 低い | 高い |
| トランザクション | 容易 | 分散トランザクション |
モノリスの問題
モノリスの問題を以下にまとめる。
| 問題 | 説明 |
|---|---|
| デプロイの遅延 | 小さな変更でも全体をデプロイ |
| スケーリングの非効率 | 注文処理だけスケールしたいのに全体をスケール |
| チーム間の調整 | 同じコードベースで衝突 |
| 技術スタックの固定 | 全体が同じ言語・フレームワーク |
モノリスの段階的分割
モノリスの段階的分割を図で示す。
Phase 1: モノリス (1 Lambda)
Phase 2: モジュラーモノリス (内部を分離)
Phase 3: マイクロサービス (Lambda を分割)
いつモノリスを選ぶか
いつモノリスを選ぶかの判断基準を以下にまとめる。
| ケース | 推奨 |
|---|---|
| 新規プロジェクト | ✅ モノリスから始める |
| チーム 1〜5 人 | ✅ モノリス |
| ドメイン境界が不明確 | ✅ モノリス |
| チーム 10 人以上 | マイクロサービスを検討 |
より深く学ぶには関連書籍が役立つ。
この記事は役に立ちましたか?
関連用語
モノリスファースト
新規プロジェクトではまずモノリスで構築し、ドメイン理解が深まってからマイクロサービスに分割する戦略
モジュラーモノリス
モノリスの内部をモジュールに分割し、マイクロサービスの利点を取り入れたアーキテクチャ
マイクロサービス
1 つの大きなアプリケーションを複数の小さなサービスに分割し、それぞれが独立してデプロイ・スケール可能な状態で協調動作するアーキテクチャパターン
Strangler Fig パターン
レガシーシステムを段階的に新システムへ移行する設計パターン
認知負荷
開発者がコードを理解・変更するために必要な精神的な労力の量
マイクロフロントエンド
フロントエンドをチームごとに独立した小さなアプリケーションに分割し、個別にデプロイ可能にするアーキテクチャ
関連する記事
深夜 3 時のデプロイ前に読み返したい 1 ページ
本番デプロイの直前、最終確認のチェックリストとして技術書の特定のページが役立つことがあります。緊張の場面で頼りになる「お守りの 1 ページ」の見つけ方と活用法。
「それ、本に書いてあったよ」が最高の褒め言葉になる職場
チーム全員が技術書を読む文化がある職場では、議論の質とコードの質が変わります。読書文化を持つチームの特徴と、その文化を育てるための具体的な方法を紹介します。
有名プログラマの読書習慣 - 天才たちは何を読んできたのか
リーナス・トーバルズ、まつもとゆきひろ、ビル・ゲイツなど、著名なプログラマたちの読書習慣と愛読書を紹介します。天才たちの読書スタイルから学べることとは。