Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

ECSのサービス間通信 4つの方法を比較する 〜Canary,Blue/Greenも添えて〜

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

More Decks by Tetsuya Kikuchi

Other Decks in Programming

Transcript

  1. • PipeCDメンテナ @CyberAgent, Inc. ◦ ECS/Lambda関連の機能開発よくやってます • 好きなAWSサービス:  ECS、Support •

    年内にAWS認定10点ぐらい失効します🎇 菊池 哲哉  Kikuchi Tetsuya 2 @t-kikuc @t_kikuc
  2. 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
  3. サービス間通信で大事な要素 • 通信先の発見 ◦ 負荷分散も • 信頼性/耐障害性 ◦ ヘルスチェック  : 落ちてるターゲットは外す ◦

    リトライ     : 一時的な通信失敗なら再試行 ◦ サーキットブレーカ: 落ちてるサービスには通信させない • 可観測性 ◦ ログ、メトリクス、トレース 8
  4. 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
  5. 2. ECS Service Discovery 17 👍強み • 構築・管理がシンプル • 通信が高速

    • 安い 😢弱み • ログ/メトリクス/トレースを取得できない • 信頼性向上のためには自前実装が必要
  6. 3. App Mesh (終了予定) 19 👍強み • ログ・メトリクス・トレースを取得 できる •

    信頼性向上の機能が充実 ◦ サーキットブレーカーも 😢弱み • 構築・管理が面倒
  7. 4. ECS Service Connect 21 👍強み • ログ・メトリクスを取得可能 • リトライ制御が自動

    • 設定がシンプル 😢弱み • サイドカーの費用がかかる • まだ発展途上
  8. 比較 23 ALB Service Discovery App Mesh Service Connect 可観測性

    👍 x 👍👍 👍 信頼性 👍 x 👍👍👍👍 👍👍 シンプルさ 👍 👍👍👍 x 👍👍 費用 トラフィック次第 👍 サイドカー サイドカー 懸念事項 - - 終了予定☠ まだ発展途上 PipeCDでの 対応状況 👍👍対応済 👍一部対応済 x 対応予定なし x 未対応
  9. 比較: デプロイ編 25 ALB Service Discovery App Mesh Service Connect ローリングアッ

    プデート 👍 👍 👍 👍 Canary, Blue/Green 👍👍 CodeDeployを 使用 x 強引には可能 👍 x 未対応 CodeDeployを使用しない方法は、下記参照 ECSのCanaryリリースを Externalデプロイタイプで実現する方法
  10. 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
  11. 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
  12. まとめ 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サービス間通信に多機能は不要」と考えているのか?
  13. 参考・関連文献 • 第二十六回 ちょっぴり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