Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ECS/FargateとAWS App Meshでサービスメッシュにしたお話 / Buildi...
Search
nobunagayasuda
March 01, 2022
Technology
3
2.7k
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
Share
More Decks by nobunagayasuda
See All by nobunagayasuda
Atlassianツールチェーン活用事例 / Example of Atlassian toolchain
nobunagayasuda
1
560
Other Decks in Technology
See All in Technology
CloudWatch Container Insightsを使ったAmazon ECSのリソース監視
umekou
1
140
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
120k
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
600
SCSAから学ぶセキュリティ管理
masakamayama
0
130
アンチパターンのアーキテクチャと組織 / Anti-Pattern Software Architecture and Organization
oztick139
0
140
private spaceについてあれこれ調べてみた
operando
1
220
教師なし学習の基礎
kanojikajino
4
380
Autify Company Deck
autifyhq
2
41k
Redshiftを中心としたAWSでのデータ基盤
mashiike
0
110
カスタムインストラクションでGitHub Copilotをカスタマイズ!
07jp27
8
1.5k
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
3
520
AWSでRAGを実現する上で感じた3つの大事なこと
ymae
3
810
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
94
13k
The Invisible Side of Design
smashingmag
299
50k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.4k
A designer walks into a library…
pauljervisheath
205
24k
Become a Pro
speakerdeck
PRO
26
5.1k
Navigating Team Friction
lara
183
15k
Building Applications with DynamoDB
mza
93
6.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Typedesign – Prime Four
hannesfritz
40
2.5k
Code Review Best Practice
trishagee
66
17k
Git: the NoSQL Database
bkeepers
PRO
427
64k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Transcript
Copyright © SCSK Corporation ECS/FargateとAWS App Meshで サービスメッシュにしたお話 JAWS-UG朝会 2022/2/25
1 Copyright © SCSK Corporation 今日お話しすること Part.1 AppMeshを使うにあたって Part.2 AppMeshでできること
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
3 Copyright © SCSK Corporation おことわり 本日お話する内容ならびに資料に記載の内容(以下、本内容)は発表者自身の理解によるものであり、所属組織を代表す るものではございません。また、コミュニティでの情報共有を目的としたものであり、本内容により発生する如何なる事項 についても、発表者ならびに所属組織は一切の責任を負わないものとします。 本内容は発表者が2021年7月から10月頃に調査、検証した情報に基づいています。
極力正確にお伝えする所存ですが、情報のアップデートも含め、より正確には公式ドキュメントの参照ならびにテクニカル サポートをご利用ください。
4 Copyright © SCSK Corporation Part.1 AppMeshを使うにあたって
5 Copyright © SCSK Corporation AppMeshとは? --参照: https://aws.amazon.com/jp/app-mesh/
6 Copyright © SCSK Corporation AppMeshとは? なるほど、完全に理解した! ・・・
7 Copyright © SCSK Corporation AppMeshとは? ざっくり言うと サービスメッシュを構成するために Envoyを制御するサービス ※Istioのマネージドサービスではない
8 Copyright © SCSK Corporation サービスメッシュとは? 複数のサービスをメッシュ状につないだ状態 GW ハブ&スポーク サービスはゲートウェイ(GW)を介してやり取り。
サービス間通信の制御をGWで一括管理できる。 反面、GWがボトルネックになるリスクあり。 サービスメッシュ サービス同士が直接やり取りする。 GWがボトルネックになることがない。 反面、サービス間通信の管理が大変。 これだけを見ると嫌な予感しかしない... ALBにぶら下げるパターンはコチラ
9 Copyright © SCSK Corporation Envoyとは? サービス間の通信を行う軽量なプロキシ アプリケーション Envoy request
response request response request response アプリケーション Envoy request response request response サービス サービス クライアント Envoyの主な役割 ルーティング制御 サービスディスカバリ ヘルスチェック サーキットブレーカー タイムアウト リトライ サービスはHTTP以外にもgRPC やTCPでの定義も可
10 Copyright © SCSK Corporation AppMeshとは? サービスメッシュを構成するために Envoyを制御するサービス Envoy Envoy
Envoy Envoy これならいけそうな予感!
11 Copyright © SCSK Corporation AppMeshの構成要素 概念の理解が最初のハードル 『呼び出す側の振る舞いを、 呼び出される側が定義』 アプリケーション
Envoy アプリケーション Envoy サービスA サービスB クライアント Envoy ゲートウェイ サービスAに紐づくタスク を呼出すための定義 メッシュ外からサービス を呼出すための定義 仮想ゲートウェイ 非Envoy環境からのプロキシ 仮想サービス サービスの名前 仮想ルータ リクエストのルーティング 仮想ノード サービスの実体との紐付 サービスBに紐づくタスク を呼出すための定義
12 Copyright © SCSK Corporation 問い サービスメッシュは必要なのか? 参考 サービスメッシュは本当に必要なのか、何を解決するのか AWS
Summit Tokyo 2019 https://www.youtube.com/watch?v=ZwfdLAClzsc
13 Copyright © SCSK Corporation 将来への備え的理由 マイクロサービスアーキテクチャを目指す、という方向性 小規模で採用してノウハウを得ていく
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 呼出し順序
15 Copyright © SCSK Corporation 技術的な理由 ❷ライブラリ依存のリスク アプリケーション Envoy アプリケーション
Envoy サービス サービス Envoy構成 アプリケーション アプリケーション サービス サービス ライブラリ構成(Javaの場合) SpringCloud サービスディスカバリやクライアントロードバランサなど、どちらの構成でも実現可。 アプリケーション開発の立場からは、ライブラリ依存は極力少ない方が嬉しい。
ビジネス要求、将来の技術戦略、 チームのスキル、現状の課題、 などなど アーキテクチャの決定には様々な要素が関連します 調査・検証・議論を通じてより合ったものをご選択ください
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サポート ご契約により
Part.2 AppMeshでできること
本構成を用いて下記5つの観点で検証を実施。 ❶ ルーティング制御 ❸ ヘルスチェック ❺ リトライ ❷ サーキットブレイカー(流量制御) ❹
タイムアウト ❻ 外れ値検知 AppMesh 仮想サービス AppMeshでできること 仮想ノード DB Envoy 仮想ルーター 仮想ゲートウェイ アプリ 今回未使用
ルーティング制御 サービス間の呼出を柔軟に制御する。Blue/Greenデプロイメントやカナリアリリースを実現できる。 DB ECSタスク ECSタスク ECSタスク 仮想ルーターは、仮想サービス用のハンドラーとなっており、 ヘッダー等を用いてルーティングを行う。 また、仮想ノードは紐づくECSタスクの中で正常なタスクに対してトラフィックを伝播させる。
サーキットブレーカー(接続プール) アプリケーションへの流量を制御し、過負荷から保護する。 DB ECSタスク CP CP 主な設定項目は「最大接続数・最大保留数」の2つ。 最大接続数を超過した場合は、タイムアウトまで待機する。 最大接続数+最大保留数を超過した場合は、503 Service
Unavailable が発生する。
ヘルスチェック アプリケーションの正常性を監視しトラフィックの制御を行う。 DB ECSタスク HC ECSタスク HC HC ECSタスク ECSタスク
ECSのHCではコンテナのリカバリを、EnvoyのHCではEnvoyの通信制御を行う。 仮想ゲートウェイのECSタスクにおけるHCはALBのHCで代用する。 ※EnvoyのHC サービス検出方法によってはヘルスチェックが実施されない。 CloudMapもしくはDNS(ENDPOINTS)に設定する必要がある。
タイムアウト サービス間の呼出のタイムアウトを制御する。 DB ECSタスク TO TO 主な設定項目は「アイドルタイムアウト・リクエストタイムアウト」の2つ。 アイドルタイムアウトを超過した場合は、504 Gateway Timeout
が発生する。 リクエストタイムアウトを超過した場合は、408 Request Timeout が発生する。
リトライ アプリケーションへの通信がエラーになった場合の再試行を行う。 デフォルトの再試行ポリシーを設定。 503エラー発生時には2回リトライされる。 なお、リトライ中にタイムアウトに引っかかった場合は504 Gateway Timeoutとして返却される。 DB ECSタスク TA
25 Copyright © SCSK Corporation EnvoyProxyを用いて以下のような機能を実現。 ❶ ルーティング制御 ❸ ヘルスチェック
❺ リトライ ❷ サーキットブレイカー(流量制御) ❹ タイムアウト ❻ 外れ値検知 AppMesh 仮想サービス AppMeshでできること 仮想ノード DB Envoy 仮想ルーター 仮想ゲートウェイ アプリ 今回未使用
None