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.7k
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
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
3.8k
GitOps for Everything with Pluggable PipeCD
tkikuc
0
39
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
4.9k
プルリクが全てじゃない!実は喜ばれるOSS貢献の方法8選
tkikuc
17
2.8k
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
3
500
ECS向けのドリフト検知機構を実装してみた
tkikuc
0
590
OSSのメンテナが 入門ハンズオンを なぜ・どのように作成したか
tkikuc
3
160
ECSのCanaryリリースをExternalデプロイタイプで実現する方法
tkikuc
1
250
Other Decks in Programming
See All in Programming
C++20 射影変換
faithandbrave
0
560
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
1.1k
Deep Dive into ~/.claude/projects
hiragram
10
2.2k
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
350
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
0
470
Team operations that are not burdened by SRE
kazatohiei
1
290
Go1.25からのGOMAXPROCS
kuro_kurorrr
1
840
NPOでのDevinの活用
codeforeveryone
0
660
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
660
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
660
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
Rails Girls Zürich Keynote
gr2m
94
14k
Making Projects Easy
brettharned
116
6.3k
Building an army of robots
kneath
306
45k
Visualization
eitanlees
146
16k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Code Reviewing Like a Champion
maltzj
524
40k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Done Done
chrislema
184
16k
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