モノリシック・アーキテクチャーとは。

問題解決策を見つけるためにプロジェクトとプログラミングに取り組むソフトウェア・エンジニア

共同執筆者

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

モノリシック・アーキテクチャーとは。

モノリシック/アーキテクチャーは、単一のコード・ベースで複数のビジネス機能を実行する従来のソフトウェア開発モデルです。モノリシックOSでは、カーネルがすべての機能を指示します。モノリシック・アーキテクチャーは、同様のサービスを実行するが異なるアーキテクチャーを採用するマイクロサービスとよく比較されます。

モノリシック・アーキテクチャーについて考察する1つの方法は、この用語の他の意味を視覚化することです。実際の建物のデザインを考える場合、巨大な岩石層に切り込まれた構造をモノリシック・アーキテクチャーと呼びます。コアとなる「モノリス」という言葉は、その物質がすべてひとつで構成されており、その構成が完全に均一であるという事実に関係しています。1つの地層から複数の連結した建物が形成される場合があります。そのすべてが同じ岩石の基礎を共有しています。

この例えは、ソフトウェア・エンジニアリングに関する私たちのディスカッションによく対応しています。この文脈では、モノリシック・アーキテクチャーは、異なるが単一のコード・ベース(またはロック・ベース)を共有するビジネス機能(つまり、さまざまなビルディング)を実現します。

数十年にわたり、モノリシック・アーキテクチャーがソフトウェア開発を従来のソフトウェア・モデルとして完全に適用していました。しかし今、モノリシック・アーキテクチャーに関する適切な議論は、その優れた代替手段であるマイクロサービスを熟考する必要があります。マイクロサービスは、ますます使用されています。

モノリシック・アーキテクチャーはどのように機能するのか。

モノリシック・ソフトウェアでは、アプリケーションに必要なすべてのコードが中央の1か所に保管されています。システムは1つの形式でのみ通信を受け入れるように設計されているため、開発者にとって簡素化というさらなるメリットが得られます。このシステムには、さまざまなサービスからの通信を翻訳する負担はかかりません。これにより、DevOpsなどの開発プロセスの実行が容易になります。

モノリシック・アーキテクチャーコンポーネント

モノリシック アプリケーションには通常、次のコンポーネントが含まれています。

  • クライアント側ユーザー・インターフェース(UI):この文脈においては、「クライアント側」とは、ユーザーのコンピューティング・デバイスに表示されるものに関連付けられています。UIは、画像、テキスト、その他のUI画面を介して送信できるブラウザー・アクションに関連する情報など、ユーザーが見ているものを管理します。
  • サーバー側アプリケーション:サーバー側アプリケーションは、メモリー、CPU、ストレージなどのサーバー参考情報にアクセスして、サーバーのリソースを何らかの方法で処理します。

モノリシック・アーキテクチャーの利点

モノリシック・アーキテクチャーを詳細に調べると、いくつかの重要な利点があることがわかりました。

  • アプリケーション開発の簡素化:1つのコード・ベースで構築されたアプリケーションはより簡単に構築できます。
  • シンプルなデプロイメント:モノリシック・アーキテクチャーは単一の実行可能ファイルまたはディレクトリで動作するため、デプロイメントが容易になります。さらに、モノリシック・アーキテクチャーは、使用するコンポーネントが少ないため、保守が容易です。
  • 手間のかからないデバッグ:モノリシック・アーキテクチャーでは、テストとデバッグのオペレーションが大幅に軽減されます。これらのエンド・ツー・エンドのテスト・オペレーションは、中央ロギング・システムから実行できます。
  • セキュリティーの強化:モノリシック・アーキテクチャーはクローズド・システムであるため、データ処理アクティビティーは完全に封じ込められ、サイバー脅威からの保護が強化されます。

モノリシック・アーキテクチャーの欠点

モノリシック・アーキテクチャーを使用すると、強みに見えること(その堅牢性)が弱みになることがわかりました。

  • 新しいテクノロジーに対する耐性:通常、モノリシック・アプリケーションは緊密に結合されているため、新しいテクノロジーをそれらに統合することが困難な場合があります。実際には、通常何が起こるかは、新しい追加を受け入れるためにモノリシック・アプリケーションを完全に再構築する必要があります。
  • 拡張性の低下:モノリシック・アーキテクチャーが直面する最大の課題は拡張性です。必要な拡張の量が比較的小規模な場合でも(単一機能の調整など)、システムを実質的に解体し、新しい変更を反映できるように再構築する必要がある場合があります。これには時間と労力がかかる可能性があります。
交通量の多い高速道路の空撮

クラウドで夢を広げる


Thinkニュースレターでは毎週、AI時代のマルチクラウド設定の最適化に関する専門家のガイダンスをご覧いただけます。

マイクロサービスとは

