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
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
Search
iret.kumoben
September 19, 2024
Technology
0
140
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
下記、勉強会での資料です。
https://youtu.be/Sz1KU2qesTQ
iret.kumoben
September 19, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
15
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
23
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
36
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
49
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
52
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
35
第169回 雲勉 AWS WAF 構築 RTA
iret
0
38
第168回 雲勉 JITNAの使い方とハマったポイントについて語る回
iret
0
46
第167回 雲勉 エージェント開発を加速する Agent Development Kit 入門
iret
1
61
Other Decks in Technology
See All in Technology
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
0
130
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
1
880
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
470
多野優介
tanoyusuke
1
420
Function calling機能をPLaMo2に実装するには / PFN LLMセミナー
pfn
PRO
0
920
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
730
ZOZOのAI活用実践〜社内基盤からサービス応用まで〜
zozotech
PRO
0
170
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
970
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
350
Goにおける 生成AIによるコード生成の ベンチマーク評価入門
daisuketakeda
2
100
Shirankedo NOCで見えてきたeduroam/OpenRoaming運用ノウハウと課題 - BAKUCHIKU BANBAN #2
marokiki
0
140
AI Agentと MCP Serverで実現する iOSアプリの 自動テスト作成の効率化
spiderplus_cb
0
490
Featured
See All Featured
Balancing Empowerment & Direction
lara
4
680
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Music & Morning Musume
bryan
46
6.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
Why Our Code Smells
bkeepers
PRO
339
57k
How to Ace a Technical Interview
jacobian
280
24k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
How to train your dragon (web standard)
notwaldorf
96
6.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Transcript
第145回 雲勉 Amazon ECSで サービス間通信する方法を 調べてみよう
2 講師自己紹介 ◼ 秋葉 大輔(あきば だいすけ) • クラウドインテグレーション事業部所属 2020年2月入社 •
前職で組み込み開発〜Webサービス開発まで様々な開発経験あり 最近は実装よりマネジメント系の比重が多くなってきています。 • ご質問は YouTubeのコメント欄で受け付けております。 後日回答させていただきます!
アジェンダ 3 1. マイクロサービスについて 2. ECSによるマイクロサービス構成パターン 2.1. ELBを使った構成 2.2. App
Meshを使った構成 2.3. ECS Service Discoveryを使った構成 2.4. ECS Service Connectを使った構成 2.5. 各構成パターンの比較 3. まとめ
はじめに・・・ 4
0.今日のゴール 5 ◼ 今日のゴールは、、 ECSによるマイクロサービス構成パターンの 種類と特徴を理解する
1. マイクロサービスについて 6
1.マイクロサービスについて 7 ◼ マイクロサービスとは • マイクロサービスとは、小さな独立した複数のサービスを組み合わせて1つのシス テムを構成するアーキテクチャを指します。 ユーザ管理サービス ユーザ管理機能 契約管理サービス
契約管理機能 在庫管理サービス 在庫管理機能 請求管理サービス 請求管理機能
サンプルシステム 1.マイクロサービスについて 8 ◼ モノリシック vs マイクロサービス ユーザ管理サービス ユーザ管理機能 契約管理サービス
契約管理機能 在庫管理サービス 在庫管理機能 請求管理サービス 請求管理機能 サンプルシステム ユーザ管理機能 在庫管理機能 契約管理機能 請求管理機能 モノリシック アーキテクチャ マイクロサービス アーキテクチャ
1.マイクロサービスについて 9 ◼ マイクロサービスのメリット • 柔軟性とスケーリング 各サービスが独立しているため、サービス単位で柔軟にスケーリングの調整が可能 • 独立した開発 サービスごとに責務を適切に分割することで、各サービスを担当する開発チームも
独立して開発を進めることが可能 • 高い耐障害性 特定のサービスに障害が発生した場合でも、システム全体を停止することなく 一部機能障害に止めることが可能
1.マイクロサービスについて 10 ◼ マイクロサービスのデメリット • サービスの適切な分割の難しさ 各サービスをどの程度まで分割すべきか、各サービスの責務をどこまで持たせるかは 難しく、分割の仕方によってはメリットが十分に享受できない場合があります。 • システムの複雑度が上がる
マイクロサービスのサービス間はAPI連携が基本となっており、サービス間の通信や データの整合性管理などは複雑になってしまいます。 • ランニングコストの増加 マイクロサービスでは、各サービスごとにDBを独立して管理することが基本と なっているため、DBを複数構築する必要があり、その分ランニングコストが 増加する傾向があります。
2. ECSによるマイクロサービス構成パターン 11
2.ECSによるマイクロサービス構成パターン 12 ◼ ECSでマイクロサービスを実装する方法として、以下の構成パターンがある 1. ELBを使ったサービス間通信 2. AWS App Mesh
3. ECS Service Discovery 4. ECS Service Connect Elastic Load Balancing Amazon ECS AWS App Mesh ECS Service Connect AWS Cloud Map
2.1.ELBを使った構成 13 ◼ ELBを使ったサービス間通信の構成例 ユーザ管理サービス 在庫管理サービス 請求管理サービス 契約管理サービス Elastic Load
Balancing
2.1.ELBを使った構成 14 ◼ ELBを使ったサービス間通信の主な特徴 1. アプリケーションからはELB経由での通信となる 2. ELBが持つxxx. ap-northeast-1.elb.amazonaws.comのようなドメインでのアクセス 3.
サービス間アクセスに独自のドメインを指定したい場合はRoute 53の設定が必要
2.2.App Meshを使った構成 15 ◼ App Meshの構成例 AWS App Mesh AWS
Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy
2.2.App Meshを使った構成 16 ◼ AWS App Meshとは • AWS App
Mesh は Envoy プロキシに基づくサービスメッシュです。 AWS App Mesh is サービスメッシュ??
2.2.App Meshを使った構成 17 ◼ サービスメッシュとは • サービスメッシュは、アプリケーション内のサービス間のすべての通信を処理するソフト ウェアレイヤーです。 〜〜 サービス間の接続を管理するために、サービスメッシュでは、モニタリング、ログ記録、
トレース、トラフィックコントロールなどの新機能を使用できます。各サービスのコード に依存しないため、ネットワークの境界を越えて複数のサービス管理システムと連携でき ます。 参照:https://aws.amazon.com/jp/what-is/service-mesh/
2.2.App Meshを使った構成 18 ◼ サービスメッシュの仕組み • データプレーン サービス間の通信を処理するレイヤーで、各サービスにサイドカーコンテナとして 組み込まれます データプレーンはサイドカープロキシとして動作し、トラフィック管理、リクエストの
再試行などを行うことで耐障害性を高め、サービスの低下を防ぎます • コントロールプレーン データプレーンの設定や管理を行うレイヤーで、サービスレジストリ、メトリクス、 ログなどのテレメトリデータの収集と集約を行います
2.2.App Meshを使った構成 19 ???
2.2.App Meshを使った構成 20 ◼ Envoyとは • マイクロサービスに対応するため、サービス間のネットワーク制御を ネットワークプロキシとして提供することを目的に開発されたOSSです ユーザ管理 サービス
契約管理 サービス 在庫管理 サービス 請求管理 サービス envoy envoy envoy envoy ◼ 構成イメージ Amazon ElastiCache Amazon RDS
2.2.App Meshを使った構成 21 ◼ Envoyの主な機能 • ネットワークレイヤーとアプリケーションレイヤーの分離 すべてのアプリケーションサーバーと一緒に実行されるように設計された 自己完結型のプロセス アプリケーションがネットワークの変化を意識する必要がなくなります
• L3/L4フィルタ L3/L4ネットワークフィルタとして動作します TCPプロキシ、UDPプロキシ、HTTPプロキシ、TLSクライアント証明書認証、 Redis、MongoDB、Postgresなどをサポート • HTTP L7フィルタ HTTP L7フィルタとして、サービス間のバッファリング、レイトリミット、 ルーティング/フォワーディングをサポート
2.2.App Meshを使った構成 22 ◼ Envoyの主な機能 • HTTP/2 サポート • HTTP/3
サポート(アルファバージョンのみ) • HTTP L7ルーティング • gRPCサポート • サービスディスカバリと動的な構成変更 • ヘルスチェック • ロードバランシング • フロント/エッジプロキシサポート • オブザーバビリティ
2.2.App Meshを使った構成 23 ◼ App Meshの構成例 AWS App Mesh AWS
Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy コントロールプレーン データ プレーン データ プレーン データ プレーン データ プレーン
2.2.App Meshを使った構成 24 ◼ AWS Cloud Mapとは • アプリケーションが依存するバックエンドサービスやリソースに論理名を マッピングするために使用できるフルマネージドソリューション
• REST APIでの呼び出しまたはDNSによるリソース検出が可能 AWS Cloud Map
2.2.App Meshを使った構成 25 ◼ Cloud Mapをざっくりいうと・・・ ユーザ管理 サービス 契約管理 サービス
在庫管理 サービス 請求管理 サービス AWS Cloud Map contract.demo.local のリソース教えて? ecsの契約管理 サービスです 契約情報教えて user.demo.localの リソース教えて? ecsのユーザ管理 サービスです ユーザ情報教えて
2.2.App Meshを使った構成 26 ◼ AWS Cloud Mapのインスタンス検出方法 • API呼び出し Route
53を利用せずDiscoverInstancesを呼び出して名前解決する方法 • API呼び出しとVPCのDNSクエリ 上記のAPI呼び出しに加えて、Route 53に設定したPrivate Hosted Zoneを利用して 名前解決を行う方法 この方法の場合、VPCに紐づいたPrivate Hosted Zoneが自動作成される • API呼び出しと公開DNSクエリ 上記のAPI呼び出しに加えて、Route 53に設定したPublic Hosted Zoneを利用して 名前解決を行う方法 この方法の場合、Public Hosted Zoneが自動作成される
2.2.App Meshを使った構成 27 ◼ API呼び出しの設定
2.2.App Meshを使った構成 28 ◼ API呼び出しとVPCのDNSクエリの設定
2.2.App Meshを使った構成 29 ◼ API呼び出しと公開DNSクエリの設定
2.2.App Meshを使った構成 30 ◼ App Meshの構成例 AWS App Mesh AWS
Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy
2.2.App Meshを使った構成 31 ◼ App Meshの主な特徴 1. envoyを利用したサービスメッシュを構成 2. ECSにはサイドカーコンテナとしてenvoyが動作
3. サービス間の通信はenvoyを経由して行われる 4. Cloud Mapによる名前空間が設定されており、サービス間のアクセスに利用可能
2.2.App Meshを使った構成 32 ◼ App Meshのチュートリアル こちらのサイトでチュートリアルが実施可能 https://github.com/aws/aws-app-mesh-examples/tree/main/examples/apps/colorapp ◼ チュートリアルの流れ
1. VPCの作成 2. App Meshの作成 3. ECSクラスターの作成 4. App Meshのリソース設定 5. ECSサービスのデプロイ 6. アプリケーションの確認
2.2.App Meshを使った構成 33 ◼ チュートリアルで作成されたリソース(一部)
2.2.App Meshを使った構成 34 ◼ チュートリアルで作成されたリソース(一部)
2.2.App Meshを使った構成 35 ◼ チュートリアルで作成されたリソース(一部)
2.3.ECS Service Discoveryを使った構成 36 ◼ ECS Service Discoveryの構成例 ユーザ管理サービス 在庫管理サービス
請求管理サービス 契約管理サービス AWS Cloud Map Amazon Route 53
2.3.ECS Service Discoveryを使った構成 37 ◼ ECS Service Discoveryの主な特徴 1. Cloud
Mapによる名前空間が設定されており、サービス間のアクセスに利用可能 2. 名前解決にRoute 53を利用 3. ECSのサービス設定のオプションとして設定 4. ECS以外のリソース設定が不要 ※Route 53の設定は自動で設定される
2.3.ECS Service Discoveryを使った構成 38 ◼ ECS Service Discoveryをもう少し詳しく ECS Service
Discoveryを設定するとRoute 53のPrivate Host Zoneが自動で作成され VPCに接続される(Cloud Mapの設定に依存) Amazon Route 53 サービスA サービスB
2.3.ECS Service Discoveryを使った構成 39 ◼ ECS Service Discoveryをもう少し詳しく 同一VPC内のLambda/EC2などからECSの名前解決が可能となる Amazon
Route 53 サービスA サービスB Lambda function Amazon EC2
2.3.ECS Service Discoveryを使った構成 40 ◼ ECS Service Discoveryの設定
2.4.ECS Service Connectを使った構成 41 ◼ ECS Service Connectの構成例 ユーザ管理サービス AWS
Cloud Map agent 契約管理サービス agent 請求管理サービス agent 在庫管理サービス agent
2.4.ECS Service Connectを使った構成 42 ◼ ECS Service Connectの主な特徴 1. Cloud
Mapによる名前空間が設定されており、サービス間のアクセスに利用可能 2. 名前解決にRoute 53を利用しない 3. サービス間の通信はService Connect Agentがインストールされているコンテナを経由 して行われる 4. ECSのサービス設定のオプションとして設定 5. ECS以外のリソース設定が不要
2.4.ECS Service Connectを使った構成 43 ◼ ECS Service Connect プロキシの主な機能 1.
負荷分散 ラウンドロビン形式でタスク間の負荷分散を実施 2. 外れ値の検知 一定期間内に発生した接続エラー回数に応じてエラーを返すホストに一時的に 接続しないようにする 3. 再試行 接続に失敗した場合に再試行を行う 4. タイムアウト アプリケーションが応答するまでのタイムアウト時間を設定
2.4.ECS Service Connectを使った構成 44 ◼ ECS Service Connectの設定
2.5.各構成パターンの比較 45 ◼ 各構成パターンの比較 構成パターン 設定の容易さ 追加のプロキシコンテナ 通信のメトリクス取得 GAのタイミング ELB
△ 不要 可能 ? App Mesh × 必要 可能 2019/3 ECS Service Discovery ◯ 不要 不可能 2018/3 ECS Service Connect ◯ 必要 可能 2022/11
3. まとめ 46
3.まとめ 47 ◼ マイクロサービス的な開発をするのであればサービスメッシュの考え方は必要になる ◼ AWS上でサービス間通信を行う方法はいくつかパターンがある ◼ ECS Service Connectが今のところはメリット多そう
3.まとめ 48 ◼ 今日のゴール到達できました? ECSによるマイクロサービス構成パターンの 種類と特徴を理解する
ご視聴ありがとうございました 49
X.参考サイト 50 ◼ 参考サイト • サービスメッシュとは何ですか? • ECS Service Connect
によるサービス間通信の管理 • App Mesh Deep Dive • サービスディスカバリとCloud Map • Envoy公式サイト