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のサービス間通信 4つの方法を比較する 〜Canary,Blue/Greenも添えて〜
Search
Tetsuya Kikuchi
October 23, 2024
Programming
15
3.3k
ECSのサービス間通信 4つの方法を比較する 〜Canary,Blue/Greenも添えて〜
AWS Likers) AWS10分LT会 - vol.5 でのLT資料です。
https://aws-likers.connpass.com/event/330782/
Tetsuya Kikuchi
October 23, 2024
Tweet
Share
More Decks by Tetsuya Kikuchi
See All by Tetsuya Kikuchi
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
3.8k
プルリクが全てじゃない!実は喜ばれるOSS貢献の方法8選
tkikuc
17
2.5k
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
3
390
ECS向けのドリフト検知機構を実装してみた
tkikuc
0
480
OSSのメンテナが 入門ハンズオンを なぜ・どのように作成したか
tkikuc
3
120
ECSのCanaryリリースをExternalデプロイタイプで実現する方法
tkikuc
1
180
Other Decks in Programming
See All in Programming
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
160
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
730
Amazon Q Developer Proで効率化するAPI開発入門
seike460
PRO
0
110
ファインディLT_ポケモン対戦の定量的分析
fufufukakaka
0
690
Rails アプリ地図考 Flush Cut
makicamel
1
120
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
120
Formの複雑さに立ち向かう
bmthd
1
840
Compose でデザインと実装の差異を減らすための取り組み
oidy
1
310
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.8k
TokyoR116_BeginnersSession1_環境構築
kotatyamtema
0
110
XStateを用いた堅牢なReact Components設計~複雑なClient Stateをシンプルに~ @React Tokyo ミートアップ #2
kfurusho
1
900
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
0
190
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
A Philosophy of Restraint
colly
203
16k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Pragmatic Product Professional
lauravandoore
32
6.4k
4 Signs Your Business is Dying
shpigford
182
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.1k
Navigating Team Friction
lara
183
15k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
We Have a Design System, Now What?
morganepeng
51
7.4k
Unsuck your backbone
ammeep
669
57k
Transcript
ECSのサービス間通信 4つの方法を比較する 〜Canary,Blue/Greenも添えて〜 2024-10-23 AWS Likers) AWS10分LT会 - vol.5 @t-kikuc
• PipeCDメンテナ @CyberAgent, Inc. ◦ ECS/Lambda関連の機能開発よくやってます • 好きなAWSサービス: ECS、Support •
年内にAWS認定10点ぐらい失効します🎇 菊池 哲哉 Kikuchi Tetsuya 2 @t-kikuc @t_kikuc
PipeCDとは? • CD(継続的デリバリー)のOSS • 主な特徴 ◦ ECS、Lambda、K8s、Cloud Run、Terraformにデプロイできる (2024.10現在) ◦
Canary、Blue/Greenに強み ◦ GitOpsスタイル(Pull型) • 沿革 ◦ サイバーエージェント発のOSS ◦ 2023.05〜 CNCF Sandbox Project ◦ 詳細: https://speakerdeck.com/ffjlabo/our-journey-from-in-house-cd-system-to-open-source • 日本語版チュートリアルあります ◦ https://github.com/pipe-cd/tutorial/blob/main/content/ja/README.md 3
アジェンダ 1. ECSのサービス間通信とは? 2. 4つのサービス間通信方法を概説 3. 比較 4. Canary、Blue/Greenはどう実現する? 4
1. ECSのサービス間通信とは? 5
ECSのサービス間通信とは? 6
ECSのサービス間通信とは? 7 どうする? どうする?
サービス間通信で大事な要素 • 通信先の発見 ◦ 負荷分散も • 信頼性/耐障害性 ◦ ヘルスチェック : 落ちてるターゲットは外す ◦
リトライ : 一時的な通信失敗なら再試行 ◦ サーキットブレーカ: 落ちてるサービスには通信させない • 可観測性 ◦ ログ、メトリクス、トレース 8
ECSサービス間通信の方法4点 • ALB • ECS Service Discovery • App Mesh
(廃止予定) • ECS Service Connect 9
App Mesh終了のお知らせ > 2026 年 9 月 30 日をもって AWS
App Mesh のサポートを終了することを決定しました。 https://aws.amazon.com/jp/blogs/news/migrating-from-aws-app-mesh-to-amazon-ecs-service-c onnect/ 10
2. 4つのサービス間通信方法を概説 11 11
1. ALB 12 1. ALBのドメイン名にアクセス 2. ALBが配下のTaskにルーティング
1. ALB 13 • パスベースのルーティングにより、 1つのALBで複数サービス間の中継も可能
1. ALB 14 👍強み • ログ・メトリクスを取得可能 • 柔軟なルーティング設定 😢弱み •
レイテンシが気になりうる • ALBの管理の手間
2. ECS Service Discovery • 名前解決 → 直接アクセス 15
2. ECS Service Discovery • レコード登録の流れ (削除も同様) 16
2. ECS Service Discovery 17 👍強み • 構築・管理がシンプル • 通信が高速
• 安い 😢弱み • ログ/メトリクス/トレースを取得できない • 信頼性向上のためには自前実装が必要
3. App Mesh (終了予定) • Envoyサイドカー + マネージドのコントロールプレーン 18
3. App Mesh (終了予定) 19 👍強み • ログ・メトリクス・トレースを取得 できる •
信頼性向上の機能が充実 ◦ サーキットブレーカーも 😢弱み • 構築・管理が面倒
4. ECS Service Connect • サイドカーのエージェントが通信を色々やってくれる 20
4. ECS Service Connect 21 👍強み • ログ・メトリクスを取得可能 • リトライ制御が自動
• 設定がシンプル 😢弱み • サイドカーの費用がかかる • まだ発展途上
3. 4方法を比較 22 22
比較 23 ALB Service Discovery App Mesh Service Connect 可観測性
👍 x 👍👍 👍 信頼性 👍 x 👍👍👍👍 👍👍 シンプルさ 👍 👍👍👍 x 👍👍 費用 トラフィック次第 👍 サイドカー サイドカー 懸念事項 - - 終了予定☠ まだ発展途上 PipeCDでの 対応状況 👍👍対応済 👍一部対応済 x 対応予定なし x 未対応
4. Canary, Blue/Greenはどう実現する? 24 24
比較: デプロイ編 25 ALB Service Discovery App Mesh Service Connect ローリングアッ
プデート 👍 👍 👍 👍 Canary, Blue/Green 👍👍 CodeDeployを 使用 x 強引には可能 👍 x 未対応 CodeDeployを使用しない方法は、下記参照 ECSのCanaryリリースを Externalデプロイタイプで実現する方法
Service Discoveryでの強引Canary例 26 • TaskSetを利用 • Task数の比率でCanary 比率を制御 • Blue/Greenはできない
◦ Blue/Green対応 版:https://qiita.com/t-kikuc/items/6995 7ee2c6b490a01b6d • PipeCDはこの方式 詳細:https://qiita.com/t-kikuc/items/25bd032606d878229ed7
Service ConnectでのCanary,Blue/Greenは? • 現時点でCanary,Blue/Greenは未サポート • 強引に実現する可能性: ビミョウ ◦ 複数のサービスを使えばできるのか?(検証求む) ◦
“外部デプロイタイプ”がサポートされていないため、魔改造は難しそう > Only services that use rolling deployments are supported with Service Connect. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect-concepts-deploy.html 27
まとめ 28 28
まとめ 29 ALB Service Discovery App Mesh Service Connect 可観測性
👍 x 👍👍 👍 信頼性 👍 x 👍👍👍👍 👍👍 シンプルさ 👍 👍👍👍 x 👍👍 費用 トラフィック次第 👍 サイドカー サイドカー 懸念事項 - - 終了予定☠ まだ発展途上 Canary, Blue/Green 👍👍CodeDeployで x 強引には可能 👍 x PipeCD対応状況 👍👍対応済 👍一部対応済 x 対応予定なし x 未対応 頑張ってほしい • Service ConnectはApp Meshからの移行先として十分なのか? • AWS的には「ECSサービス間通信に多機能は不要」と考えているのか?
参考・関連文献 • 第二十六回 ちょっぴりDD Amazon ECS Service Connect によるサービス間通信の管理 https://www.youtube.com/watch?v=emmk3U0whSQ
• 改めてECSサービス間通信を整理する https://tech.nri-net.com/entry/ecs_service_to_service_communication • Web アプリケーションにおける Amazon ECS / AWS Fargate アーキテクチャデザインパターン https://aws.amazon.com/jp/builders-flash/202409/web-app-architecture-design-pattern/ • ECS Service Connect で ECS 上のマイクロサービスの耐障害性と可観測性を高めよう https://speakerdeck.com/kashinoki38/ecs-service-connect-de-ecs-shang-nomaikurosabisunonai-zhang-hai-xing-toke-guan-ce-xing-wogao-meyou • 公式ドキュメント) Interconnect Amazon ECS services - Amazon Elastic Container Service https://docs.aws.amazon.com/AmazonECS/latest/developerguide/interconnecting-services.html • Service DiscoveryでのCanary & Blue/Green (強引実装例) https://qiita.com/t-kikuc/items/69957ee2c6b490a01b6d • Service DiscoveryでのCanary(簡易実装例) https://qiita.com/t-kikuc/items/25bd032606d878229ed7 • ECSのCanaryリリースをExternalデプロイタイプで実現する方法 https://speakerdeck.com/tkikuc/ecsnocanaryririsuwoexternaldepuroitaipudeshi-xian-surufang-fa 30