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
33
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
下記、勉強会での資料です。
https://youtu.be/Sz1KU2qesTQ
iret.kumoben
September 19, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
0
18
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
69
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
34
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
79
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
150
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
24
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
23
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
39
第2回 雲勉LT大会 クラウド時代は CRUD ではなく CQRS で考えよう
iret
0
43
Other Decks in Technology
See All in Technology
Vueで Webコンポーネントを作って Reactで使う / 20241030-cloudsign-vuefes_after_night
bengo4com
4
2.5k
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
6
1.1k
物価高なラスベガスでの過ごし方
zakky
0
350
30万人が利用するチャットをFirebase Realtime DatabaseからActionCableへ移行する方法
ryosk7
5
330
急成長中のWINTICKETにおける品質と開発スピードと向き合ったQA戦略と今後の展望 / winticket-autify
cyberagentdevelopers
PRO
1
160
20241031_AWS_生成AIハッカソン_GenMuck
tsumita
0
110
Amazon_CloudWatch_ログ異常検出_導入ガイド
tsujiba
4
1.5k
チームを主語にしてみる / Making "Team" the Subject
ar_tama
4
300
omakaseしないための.rubocop.yml のつくりかた / How to Build Your .rubocop.yml to Avoid Omakase #kaigionrails
linkers_tech
3
710
アジャイルと契約 エッセンシャル版 / Agile Contracts Essential Edition
fkino
0
110
Automated Promptingを目指すその前に / Before we can aim for Automated Prompting
rkaga
0
110
[AWS JAPAN 生成AIハッカソン] Dialog の紹介
yoshimi0227
0
140
Featured
See All Featured
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
How to Think Like a Performance Engineer
csswizardry
19
1.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
46
2.1k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
Designing Experiences People Love
moore
138
23k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
43
6.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
Into the Great Unknown - MozCon
thekraken
31
1.5k
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公式サイト