Slide 1

Slide 1 text

ECS Service Connect によるサービスの新しいつなぎ方 2022-12-05 株式会社野村総合研究所 新井雅也

Slide 2

Slide 2 text

新井 雅也 M a s a y a A R A I msy78 野村総合研究所に所属。 金融業界のお客様に向けたビジネス提案やシステム設計、開発、運用を担当。 好きな技術・サービスは、ECS、Fargate、App Runner、Kubernetes、Golang、Pulumi テックリード / インフラチームリーダー

Slide 3

Slide 3 text

本日のゴール uAWS re:Invent 2022期間中に発表されたECS Service Connectの概要を知る uサービス間接続として、ALB、Service Discovery、AWS App Meshと 比較したときの優位性を理解する uECS Service Connect活用時の注意事項を押さえる

Slide 4

Slide 4 text

ECS Service Connect とは

Slide 5

Slide 5 text

これまでの ECS サービス間接続における選択肢 ECS Service (Client) ECS Service ?

Slide 6

Slide 6 text

これまでの ECS サービス間接続における選択肢 ECS Service (Client) ECS Service ? 1. ELB によるサービス間接続 2. ECS Service Discovery によるサービス間接続 3. AWS App Mesh によるサービス間接続

Slide 7

Slide 7 text

ELB によるサービス間接続 Container ECS Service Container ALB Container ECS Service Container Pros: Blue/Green デプロイメントやトラフィック関連メトリクスの取得が可能 Cons: 追加のインフラ管理とコストが発生

Slide 8

Slide 8 text

ECS Service Discovery によるサービス間接続 Container ECS Service Container Container ECS Service Container Pros: シンプルな構成(サービスに対する直接接続が可能な構成) Cons: トラフィック関連メトリクスが自動で取得されない Cloud Map Route 53 1. サービス登録 2. レコード登録 3. 名前解決

Slide 9

Slide 9 text

App Mesh によるサービス間接続 Container ECS Service Container Container ECS Service Container Pros: 優れたトラフィック制御、mTLS による暗号化 Cons: ECS とは別の外部コンポーネント管理、トラフィック関連の柔軟な構成に伴う複雑性 Cloud Map 2. サービス登録 1. 設定 App Mesh 1. 設定 3. サービス ディスカバリ

Slide 10

Slide 10 text

App Mesh によるサービス間接続 Container Container Container Container 2. サービス登録 1. 設定 1. 設定 3. サービス ディスカバリ ECS Service ECS Service Pros: 優れたトラフィック制御、mTLSによる暗号化 Cons: ECS とは別の外部コンポーネント管理、トラフィック関連の柔軟な構成に伴う複雑性 Cloud Map App Mesh Virtual gateway Virtual service Virtual router Virtual node ECSサービスが追加されるとECS側の管理とは別に、 App Mesh 側の Virtual node の追加や Virtual router の変更が発生

Slide 11

Slide 11 text

これまでの ECS サービス間接続における選択肢 1. ALB 2. ECS Service Discovery 3. AWS App Mesh 追加のインフラ管理と コストが発生 トラフィック関連メトリクスが 自動で取得されない ECS とは別の 外部コンポーネント管理

Slide 12

Slide 12 text

これまでの ECS サービス間接続における選択肢 1. ALB 2. ECS Service Discovery 3. AWS App Mesh このペインポイントに応えるのが ECS Service Connect 追加のインフラ管理と コストが発生 トラフィック関連メトリクスが 自動で取得されない ECS とは別の 外部コンポーネント管理

Slide 13

Slide 13 text

ECS Service Connect の概要

Slide 14

Slide 14 text

ECS Service Connect によるサービス間接続 Container ECS Service Container Container ECS Service Container

Slide 15

Slide 15 text

ECS Service Connect によるサービス間接続 Container ECS Service Container Container ECS Service Container jawsug.local Cloud Map 名前空間(namespace)を作成

Slide 16

Slide 16 text

ECS Service Connect によるサービス間接続 Container ECS Service Container Container ECS Service Container jawsug.local Cloud Map svc-a svc-b ECS Service Connect として サービス名を登録

Slide 17

Slide 17 text

ECS Service Connect によるサービス間接続 Container ECS Service Container Container ECS Service Container jawsug.local Cloud Map svc-a svc-b svc-b.jawsug.local CloudWatch Metrics ロードバランサ相当の機能 (透過的に存在)

Slide 18

Slide 18 text

ECS Service Connect によるサービス間接続 Container ECS Service Container Container ECS Service Container jawsug.local Cloud Map svc-a svc-b ロードバランサ相当の機能 (透過的に存在) svc-b.jawsug.local CloudWatch Metrics ELB の構築不要・コスト発生なし。 ヘルスチェック、コネクションドレイニング、 503エラー時の自動再試行をサポート ECS と Cloud Map が シームレスに連携 トラフィック関連の メトリクスが自動取得される 代表的なメトリクス例: ・アクティブコネクション数 ・新規コネクション数 ・処理データサイズ (Bytes) ・リクエスト数 ・gRPCリクエスト数 ・HTTPレスポンスコード数 (2XX, 3XX, 4XX, 5XX)

