マイクロサービスを使用する場合、アプリケーションは、システムとして連携して機能するために通信する必要があるさまざまな小規模サービスで構成されます。
多くの場合、マイクロサービスは個々のサービス間で直接通信するため、非効率で障害が発生しやすくなりますが、これこそがサービス メッシュが役立つ分野です。
サービスメッシュとは何ですか?
サービス メッシュという用語は、最初は、アプリケーションの異なるマイクロサービス間のデータ交換を制御する方法を表します。具体的には、マイクロサービス間の通信を可能にするソフトウェアの使用についてです。
- アプリケーションの識別
- 負荷分散
- 認証
- 暗号化
相互接続されたマイクロサービスのメッシュ ネットワークは、プロキシを介して実行される並列接続によって作成されます。この目的のために、ネットワーク化されたマイクロサービス ネットワークが上位レベルのデータ センター ネットワーキング管理システムに統合されます。これにより、アプリケーションの進化中にダウンタイムが発生することなく通信を最適化することが容易になります。実際には、各アプリケーション サービスには、ユーザーのニーズを満たすために他のサービスが必要です。
たとえば、オンライン販売アプリケーションの場合、ユーザーは購入する前に、該当する商品が実際に入手可能かどうかを確認できます。このためには、データベースに関連するサービスと製品の Web ページの間で通信を確立する必要があります。次に、後者はユーザーのオンライン ショッピング カートと通信する必要があります。
さらに、再販業者はアプリケーション上で製品提案サービスを設定し、ユーザーをより適切にガイドできます。この場合、この新しいサービスは、提案を発行するために商品タグのデータベースだけでなく、商品ページと事前に通信する必要がある在庫データベースとも交換する必要があります。実際には再利用可能な製品のセットです。
最新のアプリケーションは通常、特定のビジネス機能を実行することを目的としたサービスのネットワークとしてこのようにセットアップされます。
サービス メッシュはどのように機能し、その利点は何ですか?
サービス メッシュは、アプリケーションの作業環境に他の機能を作成しないことに注意してください。アプリケーションで作成されるサービス メッシュは、エンタープライズ コンピューティング分野では依然としてよく知られた概念であるネットワーク プロキシのグループの形式です。
おそらく、職場のコンピューターを使用して Web ページにアクセスするたびにプロキシを使用していると思います。マイクロサービスのインフラストラクチャ層に基づくプロキシは、マイクロサービス間でリクエストをルーティングするのに役立ちます。したがって、「 サイドカー 」という言葉はサービス メッシュに含まれるプロキシを指します。これは、その実行がサービス内ではなくサービスの隣で実行されるためです。さまざまなサービスの「サイドカー」プロキシがメッシュ ネットワークを確立します。
さらに、サービス メッシュが存在しない場合、開発者はサービス間の通信戦略に従って各マイクロサービスをコーディングする必要があることに気づきます。部門間のコミュニケーション ロジックは各部門に隠されているため、開発者は会社の目標を達成するのに苦労しています。
さらに、コミュニケーション上の問題を診断する際に困難が生じる可能性があります。最後に、サービスのメッシュにより、サービス間の通信の管理に関連するいくつかの問題の解決策を見つけることができます。
サービス メッシュを使用すると、メッシュ ネットワークのアウトソーシング インフラストラクチャで必要なデータと洞察に簡単にアクセスできるため、この通信を自動化できます。これにより、問題や誤動作の特定と排除が容易になります。さらに、企業の IT 部門は安心して、他の付加価値のあるタスクに専念できるようになります。
通信の抽象化により、障害が発生したサービスも自動的にバイパスでき、機能しているアプリケーション部分のデータ交換が損なわれることはありません。アクセスしやすいサービスメッシュシステムのデータは分析も容易なため、アプリケーションの運用改善やパフォーマンス向上が可能になります。
サービス メッシュがどのように機能するかを説明しました。ここで、最高のサービス メッシュ マネージャーをいくつか見てみましょう。

