全般

Q: AWS App Mesh とは何ですか?

A: AWS App Mesh で、サービス間の通信のモニタリング、管理、デバッグが簡単になります。App Mesh は、マイクロサービスコンテナと同時にデプロイされるオープンソースのサービスメッシュプロキシである Envoy を使用します。App Mesh はモニタリングと追跡のために AWS のサービスと統合され、多くの一般的なサードパーティ製ツールとの使用が可能です。App Mesh は、Amazon ECS、Amazon EKS、AWS Fargate、AWS で実行する Kubernetes が管理するマイクロサービスコンテナ、および Amazon EC2 上で実行するサービスで使用できます。

Q: App Mesh を使用するメリットは何ですか?

A: App Mesh で、新しいコードを書いたり追加の AWS インフラストラクチャを実行したりする必要なく、サービス間の通信を簡単に可視化および管理し、セキュリティを保つことができます。App Mesh を使用すると、サービス間の通信を標準化し、サービス間の通信に対するルールを実装し、さらに、メトリクス、ログ、トレースを直接 AWS のサービスやお好みのサードパーティ製ツールに取り込めるようになります。

Q: App Mesh の仕組みを教えてください。

A: App Mesh は、サービス向けのサービスメッシュを設定し管理します。各サービスと並行してオープンソースの Envoy プロキシを実行すると、各コンテナに出入りするすべての通信を処理するようにプロキシが App Mesh によって設定されます。App Mesh は、メトリクス (エラー率など)、1 秒あたりの接続を収集します。これらは StatsD コレクターを使用して Amazon CloudWatch にエクスポートすることができます。App Mesh API を使用すると、パスまたは加重に基づいてトラフィックを特定のサービスバージョンにルーティングすることができます。

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

A: サービスメッシュは、サービス間のすべての通信を処理する新しいソフトウェアレイヤーです。サービス間の接続、および接続を管理するための新機能を提供し、各サービスのコードから独立しているため、ネットワークの境界を越えて複数のサービス管理システムと連携させることができます。

統合

Q: Amazon Elastic Container Service (ECS) や AWS Fargate は App Mesh とどのように連携しますか?

A: App Mesh では、Amazon ECS および AWS Fargate によって管理されるアプリケーション向けの新しい通信、観測、管理機能が提供されます。Envoy プロキシイメージをタスク定義に追加すると、App Mesh は、サービスメッシュ機能を提供するように Envoy の設定を管理します。App Mesh は、提供された Envoy ブートストラップ設定で指定されているエンドポイントに、メトリクス、ログ、およびトレースをエクスポートします。App Mesh では、メッシュ対応のマイクロサービス間で、トラフィックルーティングなどの制御を設定するための API を使用できます。

Q: App Mesh は Amazon Elastic Container Service for Kubernetes (EKS) とどのように連携しますか?

A: オープンソースの AWS App Mesh コントローラーおよびミューテートしている webhook アドミッションコントローラーを使用してください。これらのコントローラーによって Kubernetes サービスが App Mesh に接続され、Envoy プロキシが確実にポッドに挿入されます。App Mesh は、提供された Envoy ブートストラップ設定で指定されているエンドポイントに、メトリクス、ログ、およびトレースをエクスポートします。App Mesh では、メッシュ対応のマイクロサービス間で、トラフィックルーティングなどの制御を設定するための API を使用できます。

Q: App Mesh は Amazon EC2 で実行されるサービスとどのように連携するのですか?

A: EC2 インスタンスで、Envoy プロキシをコンテナあるいはプロセスとして実行してください。AWS が提供するコンテナプロキシの init コンテナを使用するか、独自のスクリプトを実行して、プロキシ経由でインスタンスのネットワークトラフィックをリダイレクトします。App Mesh は、サービスメッシュ機能を提供するように Envoy の設定を管理します。App Mesh は、提供された Envoy ブートストラップ設定で指定されているエンドポイントに、メトリクス、ログ、およびトレースをエクスポートします。App Mesh では、メッシュ対応のマイクロサービス間で、トラフィックルーティングなどの制御を設定するための API を使用できます。