マイクロサービス・アーキテクチャーは、1つのアプリケーションが多数の疎結合された小さなコンポーネントまたはサービスで構成されるクラウド・ネイティブのアーキテクチャー・スタイルです。マイクロサービス・アプリケーションには独自のテクノロジー・スタック(特定のジョブを実行するために連携するテクノロジーの集合)があります。

マイクロサービスの主なビジネス上のメリットの1つは、アプリケーション全体に影響を与えることなく、システムを簡単に更新してアプリケーションの新しい部分を反映できることです。これは、時間と労力の両方の大幅な節約につながります。

マイクロサービス・アーキテクチャーに近い代替手段はイベント駆動型アーキテクチャー(EDA)であり、これはマイクロサービスと併用されることもあります。EDAでは、状態の変化はイベントとして表現され、システム内でスケジュールされます。EDAは、疎結合とリアルタイム処理を提供するため、魅力的な選択肢です。

マイクロサービス・アーキテクチャーの利点

マイクロサービスは、絶え間ない成長に向けて準備されており、技術的な変化を受け入れています。それらが提供する主なメリットは次のとおりです。

  • テープ上の拡張性:マイクロサービスは、モノリシック・アーキテクチャーと比較して拡張性が大幅に向上します。個々のサービスはモジュールに分解されるため、上方への拡張の指示を複数のサービスに同時に送信できます。また、マイクロサービスは大規模なアプリケーションを処理することに適しています。
  • オペレーション:マイクロサービス・アーキテクチャーにより、各サービスが独自のオペレーション・セルに分割されます。独立したオペレーションを可能にすることで、あるサービスのワークフローが別のサービスのワークフローに侵入する危険がなくなります。

マイクロサービス・アーキテクチャーの欠点

マイクロサービスには数多くの利点がありますが、全体的な複雑さにより、使用により引き起こされるいくつかの問題があります。

  • 複雑なテスト:マイクロサービスでは、アプリケーションのさまざまな部分が完全にテストされるまで、デバッグ操作を開始することさえできません。これには、依存関係、キャッシュ・アクティビティー、データ・アクセスのチェックが含まれます。すべてが機能する必要があり、すべてが連携して機能しなければなりません。
  • セキュリティーの問題:マイクロサービス・システム内のさまざまなプロセス間で行われる通信には、API gatewayが使用されます。これにより、認証やその他のクリティカルなプロセスに関して、セキュリティー上の露出が生じる可能性があります。
  • レイテンシーの増加:マイクロサービスはアプリケーションのスケールアップに特に優れていますが、余分な遅延とレイテンシーが発生するという代償を払う必要があります。アップスケーリングのあらゆるニュアンスがデータの複雑さと量を増大させ、処理作業が遅くなる可能性があります。

モノリシック・アーキテクチャーとマイクロサービス・アーキテクチャーの比較

マイクロサービスの出現により、ソフトウェア開発は、新興のマイクロサービス・アーキテクチャーと、ソフトウェア・アーキテクチャーに対する従来のモノリシックなアプローチの間の2つの競争になりました。

こうした競争を一目見れば、マイクロサービスは後から開発されたため、優れたアーキテクチャーであるとわかるかもしれません。しかし、その仮定は近視眼的であることが判明するだろう。モノリシック・アーキテクチャー・モデルのシンプルさからメリットを受けるコンピューティング状況はまだ多数あります。

さらに、どちらのソフトウェア・アーキテクチャーにも長所と短所があるため、組織はどちらのシステムを採用する前に、両方のタイプを徹底的に検討し、予想されるアプリケーション開発ニーズを検討することをおすすめします。

直接の比較領域に関して言えば、モノリシック・アーキテクチャーとマイクロサービスは、多くの重要な点で異なります。

  • 構造:モノリシック・アプリケーションは単一のユニットとして構築されますが、マイクロサービス・アーキテクチャーは、より小規模で独立して動作するデプロイ可能なサービスであるマイクロサービスの集合という、異なるアプローチを反映しています。
  • 創造:モノリシック・システムは、マイクロサービス・アーキテクチャーに基づくシステムよりも構築が容易です。これは、より基本的な全体設計を備えているためです。マイクロサービス・アーキテクチャーでは、計画と構築に配慮した設計を使用する必要があります。
  • 複雑さ:システムの複雑さが増すほど、システムの複雑さが増すにつれて、将来の他の主要な機能や新機能の追加に対応する動的なプログラミング基盤を提供するマイクロサービス・アーキテクチャー・モデルにも適しています。
  • 拡張性:マイクロサービス・アーキテクチャーは、明確に定義された個別のサービスをベースとしており、疎結合を備えたモジュール形式に容易に分類でき、APIを介して相互に通信できます。モノリシック・アーキテクチャーは、高密度で構成されたコア構造と密結合されたソフトウェアのおかげで、適応性が低くなります。
  • デバッグ:デバッグのプロセス(またはコーディングの問題を検知するソフトウェアを使用すること)は、責任あるオペレーションの重要な部分です。マイクロサービスが明確な優位性を持っている分野だと考察する人もいるかもしれませんが、まったく逆でした。デバッグは、より単純なコンテキストでよりうまく機能します。これはまさにモノリシック・アーキテクチャーが提供するものです。
  • 市場投入までの時間:市場投入までの時間は、商取引の世界における重要な指標であり、商品がどれだけの速さで製造され、流通チャネルに投入されるかを測定します。モノリシック・アプリケーションは1つのコード・ベースのみを使用するため、開発者は複数のサービスのソフトウェアを組み込む必要がなくなり、市場投入までの時間が短縮されます。
  • ビジネス機能:どちらのアーキテクチャーも、組織が最初に使用し始めた時点で十分な効果を証明します。しかし、ビジネスが成長しているように見え、それらの企業がより大規模なオペレーションを必要とするエンタープライズ・ニーズを開発する場合に、課題が発生します。このようにして、モノリシック・アーキテクチャーよりも多くの運用を拡張する方法を提供することで、マイクロサービスの価値が確立されます。

