Amazon Web Services ブログ

[AWS Black Belt Online Seminar] AWS App Mesh 資料及び QA 公開

先日 (2020/07/31) 開催しました AWS Black Belt Online Seminar「AWS App Mesh」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます)

Q. サービスメッシュはマイクロサービスアーキテクチャを構築する当初から導入すべきでしょうか?それとも、ある程度の規模になってから導入するべきでしょうか?
A. マイクロサービスアーキテクチャを採用したワークロードを新規構築する様な場合は、当初から導入することを検討いただければと思います。一方で、規模が小さい間からマイクロサービスアーキテクチャで構築するべきか?といった観点も必要になります。最初はモノリスで開発し、ある程度の規模になって運用の中でシステムのコンテキスト境界が見えてきた段階でマイクロサービスをサービスメッシュと合わせて検討する、といった例もございます。

Q. アプリケーション間の直接通信からサービスメッシュへ移行するためのコスト・タスク量について知りたいです。
A. サービスメッシュへ移行するためのマイグレーション手段はいくつか考えられますが、Envoy を導入したアプリケーションを別途作成し、既存のアプリケーションを縮退させる方法などが考えられます。上記の作業に関して、アプリケーションの規模や通信方式によって移行コストやタスク量が異なってきますので、まず、検証環境でマイグレーションを実施し、事前にコストやタスク量を見積もるよう推奨いたします。

Q. AppMesh と Istio の互換性について教えて下さい
A. App Mesh と Istio は、サービスメッシュとしてのモデルや API に互換性はありません。

Q. AWS Lambda のネットワーク通信でも App Mesh は適用可能でしょうか?それとも、もともとの Lambda の設定を見直すだけでApp Meshの機能の一部でも実現可能でしょうか?
A. AWS App Mesh と AWS Lambda の連携機能はこちらのチケットでも議論されていますが、具体的な内容はまだ未定となっています。こちらのチケットをフォローいただければと思います。

Q. EC2 に Envoy を導入する場合は、EC2 は Windows も対応してますか?
A. Envoy は 2020 年 7 月現在、Windows には対応しておらず、AWS App Mesh での対応も未定となっています。

Q. POD をデプロイするときに Inject される Envoy はデプロイする POD の Yaml にアノテーション定義が必要ですか?
A. Envoy が Inject される Pod の定義にアノテーションは不要です。App Mesh Controller では、Virtual Node (Custom Resource) で podSelector を指定することで Inject 対象の Pod を決定します。詳細についてはこちらもご参照ください。

Q. App Mesh については1度少し見たことがある程度で見当違いかもしれませんが、印象としては同じような設定を色々な箇所に書かねばならず複雑に感じましたが、サービスメッシュというもの自体そういうものなのでしょうか?(例えば Listener Port など、ECS タスク定義内のコンテナ定義、Security Group に加え、Virtual Node にも必要になる等。)
A. サービスメッシュでは、アプリケーションの実装から通信制御の複雑性を排除する一方、通信に関するレイヤーが一つ増えることで、設定に関しては複雑性が増える側面があります。メッシュの設定とテストをCI/CDに組み込むなど、自動化を図ることを推奨いたします。

Q. Cloudwatch Agent を組み込みで利用出来る様な計画はありますか?
A. 現時点では Amazon CloudWatch の Agent をお客様で導入いただく必要がございます。ロードマップのこちらのチケットで、組み込みの形で提供できないか検討されております。

Q. App mesh controller for Kubernetes を試してみているのですが、Pod を停止するときに、バックエンドのアプリケーションがまだ全ての処理を返しきっていないのに SIGTERM で終了してしまい、クライアントにエラーを返してしまうような挙動をしていて、デプロイ時に問題になってしまっていて使えていない状況です。以下で preStopDelay を設定する変更が最近入ったのを見ましたが、我々のシステムの仕様上、処理に時間がかかる場合があるので、preStopDelay に処理にかかる最大の時間を設定してしまうと、毎回のデプロイにかなり時間がかかってしまうと思うので運用上問題になります。envoy が SIGTERM を受け取った後に、バックエンドのアプリケーションの処理が完全に終わるのを待ってから停止する方法、または上記の問題を解決する方法はありますでしょうか? https://github.com/aws/aws-app-mesh-controller-for-k8s/pull/312
A.ご指摘の通り、現時点で EKS が採用しているバージョンの Kubernetes では、アプリケーションコンテナとサイドカーの依存関係が定義できず、Envoy が処理の終了を待たずに終了する課題があります。AWS App Mesh のベストプラクティスをご参照いただき、結果整合性を考慮いただいた上で、App Mesh の設定で全てのルートにリトライを設定いただければと思います。

Q. Envoy のアクセスログとコンテナのアクセスログを異なるロググループに出力することはできますでしょうか?
A. ECS や EKS では、Envoy のアクセスログは、アプリケーションコンテナと同じロググループに出力されます。ログストリームはコンテナごとに出力されますので、ログストリームで識別いただければと思います

