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でサービスメッシュにした際に理解したり調べたりした内容をすごく簡単に発表しました。

F6c3065e65bb87de942d5d9a4832ddae?s=128

nobunagayasuda

March 01, 2022
Tweet

More Decks by nobunagayasuda

Other Decks in Technology

Transcript

  1. Copyright © SCSK Corporation ECS/FargateとAWS App Meshで サービスメッシュにしたお話 JAWS-UG朝会 2022/2/25

  2. 1 Copyright © SCSK Corporation 今日お話しすること Part.1 AppMeshを使うにあたって Part.2 AppMeshでできること

  3. 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
  4. 3 Copyright © SCSK Corporation おことわり 本日お話する内容ならびに資料に記載の内容(以下、本内容)は発表者自身の理解によるものであり、所属組織を代表す るものではございません。また、コミュニティでの情報共有を目的としたものであり、本内容により発生する如何なる事項 についても、発表者ならびに所属組織は一切の責任を負わないものとします。 本内容は発表者が2021年7月から10月頃に調査、検証した情報に基づいています。

    極力正確にお伝えする所存ですが、情報のアップデートも含め、より正確には公式ドキュメントの参照ならびにテクニカル サポートをご利用ください。
  5. 4 Copyright © SCSK Corporation Part.1 AppMeshを使うにあたって

  6. 5 Copyright © SCSK Corporation AppMeshとは? --参照: https://aws.amazon.com/jp/app-mesh/

  7. 6 Copyright © SCSK Corporation AppMeshとは? なるほど、完全に理解した! ・・・

  8. 7 Copyright © SCSK Corporation AppMeshとは? ざっくり言うと サービスメッシュを構成するために Envoyを制御するサービス ※Istioのマネージドサービスではない

  9. 8 Copyright © SCSK Corporation サービスメッシュとは? 複数のサービスをメッシュ状につないだ状態 GW ハブ&スポーク サービスはゲートウェイ(GW)を介してやり取り。

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

    response request response request response アプリケーション Envoy request response request response サービス サービス クライアント Envoyの主な役割 ルーティング制御 サービスディスカバリ ヘルスチェック サーキットブレーカー タイムアウト リトライ サービスはHTTP以外にもgRPC やTCPでの定義も可
  11. 10 Copyright © SCSK Corporation AppMeshとは? サービスメッシュを構成するために Envoyを制御するサービス Envoy Envoy

    Envoy Envoy これならいけそうな予感!
  12. 11 Copyright © SCSK Corporation AppMeshの構成要素 概念の理解が最初のハードル 『呼び出す側の振る舞いを、 呼び出される側が定義』 アプリケーション

    Envoy アプリケーション Envoy サービスA サービスB クライアント Envoy ゲートウェイ サービスAに紐づくタスク を呼出すための定義 メッシュ外からサービス を呼出すための定義 仮想ゲートウェイ 非Envoy環境からのプロキシ 仮想サービス サービスの名前 仮想ルータ リクエストのルーティング 仮想ノード サービスの実体との紐付 サービスBに紐づくタスク を呼出すための定義
  13. 12 Copyright © SCSK Corporation 問い サービスメッシュは必要なのか? 参考 サービスメッシュは本当に必要なのか、何を解決するのか AWS

    Summit Tokyo 2019 https://www.youtube.com/watch?v=ZwfdLAClzsc
  14. 13 Copyright © SCSK Corporation 将来への備え的理由 マイクロサービスアーキテクチャを目指す、という方向性 小規模で採用してノウハウを得ていく

  15. 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 呼出し順序
  16. 15 Copyright © SCSK Corporation 技術的な理由 ❷ライブラリ依存のリスク アプリケーション Envoy アプリケーション

    Envoy サービス サービス Envoy構成 アプリケーション アプリケーション サービス サービス ライブラリ構成(Javaの場合) SpringCloud サービスディスカバリやクライアントロードバランサなど、どちらの構成でも実現可。 アプリケーション開発の立場からは、ライブラリ依存は極力少ない方が嬉しい。
  17. ビジネス要求、将来の技術戦略、 チームのスキル、現状の課題、 などなど アーキテクチャの決定には様々な要素が関連します 調査・検証・議論を通じてより合ったものをご選択ください

  18. 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サポート ご契約により
  19. Part.2 AppMeshでできること

  20. 本構成を用いて下記5つの観点で検証を実施。 ❶ ルーティング制御 ❸ ヘルスチェック ❺ リトライ ❷ サーキットブレイカー(流量制御) ❹

    タイムアウト ❻ 外れ値検知 AppMesh 仮想サービス AppMeshでできること 仮想ノード DB Envoy 仮想ルーター 仮想ゲートウェイ アプリ 今回未使用
  21. ルーティング制御 サービス間の呼出を柔軟に制御する。Blue/Greenデプロイメントやカナリアリリースを実現できる。 DB ECSタスク ECSタスク ECSタスク 仮想ルーターは、仮想サービス用のハンドラーとなっており、 ヘッダー等を用いてルーティングを行う。 また、仮想ノードは紐づくECSタスクの中で正常なタスクに対してトラフィックを伝播させる。

  22. サーキットブレーカー(接続プール) アプリケーションへの流量を制御し、過負荷から保護する。 DB ECSタスク CP CP 主な設定項目は「最大接続数・最大保留数」の2つ。 最大接続数を超過した場合は、タイムアウトまで待機する。 最大接続数+最大保留数を超過した場合は、503 Service

    Unavailable が発生する。
  23. ヘルスチェック アプリケーションの正常性を監視しトラフィックの制御を行う。 DB ECSタスク HC ECSタスク HC HC ECSタスク ECSタスク

    ECSのHCではコンテナのリカバリを、EnvoyのHCではEnvoyの通信制御を行う。 仮想ゲートウェイのECSタスクにおけるHCはALBのHCで代用する。 ※EnvoyのHC サービス検出方法によってはヘルスチェックが実施されない。 CloudMapもしくはDNS(ENDPOINTS)に設定する必要がある。
  24. タイムアウト サービス間の呼出のタイムアウトを制御する。 DB ECSタスク TO TO 主な設定項目は「アイドルタイムアウト・リクエストタイムアウト」の2つ。 アイドルタイムアウトを超過した場合は、504 Gateway Timeout

    が発生する。 リクエストタイムアウトを超過した場合は、408 Request Timeout が発生する。
  25. リトライ アプリケーションへの通信がエラーになった場合の再試行を行う。 デフォルトの再試行ポリシーを設定。 503エラー発生時には2回リトライされる。 なお、リトライ中にタイムアウトに引っかかった場合は504 Gateway Timeoutとして返却される。 DB ECSタスク TA

  26. 25 Copyright © SCSK Corporation EnvoyProxyを用いて以下のような機能を実現。 ❶ ルーティング制御 ❸ ヘルスチェック

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