サービスメッシュとは

サービスメッシュとは、アプリケーションのデータ共有方法を管理するためにアプリに組み込まれた専用インフラレイヤーを指す言葉です。

サービスメッシュアーキテクチャでは、サービス同士をペアリングし、クラウド内やクラウドエコシステム全体(クラウドコンテナKubernetesポッドを含む)の機能、トラフィック、タスクを管理するプロキシを作成します。

サービスメッシュアーキテクチャを導入すると、可視性、観測性、トレーサビリティ、セキュリティなどの重要な領域で実践的なメリットが得られます。これらの要素は、負荷分散やセキュリティなども含め、通信レイヤー全体の通信と全体的なパフォーマンスを最適化するうえで役立ちます。サービスメッシュをアプリケーションレイヤーではなくプラットフォームレイヤーにデプロイすると、アプリやサービスを専用のインフラレイヤーに直接接続できるようになります。

組織が進化してクラウドネイティブアプリケーションやモジュール性の高いクラウドファーストフレームワークを活用するようになると、サービスメッシュのメリットが大きくなってきます。ネットワークサービスを調整して重要な機能を組み込むことがミッションクリティカルになるからです。サービスメッシュアーキテクチャはトラフィックをルーティングし、多種多様なイベントを適切なタイミングと方法で確実に実行します。また、開発者やITチームにとって複雑になりがちなプロセスを管理しやすくします。

クラウドとクラウドネイティブの比較: クラウドネイティブ化というパラダイムシフトの考察

クラウドネイティブがアプリケーションのあり方をどう変えつつあるかを解説しています。

レポートを入手

サービスメッシュアーキテクチャの仕組み

Webサービスアーキテクチャとは違い、サービスメッシュはAPIを利用せずにコンポーネントを接続します。実行環境に新しい機能が追加されることもありません。代わりに、この分散ミドルウェアはアプリケーションロジックから通信をすべて分離し、コントロールプレーンとサイドカー(インフラレイヤー内のプロキシ)を使用してクラウド環境を管理します

サービスメッシュアーキテクチャ

サイドカープロキシは、クラウド環境内の重要な機能を抽象化するアプリケーション設計ツールです。サイドカーは、各サービス内で独立して動作するのではなく、様々なサービスと並行して動作します。サービスメッシュの目的やサイドカーが動作する環境に応じて、これには監視機能、通信機能、ポリシー適用、セキュリティ機能が含まれます。

サービスメッシュのサイドカーは、オートバイに取り付けられたサイドカーのように、機能を追加または強化します。アプリケーションコンテナや仮想マシン、Kubernetesポッドにサイドカーを接続すると、各インスタンスが調整され、目的のサービスとの連携が可能になります。

ネットワークトラフィックは、サイドカーを通過するとサービスメッシュに組み込まれたルールと条件に従うようになります。

クラウドのコンポーネントに接続されるサイドカーは、どのようなタスクやプロセスでも抽象化できます。つまり、基盤となるアプリケーションやサービスに変更を加えなくても、タスクごとに異なるサイドカーを使用できるのです。

サイドカーはデータプレーン内に存在します。データプレーンとは、ユーザートラフィックを伝送するネットワークのセグメントです。プロトコルを介してクライアント間でデータと会話を転送します。様々なベンダーやオープンソースコミュニティが、特定のタスク向けに設計された多様なサービスメッシュツールを提供しています。ほとんどのソリューションは、GUIを備えたコントロールパネルで環境を管理できるようになっています。

サービスメッシュアーキテクチャの柔軟性と拡張性により、最終的にクラウド関連の複雑なタスクやプロセスを処理するためのフレームワークが大幅に堅牢化されます。

サービスメッシュによるパフォーマンスの最適化

