サービスメッシュとは何ですか?

共同執筆者

Mesh Flinders

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

サービス・メッシュの定義

サービス・メッシュは、マイクロサービス間の接続を管理し、アプリケーションが機能できるようにする最新のアプリケーション・アーキテクチャーにおけるソフトウェア・レイヤーです。サービス・メッシュは、サービス間通信、サービス検出、ロード・バランシング認証など、多くの重要な機能を提供します。

現代のビジネス環境下でアプリ開発者が直面する最大の課題の1つは、拡張性です。アプリケーションのユーザー数が増加するにつれて、DevOps(オートメーションによりアプリの配信を加速するソフトウェア開発手法)のエンジニアがサービスのパフォーマンスを監視することは困難になります。サービス・メッシュは、ロギング、トレース、トラフィック制御などの重要なサービスの監視と管理に役立つ主要な機能を提供します。

アプリケーションがデジタル・トランスフォーメーションの基盤となるにつれて、サービス・メッシュの重要性が高まっています。今日これらは、クラウドネイティブ・アプリケーション、マイクロサービス、コンテナなど、利用可能な最も高度なアプリケーション・テクノロジーの一部の主要な要素となっています。

Forbesによると、2022年には組織の70%がすでにサービス・メッシュを実行し、19%がサービス・メッシュを評価していました1

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

マイクロサービスとは

マイクロサービスは、マイクロサービス・アーキテクチャーとも呼ばれ、アプリケーションが多数の独立した小規模な構成要素またはサービスから構築されるクラウドネイティブなアーキテクチャー・アプローチです。このアプローチにより、開発者はアプリケーションの他の部分に影響を与えることなく、より簡単にコードを更新したり、機能や特徴を追加・削除したりでき、高い拡張性が実現します。

サービス・メッシュはマイクロサービス・アーキテクチャーにとって必要不可欠です。これは、マイクロサービス・アプリケーション内のすべてのサービスが接続して情報を交換できる、高度に構成可能なインフラストラクチャー・レイヤーを提供します。サービス・メッシュに加え、マイクロサービス・アーキテクチャーも、コンテナ・テクノロジーとその最も人気のあるプラットフォーム「Kubernetes」とともに使用されます。

アプリケーション開発

さあ、クラウドでエンタープライズ・アプリケーション開発を始めましょう

この動画では、Peter Haumer博士が、IBM Z Open Editor、IBM Wazi、Zoweなどのさまざまなコンポーネントとプラクティスを実演しながら、ハイブリッドクラウドでの最新エンタープライズ・アプリケーション開発について説明します。

コンテナとKubernetesとは

コンテナとして知られるテクノロジーは、最も人気のあるコンテナ・オーケストレーション・プラットフォームの1つであるKubernetesとともに、開発者が複雑なマイクロサービス・ベースのアプリケーションを管理できるため、サービス・メッシュ機能に不可欠な要素となっています。

コンテナとは、アプリケーション・コードをライブラリーや依存関係とともにパッケージ化した実行可能なソフトウェアの単位であり、あらゆるコンピューティング環境でもコードを実行できるようにします。現代のアプリケーション・アーキテクチャーにおけるコンテナの普及に伴い、大規模なコンテナ・グループの管理は急速に課題となりました。

そこで登場したのが、K8sまたはKubeとも呼ばれるコンテナ・オーケストレーション・プラットフォームのKubernetesであり、今日の市場で利用可能な最も人気のあるオーケストレーション・ソリューションの1つとなっています。Kubernetesクラスター(物理マシンと仮想マシン(VM)を表すノードの集合体)は、コントロール・プレーン上で管理されます。

サービス・メッシュ機能のもう1つの重要な側面は、特定のクラスター内のサービスへのアクセス管理方法です。このプロセスは、Ingressと呼ばれます。

サービス・メッシュの仕組み

今日の最も一般的なアプリケーションでは、多くのワークロードやコンピューティング・タスクとプロセスを一度にデプロイすることが求められます。マイクロサービス・アーキテクチャーにより、開発者は各アプリケーションを管理しやすい小さな独立したサービスの集合体として構築できます。

しかし、アプリケーション・コードが機能するためには、マイクロサービスが迅速かつ正確に通信する必要があり、ここでサービス・メッシュ・アーキテクチャーが重要となります。サービス・メッシュは、開発者がアプリケーション内のサービス間通信をより細かく制御できるように設計されています。

最も基本的なレベルでは、サービス・メッシュはプロキシー・ベース通信として知られる種類の通信に依存し、マイクロサービス・ベースのアプリケーションの管理性と制御を強化します。プロキシー・ベースの通信は、マイクロサービスと組織のネットワーク間の仲介役として機能するプロキシー・サーバー(プロキシーとも呼ばれる)を備えており、プロキシーを経由してサービスとの間でトラフィックがルーティングされるようになっています。ネットワーク・プロキシー通信として知られるこの機能は、多くのアプリケーションの管理性、オブザーバビリティー、セキュリティーを維持するために重要です。

