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.6k
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
GitOps for Everything with Pluggable PipeCD
tkikuc
0
28
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
4.7k
プルリクが全てじゃない!実は喜ばれるOSS貢献の方法8選
tkikuc
17
2.7k
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
3
470
ECS向けのドリフト検知機構を実装してみた
tkikuc
0
570
OSSのメンテナが 入門ハンズオンを なぜ・どのように作成したか
tkikuc
3
160
ECSのCanaryリリースをExternalデプロイタイプで実現する方法
tkikuc
1
240
Other Decks in Programming
See All in Programming
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
520
External SecretsのさくらProvider初期実装を担当しています
logica0419
0
210
鯛変だったRubyKaigi 2025 ── それでも楽しかった!
pndcat
0
130
Zennの運営完全に理解した #完全に理解したTalk
wadayusuke
1
130
PT AI без купюр
v0lka
0
180
マテリアルって何者?RealityKitで扱うマテリアル入門
nao_randd
0
140
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
180
Doma で目指す ORM 最適解
nakamura_to
1
160
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
120
TypeScriptのmoduleオプションを改めて整理する
bicstone
4
420
Investigating Multithreaded PostgreSQL
macdice
0
140
「MCPを使ってる人」が より詳しくなるための解説
yamaguchidesu
0
540
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Side Projects
sachag
454
42k
Scaling GitHub
holman
459
140k
KATA
mclloyd
29
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Automating Front-end Workflow
addyosmani
1370
200k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Music & Morning Musume
bryan
47
6.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
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