Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECS/FargateとAWS App Meshでサービスメッシュにしたお話 / Building service mesh on AppMesh and ECS on Fargate

ECS/FargateとAWS App Meshでサービスメッシュにしたお話 / Building service mesh on AppMesh and ECS on Fargate

JAWS-UG朝会2022/2/5発表内容です。
ECS/FargateとAWS App Meshでサービスメッシュにした際に理解したり調べたりした内容をすごく簡単に発表しました。

nobunagayasuda

March 01, 2022
Tweet

More Decks by nobunagayasuda

Other Decks in Technology

Transcript

  1. 2 Copyright © SCSK Corporation 川本 遼 / Ryo Kawamoto

    3年目(25歳) SCSK株式会社 金融事業グループ 金融システム第二事業本部 総合金融システム第二部 第二課 ANGEL Dojo Season.1 ANGEL賞 好きなAWSサービス AppMesh、Lambda 今日お話をする人 保田 信長 / Nobunaga Yasuda 18年目(42歳) SCSK株式会社 金融事業グループ 金融システム第二事業本部 総合金融システム第二部 第二課 シニアプロフェッショナル ITスペシャリスト 好きなAWSサービス ECS/Fargate、AppMesh、X-Ray、CDK
  2. 8 Copyright © SCSK Corporation サービスメッシュとは? 複数のサービスをメッシュ状につないだ状態 GW ハブ&スポーク サービスはゲートウェイ(GW)を介してやり取り。

    サービス間通信の制御をGWで一括管理できる。 反面、GWがボトルネックになるリスクあり。 サービスメッシュ サービス同士が直接やり取りする。 GWがボトルネックになることがない。 反面、サービス間通信の管理が大変。 これだけを見ると嫌な予感しかしない... ALBにぶら下げるパターンはコチラ
  3. 9 Copyright © SCSK Corporation Envoyとは? サービス間の通信を行う軽量なプロキシ アプリケーション Envoy request

    response request response request response アプリケーション Envoy request response request response サービス サービス クライアント Envoyの主な役割 ルーティング制御 サービスディスカバリ ヘルスチェック サーキットブレーカー タイムアウト リトライ サービスはHTTP以外にもgRPC やTCPでの定義も可
  4. 11 Copyright © SCSK Corporation AppMeshの構成要素 概念の理解が最初のハードル 『呼び出す側の振る舞いを、 呼び出される側が定義』 アプリケーション

    Envoy アプリケーション Envoy サービスA サービスB クライアント Envoy ゲートウェイ サービスAに紐づくタスク を呼出すための定義 メッシュ外からサービス を呼出すための定義 仮想ゲートウェイ 非Envoy環境からのプロキシ 仮想サービス サービスの名前 仮想ルータ リクエストのルーティング 仮想ノード サービスの実体との紐付 サービスBに紐づくタスク を呼出すための定義
  5. 14 Copyright © SCSK Corporation 技術的な理由 ❶ELBの性能や運用管理面のリスク A B C

    クライアント ELB 例)サービスA→B→Cの順で呼び出す場合 A B C 呼出し順序 ELB構成 A B C クライアント GW A B C 「長い/短い」ではなく、1リクエストで同じ場所を何度も通ることをリスクと捉えるか、 Envoy層が加わることによる障害ポイントの追加をリスクと捉えるか。 今後サービスが追加されていく構想においては前者をリスクとし、後者を許容。 メッシュ構成 ELB 呼出し順序
  6. 15 Copyright © SCSK Corporation 技術的な理由 ❷ライブラリ依存のリスク アプリケーション Envoy アプリケーション

    Envoy サービス サービス Envoy構成 アプリケーション アプリケーション サービス サービス ライブラリ構成(Javaの場合) SpringCloud サービスディスカバリやクライアントロードバランサなど、どちらの構成でも実現可。 アプリケーション開発の立場からは、ライブラリ依存は極力少ない方が嬉しい。
  7. AppMeshの情報源 2021年度版 設定方法や構築方法は上記でおおよそ把握できます。 振る舞いに関する仕様は確たる情報がないので地道な検証とサポート問合せで把握しました。 AWS公式ドキュメント https://docs.aws.amazon.com/app- mesh/latest/userguide/what-is-app-mesh.html AWS Black Belt

    Online Seminar https://aws.amazon.com/jp/aws-jp-introduction/aws-jp- webinar-service-cut/ サンプルソース https://github.com/aws/aws-app-mesh-examples Envoy公式ドキュメント https://www.envoyproxy.io/docs.html AWSサポート ご契約により
  8. 本構成を用いて下記5つの観点で検証を実施。 ❶ ルーティング制御 ❸ ヘルスチェック ❺ リトライ ❷ サーキットブレイカー(流量制御) ❹

    タイムアウト ❻ 外れ値検知 AppMesh 仮想サービス AppMeshでできること 仮想ノード DB Envoy 仮想ルーター 仮想ゲートウェイ アプリ 今回未使用
  9. ヘルスチェック アプリケーションの正常性を監視しトラフィックの制御を行う。 DB ECSタスク HC ECSタスク HC HC ECSタスク ECSタスク

    ECSのHCではコンテナのリカバリを、EnvoyのHCではEnvoyの通信制御を行う。 仮想ゲートウェイのECSタスクにおけるHCはALBのHCで代用する。 ※EnvoyのHC サービス検出方法によってはヘルスチェックが実施されない。 CloudMapもしくはDNS(ENDPOINTS)に設定する必要がある。
  10. 25 Copyright © SCSK Corporation EnvoyProxyを用いて以下のような機能を実現。 ❶ ルーティング制御 ❸ ヘルスチェック

    ❺ リトライ ❷ サーキットブレイカー(流量制御) ❹ タイムアウト ❻ 外れ値検知 AppMesh 仮想サービス AppMeshでできること 仮想ノード DB Envoy 仮想ルーター 仮想ゲートウェイ アプリ 今回未使用