【ものりす】

モノリス とは?

💡 全部入りの「一枚岩」アプリケーション
📌 このページのポイント
モノリスとマイクロサービスの比較 モノリス UI ビジネスロジック DBアクセス 密結合:全体が1つのデプロイ単位 マイクロサービス 認証 サービス 注文 サービス 通知 サービス API通信 DB DB DB 疎結合:個別にデプロイ可能 ○ シンプル・開発初期に有利 × 変更の影響が全体に波及 × スケーリングが困難 ○ 独立デプロイ・スケーリング × 通信の複雑さ・運用コスト × データ整合性の確保が難しい
モノリスは1つの塊で管理しやすいが拡張しにくい。マイクロサービスは独立して開発・デプロイできるが運用が複雑になる
ひよこ ひよこ

モノリスって何のこと?

ペンギン先生 ペンギン先生

アプリの全機能を1つのプログラムにまとめて作る方式だよ。ユーザー管理も商品管理も決済も、全部が1つのコードベースに入っている。普通にアプリを作り始めるとまずこの形になることが多い。

ひよこ ひよこ

それの何がいいの?

ペンギン先生 ペンギン先生

シンプルなところ。開発環境が1つで済むし、デプロイも1回でOK。関数呼び出しで済むから通信のオーバーヘッドもない。チームが小さいうちは最も効率的な構成なんだ。

ひよこ ひよこ

じゃあデメリットは?

ペンギン先生 ペンギン先生

規模が大きくなると辛くなる。コードが数十万行を超えると、小さな変更でも全体をビルド・テスト・デプロイする必要がある。チームが増えると同じコードベースで衝突も起きやすいし、1箇所のバグがアプリ全体を落とすリスクもある。

ひよこ ひよこ

マイクロサービスにすれば全部解決するの?

ペンギン先生 ペンギン先生

そう単純でもない。マイクロサービスは分散システムの複雑さを持ち込む。ネットワーク障害やデータ整合性の問題が新たに発生する。「モノリスで困ってないならモノリスのままでいい」が現場の鉄則だよ。

ひよこ ひよこ

モノリスからマイクロサービスに移行するときのコツってある?

ペンギン先生 ペンギン先生

ストラングラーフィグパターン」がよく使われるよ。いきなり全部を作り直すんじゃなくて、モノリスの周りに新しいサービスを少しずつ生やしていく。特定の機能を切り出してAPIで繋ぎ、古い部分を徐々に置き換える。モノリス内部をあらかじめモジュール分割しておくと、切り出しやすくなる。いわゆる「モジュラモノリス」という中間的な選択肢もあって、モノリスの良さを活かしつつ境界を明確にする方法として注目されているんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
モノリスって出てきたら「アプリの全機能を1つにまとめた一枚岩の構成のことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Monolith」 = 一枚岩
💬 ギリシャ語の「mono(1つの)」と「lithos(石)」が語源。巨大な一枚岩のように、すべてが一体になっているイメージ
← 用語集にもどる