Amazon Web Services ブログ

AWS App Mesh が大阪リージョンでご利用可能となりました。

みなさん、こんにちは。アマゾン ウェブ サービスジャパン、シニアエバンジェリストの亀田です。

AWS App Mesh が大阪リージョンでご利用可能となりましたのでお知らせいたします。

AWS App Mesh

AWS App Mesh はアプリケーションレベルのネットワークを提供し、さまざまな種類のコンピューティングインフラストラクチャにわたり、お客様のサービスが相互に通信することを容易にするサービスメッシュと言われる機能を提供するマネージドサービスです。

AWSでは現在200を超えるサービスを提供しています。App Meshが対応しているAWSサービスとして、コンピュート環境においてはAmazon EC2 に加えて、コンテナ環境では、Amazon ECSAmazon EKSAWS Fargate が存在しており、これら複数のサービスで構成された各コンポーネントが一つのアプリケーションを構成するケースがあります。

アプリケーション内でサービス数が増加するほど、エラーの正確な位置を特定し、障害後のトラフィックを再ルーティングし、コード変更を安全にデプロイすることが困難になっていきます。従来は、モニタリングロジックおよび制御ロジックをコードに直接組み込み、変更が発生するたびにサービスを再デプロイする必要がありましたが、App Mesh では一貫した可視性とネットワークトラフィック制御が提供され、マネージドサービスによって簡素化されます。

App Mesh はオープンソースの Envoy プロキシにより構成され、ソフトウェアベースのネットワーク機能が提供されます。これはサイドカーと言われる形態のコンテナにより機能が提供されています。各アプリケーションコンテナの脇にネットワークなどの機能をつかさどるコンテナがProxyとして存在しており別コンテナとの通信はそのさいどかーこんてなによって実現されます。こちらのBlackBelt資料が詳しくまとまっていますので合わせてご覧ください。

サービス間のトラフィックがどのように流れるかを設定し標準化するための制御機能が備わっており、カスタムのトラフィックルーティングルールを簡単に実装したり、デプロイの最中、障害発生後、アプリケーションのスケーリング中に、サービスの高可用性を確保することができます。従来必要であった各サービスの通信プロトコルの設定、カスタムコードの記述、ライブラリの実装が不要となり、アプリケーション運用を簡素化できます。また通信の暗号及びmTLSの認証機能により各サービス間の通信をより簡単にセキュアな状態にすることができます。

また、すべてのアプリケーションからのメトリクス、ログ、トレースを取り込み、Amazon CloudWatchAWS X-Ray と連携することで高い可観測性を複数のサービスから構成されたアプリケーションで実現することが可能です。

AWS Elastic Load Balancer との使い分け

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

AWS Lambda との連携について

App Meshが現在、ECS、EKS、Fargate 及び EC2上のKurbenets に対応していますが、それと合わせてアプリケーションで用いられているAWS Lambda には現時点で未対応です。こちらの GitHub Issue で議論が行われていますので、もしよろしければ議論にご参加ください。

– シニアエバンジェリスト 亀田