モノリシック・アーキテクチャーのユースケース

アーキテクチャー・スタイルを使用するタイミングを知ることは、必要な用途に基づいて最適なシステムを理解することも不可欠です。モノリシック・システムの最適な使用法は次のとおりです。

  • スタートアップ企業:スタートアップ企業は、ビジネスの動きを迅速に進める必要がありますが、貴重なスタートアップ資金を節約することも必要です。こうした理由から、モノリシック・アーキテクチャー・モデルは新規企業に最適です。モノリシック・システムは学習が簡単で素早く安価に使用できますが、マイクロサービス・アーキテクチャーへの適応にはコストと時間がかかる可能性があります。
  • 基本プロジェクト:モノリシック・アーキテクチャーは、対象のアプリまたはプロトタイプが本質的に単純であることが条件であれば、アプリケーションやプロトタイプの開発を行うのに最適です。これは、単一のコード・ベースを簡単に使用できるためです。このソフトウェアは、さまざまなソースからのデータを統合することなく完全に開発できるため、使いやすくなります。

マイクロサービス・アーキテクチャーのユースケース

マイクロサービスは、最も複雑なアプリケーションを含む多くのプロジェクトに適しています。

  • 電子商取引:電子商取引は比較的短期間で驚くほど大きな進歩を遂げ、実店舗での販売業務に関連する莫大なオペレーション・コストから解放された無数の小売業者のストラテジーを大幅に書き換えました。2023年のeコマース売上市場は、アマゾン(AWS)のような遍在的で市場に敏感な小売業者によって牽引され、5兆8000億米ドルという目もくらむような規模に上昇しました。1
  • エンターテインメント・プラットフォーム:国際的なエンターテインメント・プラットフォームを運用する場合、軽量ワークロードと重いワークロードの両方に耐えられる必要があります。2009年、ストリーミング・ビデオ大手のNetflixは、システムをモノリシック・アーキテクチャーからクラウド・ベースのマイクロサービス・アーキテクチャーに移行しました。Netflixのバックエンドには現在、Apache、Cassandra、Chukka、Gluster、Hadoop、Hive、JavaTM、MySQLのアプリケーションが含まれており、負荷分散も十分にサポートされています。
  • 専門家チーム:前述したように、マイクロサービスはモノリシック・アーキテクチャーほど使いやすいものではありません。確立されたスキル・セットを仕事にもたらすことができる実務家が必要です。さらに、マイクロサービス・アーキテクチャーでは、オペレーション全体が複雑であるため、通常、複数の技術者のサポートが必要になります。そのような理由から、マイクロサービス・アーキテクチャーやマイクロサービス・アプリケーション開発に取り組むには、十分な人材が配置された専門家チームが必要です。
関連ソリューション
IBMのエンタープライズ向けJavaアプリケーション・サービス

Javaアプリケーションを開発および配信するためのフルマネージドのシングルテナント・サービス。

Javaアプリの詳細はこちら
DevOpsソリューション

DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。

DevOpsソリューションの詳細はこちら
エンタープライズ・アプリケーション開発サービス

クラウド・アプリケーション開発は、一度構築すれば、迅速に反復し、どこにでもデプロイできます。

アプリケーション開発サービス
次のステップ

IBM Cloudアプリケーション開発コンサルティング・サービスは、クラウド戦略を合理化するための専門家のガイダンスと革新的なソリューションを提供します。IBMのクラウドおよび開発のエキスパートと提携して、アプリケーションをモダナイズ、拡張、高速化し、ビジネスに変革をもたらします。

アプリケーション開発サービスの詳細はこちら IBM Cloudを無料で構築開始