Slide 1

Slide 1 text

ECSサービス間通信に入門しよう! ~NRIネットコム TECH AND DESIGN STUDY #38~ 2024年7月30日 NRIネットコム株式会社 デジタルインテグレーション事業本部 Webインテグレーション事業部 梅原 航

Slide 2

Slide 2 text

1 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ 基本情報 ⚫ 梅原 航(うめはら こう) ⚫ NRIネットコム株式会社 Webインテグレーション事業部(@大阪) ⚫ AWSを使ったシステムのインフラ開発・運用に従事 ◼ 好きなAWSサービス ◼ 所有資格 自己紹介 Amazon Elastic Container Service (Amazon ECS) #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 3

Slide 3 text

2 Copyright(C) NRI Netcom, Ltd. All rights reserved. Amazon ECSについて 01 方法①Elastic Load Balancing 02 方法②Service Discovery 03 方法③AWS App Mesh 04 方法④Service Connect 05 まとめ 06 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 4

Slide 4 text

3 Copyright(C) NRI Netcom, Ltd. All rights reserved. 1. Amazon ECSとは #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 5

Slide 5 text

4 Copyright(C) NRI Netcom, Ltd. All rights reserved. Amazon ECS (Elastic Container Service)とは(おさらい) ◼ AWS上で動作するコンテナオーケストレーションサービス ◼ コンピューティングサービスなので、従来のWebサーバーやAPサーバーを担う 1. Amazon ECSとは Virtual private cloud (VPC) Users Elastic Load Balancing Amazon ECS Public subnet Private subnet Amazon Relational Database Service #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 6

Slide 6 text

5 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSのコンポーネント(おさらい) ◼ ECSは3つのコンポーネントから構成される ◼ ①タスク ⚫ 実際に動作するコンテナの実行単位 ⚫ タスク定義からインスタンス化したもの ⚫ 一つのタスクは一つのホスト実行される ◼ タスク定義 ⚫ タスクの詳細を定義したもの ⚫ どのdockerイメージを使うか ⚫ どのくらいのスペックをコンテナに割当てるか ⚫ どのポートを使用するか 1. Amazon ECSとは Task Container 1 Container 2 タスク #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 7

Slide 7 text

6 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSのコンポーネント(おさらい) ◼ ECSは3つのコンポーネントから構成される ◼ ①タスク ◼ ②サービス ⚫ 実行中のタスクを管理する ⚫ どこのサブネットにタスクを配置するか ⚫ どのLBに紐づけるか ⚫ 何個タスクを作成するか ◼ Auto Scaleさせる場合はこのサービス単位 1. Amazon ECSとは サービス Service Task Container 1 Container 2 タスク #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 8

Slide 8 text

7 Copyright(C) NRI Netcom, Ltd. All rights reserved. ECSのコンポーネント(おさらい) ◼ ECSは3つのコンポーネントから構成される ◼ ①タスク ◼ ②サービス ◼ ③クラスター ⚫ (ECS on Fargate)サービスを分離する論理的なグループ ⚫ (ECS on EC2)コンテナの実行基盤のEC2グループ 1. Amazon ECSとは Amazon ECS Amazon Elastic Compute Cloud AWS Fargate クラスター サービス Service Task Container 1 Container 2 タスク #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 9

Slide 9 text

8 Copyright(C) NRI Netcom, Ltd. All rights reserved. 別サービスにリクエストしたい場合 ◼ Auto ScalingなどでECSサービスに含まれるタスクのIPが動的に変化する ◼ サービスAからサービスBに通信するときはサービスBのタスクのIPアドレスを知る方法が必要 1. Amazon ECSとは Amazon ECS クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 10

Slide 10 text

9 Copyright(C) NRI Netcom, Ltd. All rights reserved. 2.方法①Elastic Load Balancing #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 11

Slide 11 text

10 Copyright(C) NRI Netcom, Ltd. All rights reserved. Elastic Load Balancingを使用する ◼ サービスBをELBのターゲットグループに紐づける ◼ サービスAからサービスBへはELBのエンドポイントにリクエスト ◼ タスクが増えてもターゲットグループに追加される 方法①Elastic Load Balancing Elastic Load Balancing クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 12

