Slide 1

Slide 1 text

第145回 雲勉 Amazon ECSで サービス間通信する方法を 調べてみよう

Slide 2

Slide 2 text

2 講師自己紹介 ◼ 秋葉 大輔(あきば だいすけ) • クラウドインテグレーション事業部所属 2020年2月入社 • 前職で組み込み開発〜Webサービス開発まで様々な開発経験あり 最近は実装よりマネジメント系の比重が多くなってきています。 • ご質問は YouTubeのコメント欄で受け付けております。 後日回答させていただきます!

Slide 3

Slide 3 text

アジェンダ 3 1. マイクロサービスについて 2. ECSによるマイクロサービス構成パターン 2.1. ELBを使った構成 2.2. App Meshを使った構成 2.3. ECS Service Discoveryを使った構成 2.4. ECS Service Connectを使った構成 2.5. 各構成パターンの比較 3. まとめ

Slide 4

Slide 4 text

はじめに・・・ 4

Slide 5

Slide 5 text

0.今日のゴール 5 ◼ 今日のゴールは、、 ECSによるマイクロサービス構成パターンの 種類と特徴を理解する

Slide 6

Slide 6 text

1. マイクロサービスについて 6

Slide 7

Slide 7 text

1.マイクロサービスについて 7 ◼ マイクロサービスとは • マイクロサービスとは、小さな独立した複数のサービスを組み合わせて1つのシス テムを構成するアーキテクチャを指します。 ユーザ管理サービス ユーザ管理機能 契約管理サービス 契約管理機能 在庫管理サービス 在庫管理機能 請求管理サービス 請求管理機能

Slide 8

Slide 8 text

サンプルシステム 1.マイクロサービスについて 8 ◼ モノリシック vs マイクロサービス ユーザ管理サービス ユーザ管理機能 契約管理サービス 契約管理機能 在庫管理サービス 在庫管理機能 請求管理サービス 請求管理機能 サンプルシステム ユーザ管理機能 在庫管理機能 契約管理機能 請求管理機能 モノリシック アーキテクチャ マイクロサービス アーキテクチャ

Slide 9

Slide 9 text

1.マイクロサービスについて 9 ◼ マイクロサービスのメリット • 柔軟性とスケーリング 各サービスが独立しているため、サービス単位で柔軟にスケーリングの調整が可能 • 独立した開発 サービスごとに責務を適切に分割することで、各サービスを担当する開発チームも 独立して開発を進めることが可能 • 高い耐障害性 特定のサービスに障害が発生した場合でも、システム全体を停止することなく 一部機能障害に止めることが可能

Slide 10

Slide 10 text

1.マイクロサービスについて 10 ◼ マイクロサービスのデメリット • サービスの適切な分割の難しさ 各サービスをどの程度まで分割すべきか、各サービスの責務をどこまで持たせるかは 難しく、分割の仕方によってはメリットが十分に享受できない場合があります。 • システムの複雑度が上がる マイクロサービスのサービス間はAPI連携が基本となっており、サービス間の通信や データの整合性管理などは複雑になってしまいます。 • ランニングコストの増加 マイクロサービスでは、各サービスごとにDBを独立して管理することが基本と なっているため、DBを複数構築する必要があり、その分ランニングコストが 増加する傾向があります。

Slide 11

Slide 11 text

2. ECSによるマイクロサービス構成パターン 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

2.1.ELBを使った構成 13 ◼ ELBを使ったサービス間通信の構成例 ユーザ管理サービス 在庫管理サービス 請求管理サービス 契約管理サービス Elastic Load Balancing

Slide 14

Slide 14 text

2.1.ELBを使った構成 14 ◼ ELBを使ったサービス間通信の主な特徴 1. アプリケーションからはELB経由での通信となる 2. ELBが持つxxx. ap-northeast-1.elb.amazonaws.comのようなドメインでのアクセス 3. サービス間アクセスに独自のドメインを指定したい場合はRoute 53の設定が必要

Slide 15

Slide 15 text

2.2.App Meshを使った構成 15 ◼ App Meshの構成例 AWS App Mesh AWS Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy

Slide 16

Slide 16 text

2.2.App Meshを使った構成 16 ◼ AWS App Meshとは • AWS App Mesh は Envoy プロキシに基づくサービスメッシュです。 AWS App Mesh is サービスメッシュ??

Slide 17

Slide 17 text