Q. イベント駆動のアプリケーションで App Mesh を使う際のコツなど公開されておりますでしょうか?
A. 現時点では、AWS App Meshは同期的な通信のサポートが主なユースケースとなっています。
一方で、ロードマップにはイベント駆動のアプリケーションで利用する上で必要になりそうな機能のチケットが起票されておりますので、もし、イベント駆動のアプリケーションでApp Meshを利用されるユースケースがございましたら、こちらのチケットなどにフィードバックいただけると幸いです。
https://github.com/aws/aws-app-mesh-roadmap/issues/169
https://github.com/aws/aws-app-mesh-roadmap/issues/197

Q. AppMesh を使うと内部的に、他の AWS のサービスが使用(起動)されているのでしょうか?
A. AWS App Mesh では、サービスディスカバリーの設定に AWS Cloud Map が、サービス間の通信に AWS Certificate Manager が利用されるなど、利用する機能によって他のAWSのサービスが使用される場合がございます。AWS App Mesh が他の AWS サービスとどのように連携するかにつきましては、App Meshドキュメントの各機能の説明に言及があります。

Q. istio と app mesh の違いは何でしょうか?
A. AWS App Mesh は、マネージドのコントロールプレーンを提供し、Amazon ECS や Amazon EKS、Amazon EC2 など複数のインフラストラクチャーにあるサービスをメッシュで管理できる点が特長となります。一方、Istio はオープンソースのプロジェクトであり、EKS を含む Kubernetes 環境に自身でコントロールプレーンを構築して管理することができます。

Q. App Mesh を使った場合の性能影響ってどのくらいでしょうか?
A. App Mesh を使った場合の性能影響は、通信がEnvoy Proxyを経由することによるオーバーヘッドに起因するものです。
実際の性能影響に関しては、App Mesh や Envoy の機能や利用しているインフラストラクチャーに依存するため、ご利用の環境で性能試験を実施されることを推奨いたします。

今後の AWS Webinar | イベントスケジュール

直近で以下を予定しています。各詳細およびお申し込み先は下記URLからご確認いただけます。皆様のご参加をお待ちしております。

AWSome Day Online Conference

「AWSome Day Online」は、AWSの主要サービスや基礎知識を約 2.5 時間という短い時間で、ポイントを押さえて紹介いたします。技術的な面だけではなく、AWS クラウドを学ぶために必要となる知識を身に付けたい方、エンジニアのみならず、営業職、プリセールス職、学生まで幅広い方々におすすめします。

※この回ではAWSエキスパートによる技術的な内容についてチャット形式でのQ&Aを実施します。
※AWS サービスの導入に関するご相談も同時にチャット形式にて対応します。
※2020年は毎月第一水曜日に開催します。

日時:2020 年 8 月 5 日(水) 15:00 – 17:40 終了予定 | 詳細・お申込みについてはこちら≫

Purpose-Built Databases Week – AWS の NoSQL データベースサービス総集編 –
Purpose-Built Databases Weekは、AWS NoSQL Databasesに焦点を当てた1週間に渡る全5日間のイベントシリーズです。各日とも、製品やユースケースの概要説明、最近リリースされた機能の深掘り、カスタマートーク、日本と米国のプロダクトチームとのライブ質疑応答などが行われます。

日時:2020 年 8 月 24 日(月)~ 8 月 30 日(金) | 詳細・お申込みについてはこちら≫

【初心者向け】AWS のネットワークで知っておくべき10のこと
このセッションでは、AWS利用にあたって、最低限知っておくべきことから玄人への入り口に至るネットワークの基本的な10のことについてアマゾン ウェブ サービス ジャパンのソリューションアーキテクトが解説します。

日時: 2020 年 8 月 19 日(水)10:00 – 11:30 | 詳細・お申込みについてはこちら≫


【初心者向け】AWS で Windows Server を始めるのに必要な 10 のこと
このセッションでは、Windows ワークロードをAWSで実行するうえでのポイントや、クラウドに移行するにあたっての検討事項を技術的な側面から整理してご説明します。

日時: 2020 年 8 月 26 日(水)10:30 – 12:00 | 詳細・お申込みについてはこちら≫

AWS Black Belt Online Seminar

8 月のアジェンダは以下を予定しています。新しいサービス Amazon CodeGru を Black Belt で取り扱うのは初めてです。そのほかもアップデートなど AWS サービスの最新情報をライブ配信でお届けします。セミナー中は内容に関する疑問点を質問することができます。参加された方だけの特権ですので、ぜひこの機会にご視聴ください。

8 月分の詳細・お申込はこちら≫

  • 8/11(火)12:00-13:00 CloudEndure
  • 8/12(水)18:00-19:00 Amazon Macie
  • 8/18(火)12:00-13:00 AWS Shield Advanced
  • 8/19(水)18:00-19:00 FreeRTOS
  • 8/25(火)12:00-13:00 AWS EC2 Image Builder
  • 8/26(水)18:00-19:00 AWS CloudFormation