よろずやIT
プログラミング

モノリシックとは?意味・メリット・マイクロサービスとの違い

執筆・監修:よろずやIT編集部|編集方針を見る

結論:まずここだけ読めばOK

詳しい手順・原因は、この下で解説しています。

プログラミングのイラスト

モノリシックとは(結論から)

**モノリシック(Monolithic)**とは、ログイン・決済・検索などシステムに必要な機能をすべて1つの大きなプログラムとしてまとめて作る設計方式のことです。「一枚岩の」という意味の英単語がそのまま名前になっています。対になる考え方が「マイクロサービス」で、こちらは機能ごとに小さく分割して作る方式を指します。

以下で、この2つの違いをもう少し詳しく見ていきます。

そもそも何がどう違うのか

モノリシック(Monolithic、「一枚岩の」という意味)とマイクロサービス(Microservices)とは、どちらもシステムの**作り方(設計方針)**を表す言葉です。

「一軒家」と「集合住宅」で考える

モノリシックとマイクロサービスの違いを示す図解

この2つの違いは、建物の作り方に例えるとイメージしやすくなります。

一軒家は全体の作りがシンプルで見渡しやすい一方、集合住宅は各部屋を独立して増改築でき、1つの部屋の工事が他の部屋にほとんど影響を与えません。

それぞれのメリット・デメリット

項目 モノリシック マイクロサービス
開発のしやすさ(初期) シンプルで始めやすい 部品分割の設計に手間がかかる
一部機能だけの修正・拡張 全体に影響が及びやすい 対象のサービスだけ独立して修正しやすい
障害の影響範囲 一部の不具合が全体停止につながりやすい 一部のサービス停止に影響をとどめやすい
管理の複雑さ システム全体は1つでシンプル サービス同士の通信管理など、全体としては複雑になりやすい

なぜマイクロサービスが注目されるようになったのか

事業の規模が大きくなり、関わる開発チームの人数が増えてくると、モノリシックな作り方では「1つの機能を直すために、全体のテストや公開作業が必要になる」といった非効率が目立ってきます。そこで、機能ごとに独立してチームが開発・公開できるマイクロサービスの発想が、大規模なサービスを中心に広まってきました。

どちらを選ぶべきか

多くの成長したサービスでは、最初はモノリシックで始め、規模の拡大に応じて段階的にマイクロサービスへ移行していく、という道をたどっています。

これは、フレームワークとライブラリの選び方の記事で触れた「最初から最適解を狙うより、段階的に選ぶ方がうまくいく」という考え方とも通じるところがあります。将来の拡張性を見越して最初から複雑な構成を組むより、今の規模に見合った選択をして、必要になった時に移行する方が、結果的に無駄が少なくなることが多いです。

マイクロサービスを支える周辺技術

マイクロサービスは「分割する」という設計方針だけでは成り立たず、それを実現するための周辺技術とセットで語られることがほとんどです。

これらの技術が組み合わさって、はじめてマイクロサービスは実用的な選択肢になります。逆に言えば、コンテナやCI/CDの整備が追いついていない状態でサービスだけを細かく分割してしまうと、かえって管理の手間が増え、モノリシックより扱いにくくなってしまうケースも少なくありません。

分割したことで生まれる新しい課題

サービスを分割すると、今度は「サービス同士の通信がうまくいかなかった時、どうするか」という新しい課題が生まれます。たとえば、決済サービスが一時的に不調になった際、それを呼び出す他のすべてのサービスが連鎖的に待たされ、システム全体が巻き込まれて止まってしまうことがあります。こうした連鎖を防ぐために考え出されたのが「サーキットブレーカー」という設計パターンです。電気のブレーカーが異常時に回路を遮断するのと同じ発想で、不調なサービスへの呼び出しを一時的に止め、被害の拡大を防ぎます。詳しくはサーキットブレーカーパターンの記事で解説しています。

実務で意識しておきたい移行の進め方

いきなり全体をマイクロサービスへ作り直すのは、リスクもコストも大きい判断です。実務でよく採用されているのは、以下のような段階的な進め方です。

  1. まずはモノリシックで全体を作り、サービスとして軌道に乗せる
  2. 機能ごとの利用頻度や、チーム間の依存関係を観察する
  3. 特に独立性が高く、頻繁に変更が発生する機能(決済処理や通知機能など)から、優先的に切り出していく
  4. 切り出した部分の運用が安定したら、次の機能へと段階的に広げていく

一度にすべてを切り替えるのではなく、影響範囲の小さい部分から少しずつ試すことで、想定外のトラブルを最小限に抑えながら移行を進められます。移行の具体的な進め方は、ストラングラーパターンとはで詳しく解説しています。

「作り直す」のではなく、「少しずつ移す」

すでに、モノリシックなシステムがあり、それをマイクロサービスなど、別の作り方に移したい場合、一度に全部作り直すのは、リスクが大きい方法です。完成するまで成果が見えず、切り替えの日に、問題が集中するからです。

そこで使われるのが、入口で振り分けながら、機能ごとに少しずつ、新しいシステムへ置き換えていく方法です。詳しくは、ストラングラーパターンとはで解説しています。

また、技術の選び方については、**「新しいから」ではなく、「5年後も、自分たちで運用できるか」**で判断することを、おすすめします。マイクロサービスは、分割することで、運用する部品が増え、運用の負担が増えることがあります。既存のシステムが、安定して動き、運用担当者が新しい仕組みに慣れていない場合は、モノリシックのまま、改善を続けるほうが、現実的なこともあります(コンテナとVMの違い、フレームワークは「流行っているから」で選ばない)。

選択に迷ったら、まずここだけ見る

モノリシックとマイクロサービスは、それぞれ「シンプルさ」と「柔軟な拡張性」という異なる強みを持つ、システムの設計思想です。どちらが優れているというより、事業の規模やチーム体制に応じて選ぶべき、適材適所の関係にあります。具体的な判断基準は、フレームワークは「流行っているから」で選ばないの「5つの観点」(規模・運用できる人・学習コスト・自由度・やめやすさ)が、そのまま使えます。

PR

マイクロサービスの入門書を探す

Amazonで見る
SHAREXLINEはてブ

よくある質問

Q.マイクロサービスの方が、モノリシックより優れた新しい技術なのですか?

A.優劣ではなく、適材適所の関係です。小規模なサービスではモノリシックの方がシンプルに管理でき、大規模で複数チームが関わるサービスではマイクロサービスの分割による恩恵が大きくなる、という向き不向きの違いがあります。

Q.小さく始めるサービスは、最初からマイクロサービスで作った方が将来のためになりますか?

A.必ずしもそうとは限りません。事業の初期段階では要件が固まっておらず、部品同士の境界線を引くこと自体が難しいため、まずはモノリシックでシンプルに作り、必要に応じて後から分割するという進め方も広く採用されています。

関連記事

最新のIT関連書籍 トップ10

PR / 楽天市場の売れ筋ランキングを定期的に取得しています。価格は変動する場合があるため、購入前に各ストアでご確認ください。