モノリシック・アーキテクチャーとマイクロサービスの違いは多岐にわたり、複雑です。それぞれに独自のメリットがあり、どちらがより優れているとは言えません。
モノリシック・アプローチは、伝統的なソフトウェアのモデルです。マイクロサービスはより最近のソフトウェア開発を反映したものですが、だからといってモノリシック・アーキテクチャーが時代遅れになったわけではありません。
あなたが技術系のスタートアップ企業で働き始め、新会社のITプランの導入を任されたとしましょう。決めるべき事柄は膨大にありますが、モノリシック・アーキテクチャーかマイクロサービス・アーキテクチャーかを選ぶことほど、基本的で広範囲にわたる決定はありません。ソフトウェア・アーキテクチャーの選択は、組織の初期および最終的なデータ処理ニーズを明確に理解することなしに、空白の状態で決めるべきではありません。なぜなら、どちらのアーキテクチャー・アプローチを選択しても、組織のビジネス目標を有意義に実行する能力に多大な影響を及ぼすからです。
つまり、ここでの賭けは非常に大きなものとなります。そしてあなたは新任のIT部長であり、これはあなた個人にとっても重要な決断です。賢く選択すれば、計り知れないキャリアアップの黄金の道が開けるかもしれません。
どちらを選ぶべきでしょうか。まずは選択肢を確認します。
前述のとおり、モノリシック・アーキテクチャーは従来のソフトウェア開発モデルです。その中では、1つのコードベースが複数の機能(つまり、ビジネス機能)を実行します。コンピュータ・カーネルがすべての機能を制御します。モノリシックなアプリケーションでは、アプリケーション全体に必要なすべてのコードが中央拠点で管理されます。
モノリシックなアプリケーションには通常、次のコンポーネントが含まれます。
モノリシック・アーキテクチャーを使用すると、以下に挙げる数多くのメリットが得られます。
モノリシック・アーキテクチャーの使用には、次のような問題が生じる可能性もあります。
もう 1 つのソフトウェア開発モデルであるマイクロサービスは、クラウドネイティブのアーキテクチャー形式です。マイクロサービスでは、アプリケーションは複数の疎結合コンポーネントまたはサービスを基盤とします。マイクロサービス・アプリケーションには独自のテクノロジー・スタックがあり、これは特定のジョブを実現するために連携するテクノロジーの集合です。
マイクロサービスの主な利点は、システム全体に影響を与えることなく、アプリケーション内の新しいビジネス機能に対応するためにシステムを簡単に更新できることです。これは、時間と労力の両方の大幅な節約につながります。
マイクロサービスの利点は数多く存在します。絶え間ないビジネスの成長と新たな技術革新の両方に対応できるのです。
マイクロサービスには確かなメリットがあるものの、その複雑さゆえに問題もあります:
モノリシック・アーキテクチャーとマイクロサービス・アーキテクチャーを直接比較する前に、より広範なコンテキストを提供できるよう、いくつかの歴史的な詳細をストーリー仕立てで紹介します。
ある意味で、モノリシック・アーキテクチャーの起源を特定の日付まで追跡することは困難です。テクノロジーが複雑になればなるほど、そのテクノロジーが実現した時点を特定することは難しくなります。モノリシック・アーキテクチャーも同様です。その開発は20世紀の中ごろに始まりました。
International Business Machines(IBM)は、その重要な初期開発において主要な役割を果たしていました。DZoneの寄稿者、Pier-Jean Malandrino氏は、「IBMのような企業は、1960年代と1970年代にメインフレームコンピュータを開発することで、初期のソフトウェアアーキテクチャの定義に重要な役割を果たした」と述べています。1
モノリシック・アーキテクチャーは完璧ではありませんでした。多くの場合は非常に簡素な言語で書かれており、1台のマシンで読み取ることを目的としていました。システム全体を搭載した機械は1台しかないため、すべてのコンピューター・コンポーネントは密結合でした。拡張性は存在しないか、かろうじて可能という程度で、通常はシステムの完全な再構築が必要でした。
あるいは、モノリシック・アーキテクチャーが現在の視点から原始的に見えるとしたら、それは他のどのソフトウェア・アーキテクチャーのシステムよりも前に、最初に登場したからでもある、とも言えるでしょう。そしてモノリシック・アーキテクチャーは長期にわたってつねに有用であり、回復力があることさえ証明されています。普通であれば絶え間ない変化だけが残るこの業界において、モノリシック・アーキテクチャーが導入から70年経った今でも使われているという事実は、多くを物語るものです。
モノリシック・アーキテクチャーは進化し続けていますが、すでにかなり前から、もはや唯一の手法ではなくなっています。1980年代が進むにつれて、ソフトウェア・エンジニアリングではモジュール性とオブジェクト指向プログラミング言語の使用が普及しました。1990年代までには、ネットワーク・コンピューティングの最近の進歩を活用できる分散システムの舞台が整っていました。
これが最終的にマイクロサービスの開発につながり、2000年代のクラウド・コンピューティングとコンテナ化テクノロジーの登場以降、広く使用されるようになりました。マイクロサービス・アーキテクチャーは、モノリシック・モデルを迅速なスケーリングと分散システムに対応させて改善するために作り出されたものです。
現在、2020年代には、ソフトウェア開発はモノリシック・アーキテクチャーまたはマイクロサービス・アーキテクチャーのいずれかから展開します。技術の変化から得られる期待に基づいて、誰しも初めは、最近になって登場したテクノロジーの方が優れていると考えがちです。状況によっては間違いなくその通りでしょう。
しかし、こうした十把一絡げの発言は危ういものです。単純に真実ではないからです。モノリシック・アーキテクチャ・モデルのシンプルさがコンピューティングで役立つ場面は、依然として数多く存在します。
どちらのソフトウェア・アーキテクチャーにも長所と短所があり、企業はどちらかのシステムを採用する前に、両方のタイプを慎重に評価し、予想されるアプリケーション開発のニーズを検討する必要があります。
主要な運用段階全体から見ると、モノリシック・アーキテクチャーとマイクロサービス・アーキテクチャーはどのように比較できるでしょうか。
モノリシック・アーキテクチャーまたはマイクロサービス・アーキテクチャーのいずれかを使用することで実現できるユースケースはほぼ無制限にあります。最も一般的なものをいくつか紹介しましょう。
モノリシック・アーキテクチャーやマイクロサービス・アーキテクチャーの本格的な実装は、その方程式のもっとも重要な部分、つまりあなたの属するテクノロジー・スタートアップ企業の具体的なニーズを最初に考慮することなく、真空状態で設計してしまうと、必然的に道を誤ることになります。
IT部門のディレクターとして、ソフトウェア・インフラストラクチャーの決定を計画する際、これは最も重要な作業となります。あるアーキテクチャー形式を使うべき時を把握しておくことは、必要な用途に基づいて最適なシステムを理解することと同様に不可欠です。
組織に最適なアーキテクチャー・システムを選択するだけでなく、今後数か月および数年後に企業が必要とするアーキテクチャー・システムを正確に推定することもあなたの仕事ですから、自社分析の作業が高い価値を持つものになるでしょう。ある意味で、あなたは未来を予測する仕事を任されているぼです。
モノリシック・アーキテクチャーはスタートアップ企業にとって完全に理想的であるように見えるかもしれませんが、将来の成長の予測はあなた次第です。また、急激な拡張が予想される場合は、先手を打ってマイクロサービス・アーキテクチャーに投資することが賢明である場合もあります。考慮すべき変数は多数あります。
すべてのリンク先は、ibm.comの外部です。
1「Evolution of Software Architecture: From Monoliths to Microservices and Beyond」、Pier-Jean Malandrino著、DZone社、2023年11月11日。
2「Retail e-commerce sales worldwide from 2014 to 2027」、Statista社、2024年5月
Javaアプリケーションを開発および配信するためのフルマネージドのシングルテナント・サービス。
DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。
クラウド・アプリケーション開発は、一度構築すれば、迅速に反復し、どこにでもデプロイできます。