サービス・メッシュ・アーキテクチャーは、プロキシーに加えて、それを機能させる2つの主要な構成要素、すなわちコントロール・プレーンとデータ・プレーンに依存しています。

コントロール・プレーン

コントロール・プレーンは、ユーザーとデバイス間のデータのルーティング方法を制御するコンピューター・ネットワークの一部です(ノードともよばれます)。コントロール・プレーンは、データがネットワークを経由する最適なルートを決定するアルゴリズムによって情報提供されるルーティング・ルールまたはプロトコルに従います。

サービス・メッシュでは、コントロール・プレーンにはサイドカー・プロキシーと呼ばれる特別に設計されたプロキシーが含まれ、監視やセキュリティーなど特定の機能を抽象化することで効率化を図っています。サービスがサービス・メッシュ内の他のサービスと通信する必要があるとき、サイドカー・プロキシーはリクエストをインターセプトし、そのリクエストが移動するための安全で暗号化されたチャネルを作成します。

データ・プレーン

データ・プレーンはフォワーディング(転送)・プレーンとも呼ばれ、ルーターやスイッチのようなデバイスを介してデータをネットワークに送ることができます。データ・プレーンはサイドカー・プロキシーを使用して、サービス間のメッセージングと、サーキット・ブレーキングやリクエストの再試行などの重要な機能を管理します。データ・プレーンはまた、ロード・バランシング、サービス・ディスカバリー、ルーティングといった主要な機能が実行される場でもあります。

サービスメッシュとAPI ゲートウェイの比較

データ・プレーンとコントロール・プレーンに加えて、アプリケーション・プロトコル・インターフェース(API)ゲートウェイは、サービス・メッシュ機能と密接に関連するマイクロサービス・アーキテクチャーの重要な要素です。

APIは、ソフトウェア・アプリケーションが通信してデータを交換できるようにするプロトコルです。APIゲートウェイは、APIクライアント(開発者のアプリケーション構築に役立つ一般的なREST APIなど)とサーバー上に配置されたバックエンド・サービスとの間の仲介として機能するツールです。

APIゲートウェイとサービス・メッシュは、どちらもより効率的なアプリケーション開発を可能にするという点で似ています。ただし、APIゲートウェイがAPIへのアクセスを制御する一方で、サービス・メッシュはアプリケーション内のマイクロサービス同士を接続します。サービス・メッシュとAPIゲートウェイは、アプリケーション開発エコシステムの柔軟性とオブザーバビリティーを高めるために一緒にデプロイされることが多いです。

サービス・メッシュのメリット

サービス・メッシュとそれが可能にするマイクロサービス・アーキテクチャーは、組織に多くの重要なメリットをもたらします。ここでは、最も一般的なものをいくつか紹介します。

可観測性

サービス・メッシュは、マイクロサービス・アーキテクチャー全体に対して、組み込み型のオブザーバビリティーを提供し、複雑なシステムの状態をより深く理解します。これにより、開発者は、アプリがどのように機能しているかを理解するために重要な依存関係レイテンシー、エラー率などの重要なメトリクスを監視できるようになります。

オブザーバビリティーは、開発者にマイクロサービス・エコシステムの内部動作を完全かつ遮るものなく表示できるため、トラブルシューティング、パフォーマンスの最適化、テレメトリー(システム動作の記録)、およびデバッグにも役立ちます。

コントロール

アプリが適切に機能するには、開発者とアプリケーション管理者は、アプリ内でサービスが相互に通信する方法を制御する必要があります。サービス・メッシュは、マイクロサービス・アーキテクチャーをデプロイする組織のガバナンス機能(例えば、規制の厳しい分野でセキュリティーとコンプライアンス要件をチームが実行する方法など)を強化します。

サービス・メッシュはまた、分散アプリケーション(複数の接続されたコンピューター上で一度に実行されるアプリケーション)によるサービス間の通信リクエストに特化したインフラストラクチャー・レイヤーを提供します。

セキュリティー

サービス・メッシュは、相互トランスポート層セキュリティー(mTLS)の暗号化や認証などの機能を通じて、サービス間の安全な通信を確立するのに役立ちます。mTLS認証は、アプリケーション内のトラフィックがクライアントとサーバー間の両方向で安全かつ信頼されていることを保証するのに役立ちます。

mTLSはまた、サービス間通信で送信される情報を暗号化することで、データの機密性も確保します。これにより、管理者は特定のエンドポイントへのアクセスなどの承認ポリシーを適用できます。このプロセスはエンドポイント・セキュリティーと呼ばれます。

サービスの発見

サービス・メッシュには自動サービス・ディスカバリーという機能があり、サービス・エンドポイント(特定のマイクロサービスに到達できるサービス・メッシュ内の場所)を管理するワークロードを軽減するのに役立ちます。サービス・レジストリーを使用すると、サービスがどこにあるかに関係なく、サービスが相互に自動検索して通信できるため、開発者は新しいサービスを迅速かつ簡単にデプロイできます。

