Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

iret.kumoben
September 19, 2024

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

iret.kumoben

September 19, 2024
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. 2 講師自己紹介 ◼ 秋葉 大輔(あきば だいすけ) • クラウドインテグレーション事業部所属 2020年2月入社 •

    前職で組み込み開発〜Webサービス開発まで様々な開発経験あり 最近は実装よりマネジメント系の比重が多くなってきています。 • ご質問は YouTubeのコメント欄で受け付けております。 後日回答させていただきます!
  2. アジェンダ 3 1. マイクロサービスについて 2. ECSによるマイクロサービス構成パターン 2.1. ELBを使った構成 2.2. App

    Meshを使った構成 2.3. ECS Service Discoveryを使った構成 2.4. ECS Service Connectを使った構成 2.5. 各構成パターンの比較 3. まとめ
  3. サンプルシステム 1.マイクロサービスについて 8 ◼ モノリシック vs マイクロサービス ユーザ管理サービス ユーザ管理機能 契約管理サービス

    契約管理機能 在庫管理サービス 在庫管理機能 請求管理サービス 請求管理機能 サンプルシステム ユーザ管理機能 在庫管理機能 契約管理機能 請求管理機能 モノリシック アーキテクチャ マイクロサービス アーキテクチャ
  4. 1.マイクロサービスについて 10 ◼ マイクロサービスのデメリット • サービスの適切な分割の難しさ 各サービスをどの程度まで分割すべきか、各サービスの責務をどこまで持たせるかは 難しく、分割の仕方によってはメリットが十分に享受できない場合があります。 • システムの複雑度が上がる

    マイクロサービスのサービス間はAPI連携が基本となっており、サービス間の通信や データの整合性管理などは複雑になってしまいます。 • ランニングコストの増加 マイクロサービスでは、各サービスごとにDBを独立して管理することが基本と なっているため、DBを複数構築する必要があり、その分ランニングコストが 増加する傾向があります。
  5. 2.2.App Meshを使った構成 15 ◼ App Meshの構成例 AWS App Mesh AWS

    Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy
  6. 2.2.App Meshを使った構成 16 ◼ AWS App Meshとは • AWS App

    Mesh は Envoy プロキシに基づくサービスメッシュです。 AWS App Mesh is サービスメッシュ??
  7. 2.2.App Meshを使った構成 17 ◼ サービスメッシュとは • サービスメッシュは、アプリケーション内のサービス間のすべての通信を処理するソフト ウェアレイヤーです。 〜〜 サービス間の接続を管理するために、サービスメッシュでは、モニタリング、ログ記録、

    トレース、トラフィックコントロールなどの新機能を使用できます。各サービスのコード に依存しないため、ネットワークの境界を越えて複数のサービス管理システムと連携でき ます。 参照:https://aws.amazon.com/jp/what-is/service-mesh/
  8. 2.2.App Meshを使った構成 18 ◼ サービスメッシュの仕組み • データプレーン サービス間の通信を処理するレイヤーで、各サービスにサイドカーコンテナとして 組み込まれます データプレーンはサイドカープロキシとして動作し、トラフィック管理、リクエストの

    再試行などを行うことで耐障害性を高め、サービスの低下を防ぎます • コントロールプレーン データプレーンの設定や管理を行うレイヤーで、サービスレジストリ、メトリクス、 ログなどのテレメトリデータの収集と集約を行います
  9. 2.2.App Meshを使った構成 21 ◼ Envoyの主な機能 • ネットワークレイヤーとアプリケーションレイヤーの分離 すべてのアプリケーションサーバーと一緒に実行されるように設計された 自己完結型のプロセス アプリケーションがネットワークの変化を意識する必要がなくなります

    • L3/L4フィルタ L3/L4ネットワークフィルタとして動作します TCPプロキシ、UDPプロキシ、HTTPプロキシ、TLSクライアント証明書認証、 Redis、MongoDB、Postgresなどをサポート • HTTP L7フィルタ HTTP L7フィルタとして、サービス間のバッファリング、レイトリミット、 ルーティング/フォワーディングをサポート
  10. 2.2.App Meshを使った構成 22 ◼ Envoyの主な機能 • HTTP/2 サポート • HTTP/3

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

    Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy コントロールプレーン データ プレーン データ プレーン データ プレーン データ プレーン
  12. 2.2.App Meshを使った構成 25 ◼ Cloud Mapをざっくりいうと・・・ ユーザ管理 サービス 契約管理 サービス

    在庫管理 サービス 請求管理 サービス AWS Cloud Map contract.demo.local のリソース教えて? ecsの契約管理 サービスです 契約情報教えて user.demo.localの リソース教えて? ecsのユーザ管理 サービスです ユーザ情報教えて
  13. 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が自動作成される
  14. 2.2.App Meshを使った構成 30 ◼ App Meshの構成例 AWS App Mesh AWS

    Cloud Map ユーザ管理サービス envoy 契約管理サービス envoy 請求管理サービス envoy 在庫管理サービス envoy
  15. 2.2.App Meshを使った構成 31 ◼ App Meshの主な特徴 1. envoyを利用したサービスメッシュを構成 2. ECSにはサイドカーコンテナとしてenvoyが動作

    3. サービス間の通信はenvoyを経由して行われる 4. Cloud Mapによる名前空間が設定されており、サービス間のアクセスに利用可能
  16. 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. アプリケーションの確認
  17. 2.3.ECS Service Discoveryを使った構成 37 ◼ ECS Service Discoveryの主な特徴 1. Cloud

    Mapによる名前空間が設定されており、サービス間のアクセスに利用可能 2. 名前解決にRoute 53を利用 3. ECSのサービス設定のオプションとして設定 4. ECS以外のリソース設定が不要 ※Route 53の設定は自動で設定される
  18. 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
  19. 2.4.ECS Service Connectを使った構成 41 ◼ ECS Service Connectの構成例 ユーザ管理サービス AWS

    Cloud Map agent 契約管理サービス agent 請求管理サービス agent 在庫管理サービス agent
  20. 2.4.ECS Service Connectを使った構成 42 ◼ ECS Service Connectの主な特徴 1. Cloud

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

    負荷分散 ラウンドロビン形式でタスク間の負荷分散を実施 2. 外れ値の検知 一定期間内に発生した接続エラー回数に応じてエラーを返すホストに一時的に 接続しないようにする 3. 再試行 接続に失敗した場合に再試行を行う 4. タイムアウト アプリケーションが応答するまでのタイムアウト時間を設定
  22. 2.5.各構成パターンの比較 45 ◼ 各構成パターンの比較 構成パターン 設定の容易さ 追加のプロキシコンテナ 通信のメトリクス取得 GAのタイミング ELB

    △ 不要 可能 ? App Mesh × 必要 可能 2019/3 ECS Service Discovery ◯ 不要 不可能 2018/3 ECS Service Connect ◯ 必要 可能 2022/11
  23. X.参考サイト 50 ◼ 参考サイト • サービスメッシュとは何ですか? • ECS Service Connect

    によるサービス間通信の管理 • App Mesh Deep Dive • サービスディスカバリとCloud Map • Envoy公式サイト