企業がコンテナやサービスを追加していくにつれ、複雑さが増し、フレームワークの管理に伴うオーバーヘッドが大きくなります。その結果、アプリケーションのパフォーマンス、セキュリティのフレームワークからDevOpsチームに至るまで、すべてに悪影響が及ぶおそれがあります。一般的なマイクロサービスアーキテクチャでは、問題の診断や修正が非常に難しくなる場合があります。

一方、企業がコンポーネントを追加・削除しても、コンテナの外部で実行されるサービスメッシュを使用していれば環境に対する制御を維持できます。簡単に言うと、マイクロサービスアーキテクチャの上に要素や機能が追加されるようなイメージです。サービスメッシュは、あらゆるサービスやコンテナにおけるアクション、リアクション、インタラクションをすべてキャプチャします。そのため、クラウド内の通信に関する詳細な情報とメトリックを表示できます。

サービスメッシュの主な機能

サービスメッシュは、信頼性、観測性、セキュリティに関連する多くの機能を実行できます。非常に柔軟なフレームワークであり、企業の抱える以下のような幅広いニーズに対応できます。

  • 待機時間を考慮した負荷分散の提供
  • 動的ルーティングルールの処理
  • 強力なネットワーク認証の提供
  • 分散トレースの提供
  • 通信とデータの自動暗号化
  • サービスポリシーの配布
  • 様々なコンポーネントの正常性と機能を評価するためのテレメトリデータの集約
  • 監視、視覚化、セキュリティをさらに強化するサードパーティ製ツールへの対応

サービスメッシュの真価

サービスメッシュがその真価を発揮するのは、企業が多くのマイクロサービスを備えたマルチクラウドフレームワークを利用する大規模なアプリケーションを使用している場合です。継続的統合/継続的デプロイ(CI/CD)パイプラインが整っているDevOpsチームの場合、特に大きなメリットを得られます。ユーザーや従業員に最高のエクスペリエンスを提供できるよう開発を加速・改善しようと考えるのであれば、プロセスの自動化は避けて通れません。

サービスメッシュを導入すると、Webサイト、アプリ、各種ソフトウェア/サービスへの新機能追加など、価値を創出する業務に開発者が専念できるようになります。AI機能の備わったローコードまたはノーコード機能を提供できる場合もあります。サービスやアプリをクラウドで実行すると、多くの場合、ダウンタイムが短くなり、パフォーマンスが向上します

また、ITに関する様々な問題をより迅速に特定・診断したり、より高度に自動化された、回復力のあるセキュアなクラウドフレームワークを構築したりすることもできます。サービスメッシュに含まれるサーキットブレーカーもこれに役立ちます。サーキットブレーカーは、HTTPリクエストが望ましくない一定のしきい値を超えるなど、特定の条件が発生したときにマイクロサービスを保護します。

サービスメッシュフレームワーク導入の必要性

多くのテクノロジーと同様、サービスメッシュアーキテクチャにもメリットと課題の両方があります。たしかにクラウド管理、DevOps、セキュリティの面での簡素化や改善は見込めますが、そのためには新しい知識やスキルが必要になります。さらに、新しいプロセスやワークフローを必要とする根本的な変更も発生します。同じように大切なのが、サービスメッシュアーキテクチャはネットワーク管理の問題を解消するわけではないという事実です。それでも、複雑さを抽象化・一元化してはくれます。

結果として、サービスメッシュの導入が急速に拡大しています。Cloud Native Computing Foundation(CNCF)が実施した2020年のアンケート調査から、回答者の27%が本番環境でサービスメッシュを使用していることがわかりました。これは、前年比で50%の増加です。サービスメッシュアーキテクチャは、エンタープライズクラウドネットワークのあらゆる課題を解決する万能薬ではありませんが、クラウドネイティブやクラウドファーストのフレームワークを導入する組織にとってはますます価値のあるツールになってきています。

OutSystemsのローコード開発プラットフォームがクラウドやクラウドネイティブへの移行にどう役立つかをご確認ください。OutSystemsの「クラウドネイティブ開発ガイド」をご覧ください。