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

ECS Service Connectによるサービスの新しいつなぎ方 / A new way to connect services with ECS Service Connect

iselegant
December 05, 2022

ECS Service Connectによるサービスの新しいつなぎ方 / A new way to connect services with ECS Service Connect

iselegant

December 05, 2022
Tweet

More Decks by iselegant

Other Decks in Technology

Transcript

  1. 新井 雅也 M a s a y a A R

    A I msy78 野村総合研究所に所属。 金融業界のお客様に向けたビジネス提案やシステム設計、開発、運用を担当。 好きな技術・サービスは、ECS、Fargate、App Runner、Kubernetes、Golang、Pulumi テックリード / インフラチームリーダー
  2. これまでの ECS サービス間接続における選択肢 ECS Service (Client) ECS Service ? 1.

    ELB によるサービス間接続 2. ECS Service Discovery によるサービス間接続 3. AWS App Mesh によるサービス間接続
  3. ELB によるサービス間接続 Container ECS Service Container ALB Container ECS Service

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

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

    Container Pros: 優れたトラフィック制御、mTLS による暗号化 Cons: ECS とは別の外部コンポーネント管理、トラフィック関連の柔軟な構成に伴う複雑性 Cloud Map 2. サービス登録 1. 設定 App Mesh 1. 設定 3. サービス ディスカバリ
  6. 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 の変更が発生
  7. これまでの ECS サービス間接続における選択肢 1. ALB 2. ECS Service Discovery 3.

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

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

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

    Service Container jawsug.local Cloud Map svc-a svc-b ECS Service Connect として サービス名を登録
  11. 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 ロードバランサ相当の機能 (透過的に存在)
  12. 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)
  13. 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)
  14. ECS Service Connect 利用時における主要な制約と考慮ポイント uデプロイはローリングアップデートのみ uFargate 64bit ARM アーキテクチャの Linux

    コンテナは未サポート u同一 AWS アカウント・同一リージョンのみ名前空間に所属可能 uスタンドアロンの ECSタスクは構成不可 uECS Service Connect Proxy のリソース考慮
  15. 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より一部引用
  16. 同一 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
  17. スタンドアロンの ECS タスクは構成不可 その名前の通り、 ECS Service Connect は “ECS Service”

    に設定されるものであり、 単一の ECS タスクはサポートされない Container ECS Service Container ECS Cluster ECS Task ECS Task ECS Service Connect は未サポート
  18. 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 サービス数により、推奨リソースは変わる
  19. まとめ u ECS Service Connect は、これまでの ECS サービス間接続のペインポイントを解消する 新しい通信管理の機能であり、 ECS

    の設定として提供されるもの u ELB のコスト削減やトラフィック関連メトリクスが取得が可能 u 利用時には Blue/Green デプロイメントや ARM アーキテクチャ Linux コンテナ未対応、 Proxy 分のリソース割当など、デザインにおける制約事項に注意