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
47
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
下記、勉強会での資料です。
https://youtu.be/Sz1KU2qesTQ
iret.kumoben
September 19, 2024
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
27
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
48
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
51
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
94
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
44
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
110
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
290
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
26
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
24
Other Decks in Technology
See All in Technology
C++26 エラー性動作
faithandbrave
2
800
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
100
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
400
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
200
re:Invent 2024 Innovation Talks(NET201)で語られた大切なこと
shotashiratori
0
320
第3回Snowflake女子会_LT登壇資料(合成データ)_Taro_CCCMK
tarotaro0129
0
200
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
290
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.5k
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
270
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
650
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Docker and Python
trallard
42
3.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
520
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
For a Future-Friendly Web
brad_frost
175
9.4k
Raft: Consensus for Rubyists
vanstee
137
6.7k
The Cult of Friendly URLs
andyhume
78
6.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
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公式サイト