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.5k
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
24
ecspresso, ecschedule, lambroll を PipeCDプラグインとして動かしてみた (プロトタイプ) / Running ecspresso, ecschedule, and lambroll as PipeCD Plugins (prototype)
tkikuc
2
4.5k
プルリクが全てじゃない!実は喜ばれるOSS貢献の方法8選
tkikuc
17
2.7k
ECS Service Connectのこれまでのアップデートと今後のRoadmapを見てみる
tkikuc
3
450
ECS向けのドリフト検知機構を実装してみた
tkikuc
0
560
OSSのメンテナが 入門ハンズオンを なぜ・どのように作成したか
tkikuc
3
150
ECSのCanaryリリースをExternalデプロイタイプで実現する方法
tkikuc
1
230
Other Decks in Programming
See All in Programming
設計の本質:コード、システム、そして組織へ / The Essence of Design: To Code, Systems, and Organizations
nrslib
10
3.8k
Designing Your Organization's Test Pyramid ( #scrumniigata )
teyamagu
PRO
5
1.3k
ニーリーQAのこれまでとこれから
nealle
2
770
LRパーサーはいいぞ
ydah
7
1.3k
JAWS DAYS 2025 re_Cheers: WEB
komakichi
0
110
UMAPをざっくりと理解 / Overview of UMAP
kaityo256
PRO
3
1.5k
generative-ai-use-cases(GenU)の推しポイント ~2025年4月版~
hideg
1
390
読書シェア会 vol.4 『ダイナミックリチーミング 第2版』
kotaro666
0
110
API for docs
soutaro
4
1.7k
Serving TUIs over SSH with Go
caarlos0
0
650
開発者フレンドリーで顧客も満足?Platformの秘密
algoartis
0
210
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
250
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
600
Why Our Code Smells
bkeepers
PRO
336
57k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Producing Creativity
orderedlist
PRO
344
40k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.2k
Facilitating Awesome Meetings
lara
54
6.3k
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