Slide 12 text

11 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼ メリット ⚫ ELBの機能を使うことができる ⚫ リクエストのメトリクスを取得可能 ⚫ ECSサービスのデプロイ方法でB/Gデプロイが選択可能 ◼ デメリット ⚫ 追加のインフラが必要になる ⚫ ELB分のコストがかかる ⚫ VPC内のIPアドレスを消費する ⚫ ELB経由のリクエストなので、タスクと直接通信に比べてレイテンシーが増加 ⚫ リトライ処理やタイムアウトなどはアプリで実装する必要あり 方法①Elastic Load Balancing #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 13

Slide 13 text

12 Copyright(C) NRI Netcom, Ltd. All rights reserved. 3.方法②Service Discovery #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 14

Slide 14 text

13 Copyright(C) NRI Netcom, Ltd. All rights reserved. タスク起動時にAWS Cloud MapがIPアドレスを登録する 方法②Service Discovery クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 Amazon Route 53 Virtual private cloud (VPC) AWS Cloud Map ◼ AWS Cloud MapがECSサービスとタスクのIPアドレスを紐づけて管理 ◼ Route53のプライベートホストゾーンに登録 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 15

Slide 15 text

14 Copyright(C) NRI Netcom, Ltd. All rights reserved. サービスBへリクエスト時 方法②Service Discovery サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B Task Application B 10.0.2.1 10.0.2.2 ◼ サービスAからのリクエストはRoute53に名前解決 ◼ 名前解決して得られたIPアドレスに直接通信 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します Amazon Route 53 Virtual private cloud (VPC) AWS Cloud Map

Slide 16

Slide 16 text

15 Copyright(C) NRI Netcom, Ltd. All rights reserved. コンソールでの設定方法 方法②Service Discovery ◼ どういうドメインで名前解決するか ◼ レコードタイプ/TTLの設定 ⚫ A ⚫ AAAA ⚫ SRV #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 17

Slide 17 text

16 Copyright(C) NRI Netcom, Ltd. All rights reserved. Route53プライベートホストゾーン 方法②Service Discovery ◼ 「web.service-b-ns」でIPを複数管理してくれる #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 18

Slide 18 text

17 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼ メリット ⚫ Route53のプライベートホストゾーンを使用して名前解決してるだけ ⚫ プライベートホストゾーンなので同一VPC内のリソースからも名前解決可能 ⚫ 追加のインフラも不要 ⚫ 設定方法も簡単 ◼ デメリット ⚫ 名前解決のみなので、トラフィックのメトリクスは取得できない ⚫ リトライ処理やタイムアウトはアプリ側で実装する必要あり 方法②Service Discovery #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 19

Slide 19 text

18 Copyright(C) NRI Netcom, Ltd. All rights reserved. 4.方法③AWS App Mesh #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 20

Slide 20 text

19 Copyright(C) NRI Netcom, Ltd. All rights reserved. サービスメッシュ/AWS App Meshとは ◼ サービスメッシュとは ⚫ 通信自体をenvoyプロキシが代理で行ってくれる ⚫ タイムアウトやリトライ処理もenvoyプロキシで行ってくれる ◼ AWS App Meshとは ⚫ サービスメッシュを実現するためのサービス ⚫ ECSタスクにenvoyプロキシのサイドカーコンテナがデプロイ ⚫ AWS App Meshはそのenvoyプロキシを管理してくれるコントロールプレーン ⚫ AWS App Meshに通信の制御の設定を入れておく 方法③AWS App Mesh #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 21

Slide 21 text

20 Copyright(C) NRI Netcom, Ltd. All rights reserved. タスク起動時 方法③AWS App Mesh クラスター AWS App Mesh AWS Cloud Map サービスA Service Task Application A Container 10.0.1.1 Service サービスB Task 10.0.2.1 Application B Container ◼ AWS App Meshに追加した設定がenvoyに反映 ◼ タスクのIPアドレスがCloud Mapに登録 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 22

Slide 22 text