ロード・バランシング

アプリのパフォーマンスを最適化するために複数のサーバー間でネットワーク・トラフィックを分散するロード・バランシングは、サービス・メッシュの主要な機能です。サービス・メッシュはアルゴリズムを使用して、ノード間のワークロードのバランスをとり、コンピューティングのリソースを最適化し、一般にアプリケーションの高可用性を確保するのに役立ちます。

トラフィック管理とトラフィック分割

サービス・メッシュは、高度なトラフィック管理およびトラフィック分割機能を提供し、ネットワーク上の情報とリソースのフローを最適化します。トラフィック管理とトラフィック分割はどちらもネットワーク上の情報フローの制御に使用されますが、注目に値する重要な違いが1つあります。トラフィック管理は、情報トラフィック・フローを改善するためのインフラストラクチャーに対する長期的かつ体系的な変更に重点を置いていますが、トラフィック分割は、バックエンドまたはサービス・バージョン間でのウェイトに基づくトラフィックの分配を伴います。

サービス・メッシュは、ルーティングとトラフィックの動作をきめ細かく、高度に具体的に制御し、アプリケーションが新しいソフトウェア・バージョンに更新されたときにスムーズな移行を実現します。例えば、広く普及しているカナリア・デプロイメントでは、アプリの新バージョンは全員に提供される前に、機能やパフォーマンスをテストするために少人数のユーザーにのみリリースされます。

適切なサービス・メッシュ・ソリューションの選択

サービス・メッシュ・プロバイダーの世界市場はすでに好調で、急速に成長しています。最近の調査によると、この市場規模は2023年には2.2億米ドルと評価され、2032年までには50.5億米ドルにまで成長し、年平均成長率(CAGR)は41.3%に到達すると予測されています2

業界がこのような急速なペースで成長している場合、適切なサービス・メッシュ・ソリューションを選択することは困難かもしれません。考慮すべき主な要素には、コスト、導入の容易さ、既存のテクノロジーとの互換性、セキュリティー、パフォーマンス、サポートなどがあります。

ここでは、最も人気のある5つのサービス・メッシュ・ソリューションと、その特徴を簡単にご紹介します。

Istio

最も人気のあるサービス・メッシュはIstioです。その豊富な機能は適応性が高く、企業レベルのワークロードに適しています。Istioは、高度なトラフィック管理機能、セキュリティー機能、拡張性で知られており、コントリビューターの大規模なエコシステムによって強化されています。

その他のサービス・メッシュ製品と同様に、Istioはオープンソース・プロジェクトであり、オープン・コラボレーションによって開発・保守され、誰でも利用できるようになっています。Kubernetesやその他の多くのサービス・メッシュ関連テクノロジーと連携して動作します。

Linkerd

Istioよりも軽量で簡単なLinkerdは、低遅延を維持しながらパフォーマンスを向上させるシンプルなサービス・メッシュ・ソリューションです。Linkerdは、ロード・バランシング、サービス・ディスカバリー、暗号化など、企業がサービス・メッシュに期待する基本的な機能をすべて備えています。Istioと同様、Linkerdもオープンソースです。

NGINX Service Mesh

NGINXは、他の多くのサービス・メッシュと比べて包括的なものです。Webサーバーとリバース・プロキシーの両方として機能するため、他のサービス・メッシュよりも幅広いプロトコルを提供できます。NGINXは最高のパフォーマンスと安定性を目指して設計され、多くのトラフィックの多いWebサイトで使用されています。Linkerd、Istio、その他のサービス・メッシュ・ソリューションと同様、オープンソースです。

Consul

人気のクラウドベースのインフラストラクチャー会社であるHashiCorpが作成したConsulは、他の人気のあるサービス・メッシュと同じ機能を多く提供するマルチクラウド・サービス・メッシュです。Consulは、最も柔軟なサービス・メッシュ・ソリューションの1つであり、Windows、Linux、macOS、FreeBSD、Solarisなど、さまざまなオペレーティング・システム(OS)に対応します。Consulもオープンソースで、監視機能を強化する人気のプラグイン「Prometheus」で最もよく知られています。

AWSアプリ・メッシュ

Amazon Web Services(AWS)のクラウド・デプロイメントでの使用に特化して設計されたAWSアプリ・メッシュは、強化されたセキュリティー、トラフィック管理、監視機能など、Linkerd、 ISTIOなどと同様の機能を多く備えたサービス・メッシュです。ただし、AWSは柔軟性に欠けており、すでにAWSアーキテクチャーに統合されている組織にのみ適していると考えられています。

関連ソリューション
IBMのエンタープライズ向けJavaアプリケーション・サービス

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

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

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

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

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

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

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

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

1Service Mesh As The Bridge To App Modernization、Forbes、2023年3月

2Service Mesh Market Report、Business Research Insights、2024年10月