モノリシックアーキテクチャーとは、OSにおいて分割されていない1つのモジュールで構成されたアプリケーションの構造です。対して、マイクロサービスアーキテクチャーは、複数の独立した機能を組み合わせて1つの処理を実現するアプリケーションの構造です。この2つを比較した際の長所と短所を紹介します。

今日の企業は、様々なSaaSアプリケーションを活用しています。SaaS管理サービスを提供する Blissfullyの2020年SaaSトレンドレポートによると、企業1社あたりの平均SaaSアプリケーション導入数は137個となっています。 これらのアプリケーションは、数テラバイトのデータを生成します。 多くの場合、複数のプラットフォームのデータは関連付けられています。例えば、eコマースサイトでの購入に使用されるクレジットカードの住所は、配送先住所としても使用されます。また、eコマースサイトのトランザクションは、企業の分析プラットフォームで追跡できます。

テクノロジースタックの展開について、企業には主に2つの選択肢があります。1つは、多くの機能を網羅した単一のプラットフォームを導入するモノリシックカーネルと呼ばれる方法です。もう1つは、マイクロシステムを使用して様々なベンダーのサービスを統合するベストオブブリード手法です。 

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

モノリシックアーキテクチャーとは、OSにおいて分割されていない1つのモジュールで構成されたアプリケーションの構造です。モノリシックアプリケーションは、複数の関連タスクを処理するように設計されています。 これらは通常、密接に関連する複数の機能を伴う複雑なアプリケーションです。

例えば、モノリシックのeコマースSaaSアプリケーションについて考えてみましょう。 これには、Webサーバー、ロードバランサー、商品画像を提供するカタログサービス、注文システム、支払い機能、および配送コンポーネントなどが含まれます。

関連機能が多岐にわたるので、モノリシックツールは大規模なコードベースを有する傾向にあります。 1つの機能を微調整する場合でも、プラットフォーム全体のコンパイルとテストが必要になる場合があります。これは、今日の開発者が重視するアジャイル型アプローチとは相反しています。

マイクロサービスとは?

モノリシックアプローチとは対照的に、マイクロサービスアーキテクチャーは、小規模なアプリケーションを疎結合サービスとして個別に展開し、アプリケーション統合によって関連付ける手法です。 マイクロサービスアプリケーションを使用すると、ビジネスロジックで、サービスとしてのソフトウェア、オンプレミスデータベース、SaaSアプリケーションでは対応できない処理を行う自社開発アプリケーションなど、複数のプラットフォームを統合することができます。

ソフトウェアエンジニアリングの観点からみると、マイクロサービスはモノリシックに比べて開発しやすいと言えます。 アプリケーションの規模が小さいため、開発者は継続的インテグレーションと継続的デリバリー(CI/CD)によって更新や改善を容易に行うことができます。 また、マイクロサービスは任意のプログラミング言語で記述できるだけでなく、 APIを使用して他のマイクロサービスと通信することが可能です。

アプリケーションプログラミングインターフェイス(API)は、アプリケーションの機能を開発者に公開するプログラミング呼び出しのセットです。 APIを使用すると、アプリケーション間で認証情報とデータを容易に共有できるため、統合アプリケーションの開発を簡素化できます。

モノリシックとマイクロサービスの比較ガイド

モノリシックアーキテクチャーとマイクロサービスアーキテクチャーは、どちらの方が優れているのでしょうか? その答えは、各組織のニーズによって異なります。 企業は、次の基準を考慮する必要があります。

  • 実装しやすさ — モノリシックアーキテクチャーの場合、単一のベンダーから提供されたソフトウェアを使用するので、実装しやすいように思えるかもしれません。 しかし、必ずしもそうではありません。 モノリシックシステムは複雑な構造を持つことが多く、複数のプラットフォームとして展開することが難しい場合があります。 モノリシックシステムのメリットの1つは、あらゆるサポートを一元的に提供できることですが、ベンダーのサポート体制が整っていることが条件となります。
  • ベンダーロックイン — 一般的なモノリシックシステムは、関連機能をすべて網羅しようとする傾向にあります。 例えば、モノリシック型のWebホスティングプラットフォームには、サーバー側でHTTP要求を処理するWebサーバーだけでなく、ファイアウォール、負荷分散、コンテンツ配信ネットワークも含まれます。 モノリシックシステムはあらゆる機能やサービスをベンダー独自の技術に依存しているため、一般的には他のシステムとの互換性がありません。 こうしたベンダーロックインは、次の項目にも影響を与えます。
  • データの管理と所有権 — モノリシックシステムの場合、自社システムからのデータを統合することは容易ではありません。 通常、データはモノリシックシステム内でのみ使用できます。 例えば、データ統合、ETLデータパイプライン、データウェアハウス、分析ソフトウェアを網羅するモノリシック分析システムは、自社データにアクセスして他のシステムと統合したり、異なるソフトウェアを使用して分析を実行するためのツールを提供できない場合があるというデメリットがあります。
  • 投資収益率(ROI) — アプリケーションの導入を検討するときには、ROIの向上に役立つかどうかを見極める必要があります。 独自のアプリケーションを開発する場合であれ、SaaSソリューションを展開する場合であれ、ソフトウェアエンジニアリング部門はマイクロサービスを迅速に構築して展開することで、(アプリケーションに応じて社内外の)顧客にアプリケーションの利用権限を付与できます。 サービスの展開を通じて市場投入までの時間を短縮し、ROIを確実に向上させることが可能になります。

モノリシックからマイクロサービスへの移行が加速

今日のビジネス環境では、モノリシックシステムからマイクロサービスへの移行が加速しているようです。その理由は、企業が必要とする機能をすべて単一プラットフォームに統合し、既存の経営体制に適応させるモノリシックシステムを運営することが困難であるためです。 多くの企業では、個々のニーズに最適なソリューションを導入し、アプリケーション統合によってそれらのソリューションを関連付けることで、全体的なエクスペリエンスの向上を図っています。

アプリケーション統合は、Talendの得意分野でもあります。 Talendのソフトウェアを使用すれば、ポイントツーポイントのSaaS統合を実装し、イベント駆動型アーキテクチャーの一部としてスケーラブルなモジュールAPIを構築できます。Talendによるアプリケーション統合の詳細については、こちらをご覧ください