メッシュ
Meshery は、さまざまなサービス メッシュ ソリューションを実行できるメッシュ サービス マネージャーです。 Kubernetes と Docker にデプロイできます。 Mastery は、Linkerd や Istio を含むすべての主要なメッシュ サービス ソリューションのベンチマークを設定するための UI と CLI を提供します。メッシュはクラスター上に直接デプロイすることも、ローカルにデプロイすることもできます。

Amazon アプリメッシュ
AWS App Mesh は、 Amazon の Kubernetes プラットフォーム (EKS) 用のネットワーク メッシュ サービスです。 Envoy サイドカー プロキシを通じてイングレスおよびエグレス トラフィックのアプリケーション レベルの管理を提供し、サーキット ブレーカーを使用して AWS X-Ray を使用した可観測性メトリクスを提供します。 AWS アプリ メッシュは、Amazon EC2 や AWS Fargate などの他のサービスと併用することもできます。

リンカード
Linkerd は 、Rust ベースのカスタム構築プロキシを使用してマイクロサービスを管理するオープンソースのネットワーク メッシュ マネージャーです。可観測性メトリクスを提供するために、Grafana がプリインストールされています。 Linkerd は、他のオープンソース メッシュ マネージャーとは異なり、GUI を提供し、Prometheus をサポートするだけでなく、Traefik、Kong、Gloo などのイングレス コントローラーもサポートします。 Linkerd は、クラスター全体での自動展開アップグレードもサポートしています。

イスティオ
Istio は 、Envoy プロキシを使用してマイクロサービスを管理するオープンソースのサービス メッシュです。 Istio は、ロード バランシング、ポリシー作成、トラフィック ルーティング、タイムアウト、サーキット ブレーク、トラフィック シフティング、再試行などのいくつかの機能を提供します。 Istio は、追加のソフトウェアをインストールすることなく、コンテナーまたはマシン全体にわたる分散トレース機能も提供します。

くま
Kuma は、Kong によって作成されたサービス メッシュで、Envoy プロキシを通じて既存のサービスの動作を拡張するために使用されます。 Kuma はさまざまなマイクロサービスをサポートし、ネットワークのセキュリティと監視を強化します。これには、ルーティング、mTLS、トラフィック制御、およびさまざまなセキュリティ機能用の多数のポリシーが事前にバンドルされています。 Kuma を使用すると、単一のコントロール プレーンとデータ プレーンを通じて、さまざまな分離メッシュを簡単に制御できます。
Nginxメッシュ
Nginx は 、Nginx Plus を利用したデータ プレーンを使用してコンテナ間のトラフィックを暗号化する Kubernetes のサービス メッシュです。 Nginx はレート制限とサーキット ブレーカーを使用してサービス間のトラフィックを管理し、サービス メッシュのメトリクスを観察するための Grafana ダッシュボードが付属しています。
領事
HashiCorp の Consul は、組み込みのプロキシ レイヤーを提供し、Envoy サイドカー プロキシもサポートするサービス メッシュです。パスベースのルーティング、トラフィックシフト、負荷分散を提供します。 Consul は HashiCorp Vault と統合されており、mTLS もサポートしています。 Prometheus および Grafana と統合して、可観測性メトリクスを表示できます。
グルーメッシュ
Gloo Mesh は 、Istio メッシュ上に構築されたサービス メッシュであり、ゼロ トラスト セキュリティ モデルを実装できる Envoy プロキシを使用します。 Gloo は、マルチテナンシー Kubernetes、VM、およびその他のマイクロサービスをサポートします。 CI/CD と GitOps の両方に適しているため、デプロイが容易になります。
最後の言葉
サービス メッシュは、異なるマイクロサービス間の通信問題を解決し、さまざまなセキュリティ上の利点を提供します。ただし、市場では何百ものさまざまなメッシュ ソリューションが入手可能であるため、要件に最適で管理が容易なメッシュ サービスを選択することが不可欠になります。