2.2.App Meshを使った構成 17 ◼ サービスメッシュとは • サービスメッシュは、アプリケーション内のサービス間のすべての通信を処理するソフト ウェアレイヤーです。 〜〜 サービス間の接続を管理するために、サービスメッシュでは、モニタリング、ログ記録、 トレース、トラフィックコントロールなどの新機能を使用できます。各サービスのコード に依存しないため、ネットワークの境界を越えて複数のサービス管理システムと連携でき ます。 参照:https://aws.amazon.com/jp/what-is/service-mesh/

Slide 18

Slide 18 text

2.2.App Meshを使った構成 18 ◼ サービスメッシュの仕組み • データプレーン サービス間の通信を処理するレイヤーで、各サービスにサイドカーコンテナとして 組み込まれます データプレーンはサイドカープロキシとして動作し、トラフィック管理、リクエストの 再試行などを行うことで耐障害性を高め、サービスの低下を防ぎます • コントロールプレーン データプレーンの設定や管理を行うレイヤーで、サービスレジストリ、メトリクス、 ログなどのテレメトリデータの収集と集約を行います

Slide 19

Slide 19 text

2.2.App Meshを使った構成 19 ???

Slide 20

Slide 20 text

2.2.App Meshを使った構成 20 ◼ Envoyとは • マイクロサービスに対応するため、サービス間のネットワーク制御を ネットワークプロキシとして提供することを目的に開発されたOSSです ユーザ管理 サービス 契約管理 サービス 在庫管理 サービス 請求管理 サービス envoy envoy envoy envoy ◼ 構成イメージ Amazon ElastiCache Amazon RDS

Slide 21

Slide 21 text

2.2.App Meshを使った構成 21 ◼ Envoyの主な機能 • ネットワークレイヤーとアプリケーションレイヤーの分離 すべてのアプリケーションサーバーと一緒に実行されるように設計された 自己完結型のプロセス アプリケーションがネットワークの変化を意識する必要がなくなります • L3/L4フィルタ L3/L4ネットワークフィルタとして動作します TCPプロキシ、UDPプロキシ、HTTPプロキシ、TLSクライアント証明書認証、 Redis、MongoDB、Postgresなどをサポート • HTTP L7フィルタ HTTP L7フィルタとして、サービス間のバッファリング、レイトリミット、 ルーティング/フォワーディングをサポート

Slide 22

Slide 22 text

2.2.App Meshを使った構成 22 ◼ Envoyの主な機能 • HTTP/2 サポート • HTTP/3 サポート(アルファバージョンのみ) • HTTP L7ルーティング • gRPCサポート • サービスディスカバリと動的な構成変更 • ヘルスチェック • ロードバランシング • フロント/エッジプロキシサポート • オブザーバビリティ

Slide 23

Slide 23 text

2.2.App Meshを使った構成 23 ◼ App Meshの構成例 AWS App Mesh AWS Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy コントロールプレーン データ プレーン データ プレーン データ プレーン データ プレーン

Slide 24

Slide 24 text

2.2.App Meshを使った構成 24 ◼ AWS Cloud Mapとは • アプリケーションが依存するバックエンドサービスやリソースに論理名を マッピングするために使用できるフルマネージドソリューション • REST APIでの呼び出しまたはDNSによるリソース検出が可能 AWS Cloud Map

Slide 25

Slide 25 text

2.2.App Meshを使った構成 25 ◼ Cloud Mapをざっくりいうと・・・ ユーザ管理 サービス 契約管理 サービス 在庫管理 サービス 請求管理 サービス AWS Cloud Map contract.demo.local のリソース教えて? ecsの契約管理 サービスです 契約情報教えて user.demo.localの リソース教えて? ecsのユーザ管理 サービスです ユーザ情報教えて

Slide 26

Slide 26 text

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が自動作成される

Slide 27

Slide 27 text

2.2.App Meshを使った構成 27 ◼ API呼び出しの設定

Slide 28

Slide 28 text

2.2.App Meshを使った構成 28 ◼ API呼び出しとVPCのDNSクエリの設定

Slide 29

Slide 29 text

2.2.App Meshを使った構成 29 ◼ API呼び出しと公開DNSクエリの設定

Slide 30

Slide 30 text

2.2.App Meshを使った構成 30 ◼ App Meshの構成例 AWS App Mesh AWS Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy

Slide 31

Slide 31 text

