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
Lottieアニメーションをカスタマイズしてみた
tahia910
0
130
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
1
210
Rubyで始める関数型ドメインモデリング
shogo_tksk
0
100
Rails アプリ地図考 Flush Cut
makicamel
1
120
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
340
Software Architecture
hschwentner
6
2.1k
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2.2k
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
370
Amazon ECS とマイクロサービスから考えるシステム構成
hiyanger
2
550
CI改善もDatadogとともに
taumu
0
110
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
220
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
How to Ace a Technical Interview
jacobian
276
23k
What's in a price? How to price your products and services
michaelherold
244
12k
A Modern Web Designer's Workflow
chriscoyier
693
190k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
GraphQLとの向き合い方2022年版
quramy
44
13k
Producing Creativity
orderedlist
PRO
344
39k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Visualization
eitanlees
146
15k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Git: the NoSQL Database
bkeepers
PRO
427
64k
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