Slide 19

Slide 19 text

ECS Service Connectによるサービス間接続 Container ECS Service Container Container ECS Service Container jawsug.local Cloud Map svc-a svc-b ロードバランサ機能 (透過的に存在) svc-b.jawsug.local ELBの構築不要・コスト発生なし。 ヘルスチェック、コネクションドレイニング、 エラー自動試行をサポート ECSとCloud Mapが シームレスに連携 CloudWatch Metrics 代表的なメトリクス例: ・アクティブコネクション数 ・新規コネクション数 ・処理データサイズ (Bytes) ・リクエスト数 ・gRPCリクエスト数 ・HTTPレスポンスコード数 (2XX, 3XX, 4XX, 5XX)

Slide 20

Slide 20 text

ECS Service Connect 利用時における制約と考慮ポイント

Slide 21

Slide 21 text

ECS Service Connect 利用時における主要な制約と考慮ポイント uデプロイはローリングアップデートのみ uFargate 64bit ARM アーキテクチャの Linux コンテナは未サポート u同一 AWS アカウント・同一リージョンのみ名前空間に所属可能 uスタンドアロンの ECSタスクは構成不可 uECS Service Connect Proxy のリソース考慮

Slide 22

Slide 22 text

デプロイはローリングアップデートのみ ・現時点においては、Blue/Green デプロイメントや外部デプロイが未サポート ・ECS で Blue/Green デプロイメントをマネージドでサポートするのは、 現時点で ELB(ALB/NLB) のみ

Slide 23

Slide 23 text

Fargate 64bit ARM アーキテクチャの Linux コンテナは未サポート ・言い換えれば、Graviton2 対応の Fargate は利用できない ・一方、Dr. Werner Vogels 氏によると、カスタムシリコンチップの利用が 今後増加すると予測しており、何らか対応されるのではないか (と予想している) Tech predictions for 2023 and beyond Usage of purpose-built chips will rapidly increase in 2023. As a result, the pace of innovation will accelerate as workloads take advantage of hardware optimizations that maximize performance, while lowering energy consumption and reducing cost. https://www.allthingsdistributed.com/2022/12/tech-predictions-for-2023-and-beyond.htmlより一部引用

Slide 24

Slide 24 text

同一 AWS アカウント・同一リージョンのみの名前空間に所属可能 VPC ECS Cluster ECS Service VPC ECS Service ECS Service ECS Cluster ECS Service Tokyo Region ECS Service Tokyo Region ECS Service AWS Account A AWS Account A ECS Service ECS Service VPC を跨いだ名前空間の所属は OK (同一 AWS アカウント・同一リージョンの VP C間) ECS クラスターを跨いだ名前空間の所属は OK (同一 AWS アカウント・同一リージョンの ECS クラスター間) リージョンを跨いだ名前空間の所属は NG AWSアカウントを跨いだ名前空間の所属は NG

Slide 25

Slide 25 text

スタンドアロンの ECS タスクは構成不可 その名前の通り、 ECS Service Connect は “ECS Service” に設定されるものであり、 単一の ECS タスクはサポートされない Container ECS Service Container ECS Cluster ECS Task ECS Task ECS Service Connect は未サポート

Slide 26

Slide 26 text

ECS Service Connect Proxy のリソース考慮 ・ECS Service Connect 利用する場合、“ECS Task” が開始されるたびに、 新しいコンテナ(ECS Service Connect Proxy)が自動で追加 ・ECS Service Connect Proxy に対する CPU ユニットとメモリのリソース考慮が必要 App ECS Task App割り当て分 App割り当て分 未割り当て分 CPUユニット: メモリ: 未割り当て分 ・自動追加されるコンテナはカスタマイズ不可 ・コンソール上からも見えない ※内部的には Envoy が利用 ・ECS Service Connect Proxy は未割り当て分リソースを利用 ・AWS の推奨は256CPUユニット、64MiBメモリ ※ピーク時リクエスト量や ECS Service Connect サービス数により、推奨リソースは変わる

Slide 27

Slide 27 text

まとめ

Slide 28

Slide 28 text

まとめ u ECS Service Connect は、これまでの ECS サービス間接続のペインポイントを解消する 新しい通信管理の機能であり、 ECS の設定として提供されるもの u ELB のコスト削減やトラフィック関連メトリクスが取得が可能 u 利用時には Blue/Green デプロイメントや ARM アーキテクチャ Linux コンテナ未対応、 Proxy 分のリソース割当など、デザインにおける制約事項に注意

Slide 29

Slide 29 text

最後に余談 近々、ブログ更新予定なので読んでいただけると嬉しいです🙏 https://iselegant.hatenablog.com/