Q: AWS Elastic Load Balancer の代わりに App Mesh を使用するメリットは何ですか?

A: AWS では、すべてのインターネットトラフィックの処理と、信頼境界線外にあるクライアントからのトラフィックの処理には AWS Elastic Load Balancing を使用することをお勧めしています。AWS リージョン内のほかのサービスに接続する内部サービスの場合、App Mesh を使用すると、柔軟性、一貫性、およびサービス通信のためのより高度な管理とモニタリングが提供されます。

モニタリング、ロギング、追跡

Q: App Mesh ではどういったタイプのモニタリングが提供されますか?

A: App Mesh では、サービス間のすべてのホップに関する一貫したメトリクスとログが提供されます。これらのログやメトリクスには、サービス名やリクエスト識別子などのメタデータが含まれます。これらを使用すると、サービス間通信のグラフィカルダッシュボードを、Amazon CloudWatch などのツールを使用して集約、フィルタリング、および表示できます。一般的なダッシュボードには、お使いのサービスとそれに依存するサービスとの間のエラー率とエラーコードが含まれることがあります。App Mesh では、各サービスのトレースは自動的に収集されます。これによって、すべてのサービス API コールの詳細を含むサービスマップが簡単に可視化できるようになります。これらの機能により、マイクロサービス間における通信問題の根本原因をデバッグし、特定することが簡単になります。

Q: App Mesh では、モニタリング、ロギング、追跡に AWS 以外のツールを使うことはできますか? はい。

A: はい。App Mesh では、Envoy と連携できるすべてのサードパーティ製ツールをサポートしています。これには、Splunk、Prometheus、Jaeger、Flagger、Grafana、さらに Zipkin や LightStep といったオープントレーシングソリューションが含まれます。

トラフィック管理

Q: App Mesh ではどのようなトラフィック管理が提供されますか?

A: App Mesh では、トラフィックルーティング向けのクライアント側管理のセットが提供されます。App Mesh は、アプリケーション間でトラフィックをルーティングするための、サービス名とバージョンに基づいた API を提供します。これらの機能により、マイクロサービスの新しいバージョンをデプロイするのが簡単になります。

サービス間認証

Q: App Mesh はアプリケーション ID をどのようにサポートするのですか?

相互 TLS (mTLS) で、トランスポート層でアプリケーション ID を適用し、提示された証明書に基づいてクライアント接続を許可または拒否できるようになります。AWS App Mesh は、相互トランスポート層セキュリティ (mTLS) と呼ばれる X.509 証明書を使用して、クライアントアプリケーション ID の適用をサポートしています。mTLS を設定するには、TLS セッションネゴシエーションの一部として、要求の開始時にサーバーサービスに証明書を提供するようにクライアントを設定する必要があります。この証明書はサーバーがクライアントを識別および認証するために使用し、証明書が有効であり、信頼できる認証局 (CA) によって発行されたことを確認し、証明書のサブジェクト代替名 (SAN) を使ってクライアントが誰であるかを識別します。

Q: AWS App Mesh で mTLS を使用する必要があるのはなぜですか?

マイクロサービスには、エンドツーエンドのトラフィック暗号化や、サービスメッシュで対処できる柔軟なサービスアクセス制御など、特定のセキュリティに関するニーズもあります。AWS App Mesh mTLS の実装で、クライアントアプリケーションはサーバーを検証したり、トラフィックを暗号化したりできます。相互 TLS では、サービス間認証に使用するピア認証を行います。このため、TLS を介したセキュリティのレイヤーが追加され、サービスが接続を確立しているクライアントを検証できるようになります。モノリシックアプリケーションをマイクロサービスに分割し、それらをサービスメッシュで実行すると、可視性の向上やスマートトラフィックルーティングなど、さまざまなメリットが得られます。