App Mesh は、すべてのサービス向けに一貫した可視性とネットワークトラフィック制御を提供することで、サービスの実行を容易にします。App Mesh は、通信の監視や制御に必要なロジックを、すべてのサービスの隣で実行されるプロキシに分離します。これにより、モニタリングデータの収集方法やトラフィックのルーティング方法を変更するために、チーム間で調整したり、アプリケーションコードを更新したりする必要がなくなります。また、エラーの正確な位置を迅速に特定し、障害が発生したときやコード変更をデプロイする必要があるときに、ネットワークトラフィックを自動的に再ルーティングすることが可能になります。
App Mesh は AWS Fargate、Amazon ECS、Amazon EKS、Amazon EC2、EC2 の Kubernetes で使用できるため、より大きな規模でサービスを実行できるようになります。App Mesh はオープンソースの Envoy プロキシを使用しており、サービスをモニタリングするための幅広い AWS パートナーやオープンソースツールと互換性があります。
オープンソースプロキシ
App Mesh はオープンソースの Envoy プロキシを使用して、サービスのコンテナに出入りするすべてのトラフィックを管理します。App Mesh はこのプロキシを設定し、全サービスのアプリケーション通信を自動的に処理します。Envoy には、App Mesh と連携する、コミュニティで構築された統合の活気のみなぎるエコシステムがあります。
互換性のある AWS サービス:
Amazon CloudWatch* – リソースとアプリケーションを完全に可視化するためのモニタリングおよびロギングサービス。
AWS X-Ray* – アプリケーションのパフォーマンスをエンドツーエンドで表示するための追跡サービス。
互換性のある AWS パートナーおよびオープンソースツール:
Datadog、Alcide、HashiCorp、Sysdig、Signalfx、Spotinst、Tetrate、Neuvector、Weaveworks、Twistlock、Wavefront by VMware、Aqua。
トラフィックルーティング
App Mesh を使用すると、アプリケーション内でコードを要求したり、ロードバランサーを使用したりする代わりに、サービスを互いに直接接続するように設定できます。それぞれのサービスが開始されると、プロキシは App Mesh に接続され、メッシュ内のその他のサービスのロケーションに関する設定データを受け取ります。App Mesh のコントロールを使用すると、アプリケーションコードを変更せずに、サービス間のトラフィックルーティングを動的に更新できます。
クライアント側のトラフィックポリシー
プロキシはメッシュ内のすべてのクライアントからのトラフィックを自動的に負荷分散し、ヘルスチェックやサービス登録に基づいて負荷分散エンドポイントを追加および削除します。これらの機能により、お使いのサービスの新しいバージョンを簡単にデプロイできるようになります。また、アプリケーションの耐障害性を向上するよう調整する手助けとなります。
サービス間認証
相互 TLS (mTLS) は、トランスポート層認証を有効にします。これにより、サービスメッシュ内外で実行しているアプリケーションコンポーネントのサービス間 ID 認証が可能になります。このため、AWS Certificate Manager のプライベート認証局またはお客様が管理する認証局 (CA) からサービスメッシュのワークロードに証明書をプロビジョニングすることで、AWS App Mesh で実行しているアプリケーションにセキュリティ境界を拡張し、サービスに接続しているクライエントのアプリケーションの自動認証を適用できるようになります。
コンテナオーケストレーションのネイティブユーザーエクスペリエンス
App Mesh は、Amazon ECS、Amazon EKS、AWS Fargate、および EC2 で実行される Kubernetes が管理するサービスと連動します。ECS、EKS、Fargate、あるいは Kubernetes で実行するコンテナ化されたワークロードでは、各マイクロサービスのタスクまたはポッド定義の一部として、提供されている App Mesh プロキシを含め、プロキシと直接通信するようにサービスのアプリケーションコンテナを設定します。サービスが開始されると、プロキシは自動的に App Mesh にチェックインし、さらに App Mesh によって設定されます。
完全マネージド型
AWS App Mesh は、高い可用性を備えたマネージド型サービスです。App Mesh では、コミュニケーション管理のためにアプリケーションレベルのインフラストラクチャをインストールしたり、管理したりせずに、サービスコミュニケーションを管理できます。