2.2.App Meshを使った構成 31 ◼ App Meshの主な特徴 1. envoyを利用したサービスメッシュを構成 2. ECSにはサイドカーコンテナとしてenvoyが動作 3. サービス間の通信はenvoyを経由して行われる 4. Cloud Mapによる名前空間が設定されており、サービス間のアクセスに利用可能

Slide 32

Slide 32 text

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. アプリケーションの確認

Slide 33

Slide 33 text

2.2.App Meshを使った構成 33 ◼ チュートリアルで作成されたリソース(一部)

Slide 34

Slide 34 text

2.2.App Meshを使った構成 34 ◼ チュートリアルで作成されたリソース(一部)

Slide 35

Slide 35 text

2.2.App Meshを使った構成 35 ◼ チュートリアルで作成されたリソース(一部)

Slide 36

Slide 36 text

2.3.ECS Service Discoveryを使った構成 36 ◼ ECS Service Discoveryの構成例 ユーザ管理サービス 在庫管理サービス 請求管理サービス 契約管理サービス AWS Cloud Map Amazon Route 53

Slide 37

Slide 37 text

2.3.ECS Service Discoveryを使った構成 37 ◼ ECS Service Discoveryの主な特徴 1. Cloud Mapによる名前空間が設定されており、サービス間のアクセスに利用可能 2. 名前解決にRoute 53を利用 3. ECSのサービス設定のオプションとして設定 4. ECS以外のリソース設定が不要 ※Route 53の設定は自動で設定される

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

2.3.ECS Service Discoveryを使った構成 39 ◼ ECS Service Discoveryをもう少し詳しく 同一VPC内のLambda/EC2などからECSの名前解決が可能となる Amazon Route 53 サービスA サービスB Lambda function Amazon EC2

Slide 40

Slide 40 text

2.3.ECS Service Discoveryを使った構成 40 ◼ ECS Service Discoveryの設定

Slide 41

Slide 41 text

2.4.ECS Service Connectを使った構成 41 ◼ ECS Service Connectの構成例 ユーザ管理サービス AWS Cloud Map agent 契約管理サービス agent 請求管理サービス agent 在庫管理サービス agent

Slide 42

Slide 42 text

2.4.ECS Service Connectを使った構成 42 ◼ ECS Service Connectの主な特徴 1. Cloud Mapによる名前空間が設定されており、サービス間のアクセスに利用可能 2. 名前解決にRoute 53を利用しない 3. サービス間の通信はService Connect Agentがインストールされているコンテナを経由 して行われる 4. ECSのサービス設定のオプションとして設定 5. ECS以外のリソース設定が不要

Slide 43

Slide 43 text

2.4.ECS Service Connectを使った構成 43 ◼ ECS Service Connect プロキシの主な機能 1. 負荷分散 ラウンドロビン形式でタスク間の負荷分散を実施 2. 外れ値の検知 一定期間内に発生した接続エラー回数に応じてエラーを返すホストに一時的に 接続しないようにする 3. 再試行 接続に失敗した場合に再試行を行う 4. タイムアウト アプリケーションが応答するまでのタイムアウト時間を設定

Slide 44

Slide 44 text

2.4.ECS Service Connectを使った構成 44 ◼ ECS Service Connectの設定

Slide 45

Slide 45 text

2.5.各構成パターンの比較 45 ◼ 各構成パターンの比較 構成パターン 設定の容易さ 追加のプロキシコンテナ 通信のメトリクス取得 GAのタイミング ELB △ 不要 可能 ? App Mesh × 必要 可能 2019/3 ECS Service Discovery ◯ 不要 不可能 2018/3 ECS Service Connect ◯ 必要 可能 2022/11

Slide 46

Slide 46 text

3. まとめ 46

Slide 47

Slide 47 text

3.まとめ 47 ◼ マイクロサービス的な開発をするのであればサービスメッシュの考え方は必要になる ◼ AWS上でサービス間通信を行う方法はいくつかパターンがある ◼ ECS Service Connectが今のところはメリット多そう

Slide 48

Slide 48 text

3.まとめ 48 ◼ 今日のゴール到達できました? ECSによるマイクロサービス構成パターンの 種類と特徴を理解する

Slide 49

Slide 49 text

ご視聴ありがとうございました 49

Slide 50

Slide 50 text

X.参考サイト 50 ◼ 参考サイト • サービスメッシュとは何ですか? • ECS Service Connect によるサービス間通信の管理 • App Mesh Deep Dive • サービスディスカバリとCloud Map • Envoy公式サイト