21 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ Cloud MapにIPアドレスを問い合わせ ◼ 得たIPアドレスから直接通信 ◼ 通信自体を制御するのでメトリクスも出力 リクエスト時 方法③AWS App Mesh クラスター AWS App Mesh AWS Cloud Map サービスA Service Task Application A Container 10.0.1.1 Service サービスB Task 10.0.2.1 Application B Container Amazon CloudWatch #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 23

Slide 23 text

22 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼ メリット ⚫ AWS App Meshを使用するので、トラフィック制御を柔軟に設定できる ⚫ 信頼性と可観測性の向上 ◼ デメリット ⚫ 柔軟に設定できるゆえに複雑になる ⚫ ECSに加えてApp Meshの管理も必要 ⚫ envoyプロキシ用のコンピュートリソースが必要 方法③AWS App Mesh #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 24

Slide 24 text

23 Copyright(C) NRI Netcom, Ltd. All rights reserved. 5. 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 25

Slide 25 text

24 Copyright(C) NRI Netcom, Ltd. All rights reserved. Service Connect概要 ◼ re:Invent2022に発表 ◼ これまでの3つの方法のいいとこ取り ⚫ ELBのようにメトリクス取得できる ⚫ Service Discoveryみたいにシンプルに設定できる ⚫ AWS App Meshのように信頼性がある ◼ サービスメッシュ形式でService Connectサイドカーがデプロイされる ⚫ 通信のメトリクスも出力 • リクエスト数 • 1タスクあたりのリクエスト数 • httpレスポンスコード • レスポンスタイム • アクティブコネクション数 ⚫ プロキシにはデフォルト設定が入ってる • ラウンドロビン負荷分散 • 2回リトライ • デフォルト15秒でタイムアウト(設定可能可能) • 通信のTLS暗号化 • ハズレ値検知 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 26

Slide 26 text

25 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ デフォルトの通信制御が入ったService Connectサイドカーコンテナが起動 ◼ サービスに含まれるタスクのIPアドレスがAWS Cloud Mapに登録 タスク起動時 方法④Service Connect クラスター サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B 10.0.2.1 AWS Cloud Map ECS Service Connect ECS Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 27

Slide 27 text

26 Copyright(C) NRI Netcom, Ltd. All rights reserved. ◼ AWS Cloud MapにIPアドレスを問い合わせ ◼ 得たIPアドレスから直接通信 ◼ 通信自体を制御するのでメトリクスも出力 リクエスト時 方法④Service Connect サービスA Service Task Application A 10.0.1.1 Service サービスB Task Application B 10.0.2.1 AWS Cloud Map ECS Service Connect ECS Service Connect Amazon CloudWatch #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 28

Slide 28 text

27 Copyright(C) NRI Netcom, Ltd. All rights reserved. コンソールでの設定方法 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 29

Slide 29 text

28 Copyright(C) NRI Netcom, Ltd. All rights reserved. コンソールでの設定方法 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 30

Slide 30 text

29 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼ メリット ⚫ 追加インフラ不要 ⚫ 信頼性と可観測性の向上 ⚫ 設定もシンプル ⚫ 他クラスターや他VPCの接続も可能 ◼ デメリット ⚫ Service Connect Agent用のコンピュートリソースが必要 ⚫ ECSサービスのデプロイ方法はローリングアップデートのみ ⚫ ECS間だけしか通信できない 方法④Service Connect #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 31

Slide 31 text

30 Copyright(C) NRI Netcom, Ltd. All rights reserved. 6.まとめ #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 32

Slide 32 text

31 Copyright(C) NRI Netcom, Ltd. All rights reserved. まとめ ◼ AWSのドキュメントでは「Service Connect」が推奨されている 方式\観点 可観測性 信頼性 柔軟性 手軽さ 追加リソース 追加インフラ 備考 ELB ◯ ✕ ◯ △ 不要 要 ELBの機能を使える。 BGデプロイ Service Discovery ✕ ✕ ✕ ◯ 不要 不要 同一VPCからも接続 可能 AWS App Mesh ◯ ◯ ◯ ✕ 要 不要 App Meshの管理が 必要 Service Connect ◯ ◯ △ ◯ 要 不要 他クラスターや他VPC のECSサービスからも 接続可能 #nncstudy 転載、複製、改変等、および許諾のない二次利用を禁止します

Slide 33

Slide 33 text

No content