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

2021年コンテナ最前線〜今AWSでコンテナホストするならなにが現実解なのか?〜

濱田孝治
October 07, 2021

 2021年コンテナ最前線〜今AWSでコンテナホストするならなにが現実解なのか?〜

AWSにおけるコンテナをホストする手段は、格段に進化を続けています。ECSからはじまり、EKS、Fargate、App Runner、Proton,Lambdaコンテナー。このセッションでは、それら手段を比較し、今あなたが、コンテナをAWS環境にホストするにあたり必要なものを選択するための羅針盤となる情報をお届けします。

濱田孝治

October 07, 2021
Tweet

More Decks by 濱田孝治

Other Decks in Technology

Transcript

  1. 4

  2. 5 ⾃⼰紹介 濱⽥孝治(ハマコー) • CX事業本部 MAD事業部⻑ • Japan APN Ambassador

    2020 • JAWS-UG コンテナ⽀部運営 • 好きなサービス︓ECS, EKS, CloudFormation • 好きな⾔葉「わっしょい」 • @hamako9999 • 好きなゲームタイトル︓Elder Scrolls Online
  3. 7 MAD(Modern Application Development) AWSサービス︓Amazon DynamoDB、Amazon API Gateway、AWS IoT、AWS Step

    Functions、AWS Amplify、AWS AppSync、 AWS Glue、Amazon Kinesis、 Amazon Athena Google Cloudサービス︓ Cloud Firestore、Cloud SQL、 Cloud Pub/Sub Infrastructure as Code︓ AWS CDK、AWS CloudFormation、AWS SAM、 Serverless Framework、 Terraform CI/CD︓ Codeシリーズ、CircleCI、 GitHub Actions
  4. 14 Agenda(当初想定) • 基礎のおさらい • ECR、ECR Public • ECS、EKS、Fargate •

    インフラ最適化 • Savings Plans • Capacity Provider • Graviton Processor • バッチ処理系 • Step Functions + Fargate • AWS Batch • 次世代系 • Proton • App Runner • Lightsail Container • Anywhere系 • EKS Anywhere • ECS Anywhere • まとめ
  5. 15 Agenda(実際しゃべるやつ) • 基礎のおさらい • ECR、ECR Public • ECS、EKS、Fargate •

    インフラ最適化 • Savings Plans • Capacity Provider • Graviton Processor • バッチ処理系 • Step Functions + Fargate • AWS Batch • 次世代系 • Proton • App Runner • Lightsail Container • Anywhere系 • EKS Anywhere • ECS Anywhere • まとめ
  6. 16 Agenda • 基礎のおさらい • ECR、ECR Public • ECS、EKS、Fargate •

    インフラ最適化 • Savings Plans • Capacity Provider • Graviton Processor • バッチ処理系 • Step Functions + Fargate • AWS Batch • 次世代系 • Proton • App Runner • Lightsail Container • Anywhere系 • EKS Anywhere • ECS Anywhere • まとめ
  7. 23 Amazon Elastic Container Registry(ECR)とは • AWSが提供する完全マネージド型のDockerコンテナ レジストリ • ⾃前のコンテナリポジトリの運⽤やインフラ管理が

    不要 • AWSと完全に統合されているので、従来の⽅法 (IAM)でアクセス権の管理が可能 • アクセスするにはAWSアカウントをベースとした認 証情報が必須
  8. 27 ECR Publicの気になるお値段 イメージホスティング • ストレージ $0.10/GB/month • 無料で⽉50GBまで イメージプル(データ転送)

    • AWS認証なし︓500GB/⽉/source ip • AWS認証あり • AWS外 0.09 USD/GB • AWS内 無料 Docker Hub 匿名ユーザ︓ IPアドレスで6時間100回 認証ユーザ︓ ユーザごとに6時間200回
  9. 31 コントロールプレーンとは コンテナの管理をする場所 • 動く場所の管理 • VPC、Subnet、Load Balancer、Security Group •

    コンテナ⽣死の管理 • 監視設定、⾃動復旧 • コンテナ数の管理 • 負荷に応じたコンテナ数のオートスケール
  10. 34 現状の呼ばれ⽅とラベリング例 ECS (on EC2) ECS (on Fargate) EKS (on

    EC2) EKS (on Fargate) ECS EC2 EKS EKS ECS Fargate EC2 Fargate
  11. 36 Amazon Elastic Container Service(ECS)とは AWS完全マネージドのコンテナオーケストレーションツール • 簡単なオートスケール設定 • ロードバランサー統合

    • コンテナのIAM権限管理 • コンテナのセキュリティグループ管理 • CloudWatch メトリクス統合 • CloudWatch Logs統合 • スケジュール実⾏機能
  12. 37 Amazon Elastic Container Service(ECS)とは AWS完全マネージドのコンテナオーケストレーションツール • 簡単なオートスケール設定 • ロードバランサー統合

    • コンテナのIAM権限管理 • コンテナのセキュリティグループ管理 • CloudWatch メトリクス統合 • CloudWatch Logs統合 • スケジュール実⾏機能 元がAWSフルマネージドなサービスのため 他のAWSサービスとの連携が簡単 (EKSと⽐べて)
  13. タスク定義 39 ECSの構造解説(タスク定義、コンテナ定義) EC2 Fargate タスクメモリ タスクCPU or ⽣成 コンテナ定義

    イメージのURI ポートマッピング ヘルスチェック エントリポイント コマンド 作業ディレクトリ 環境変数 ログ設定 docker runで利⽤す るコマンドは⼀通り 利⽤可能
  14. クラスター サービス定義 サービス定義 サービス 41 ECSの構造解説(クラスター、サービス) 元ネタのタスク定義 タスクの数 デプロイ定義 VPC、サブネット

    セキュリティグループ ALB(or NLB)定義 オートスケール設定 タスク タスク タスク タスク ・ ・ ・ ・ タスク 定義 起動 Amazon ECS Application Load Balancer
  15. 45 EKSとは AWSマネージドなKubernetesサービス • 正式名称はAmazon Elastic Container Service for Kubernetes

    • Kubernetes正式準拠 • Kubernetesコミュニティが作成した既存のプラグイ ンやツールを利⽤できる
  16. 46 EKSとは AWSマネージドなKubernetesサービス • 正式名称はAmazon Elastic Container Service for Kubernetes

    • Kubernetes正式準拠 • Kubernetesコミュニティが作成した既存のプラグイ ンやツールを利⽤できる 元がオープンソースプロダクトなため、 Kubernetes⽤に開発されたツールを 広く使うことができる
  17. 51 Fargateの今 GA後間もない2018年に⽐べてできることは格段に増えた →現在では確実にEC2に⽐べてファーストチョイス やりたいこと 2018年初頭 現在 コンテナ内へのログイン 基本無理 ECS

    Exec ログドライバ awslogs (CloudWatch Logsのみ) Firelensでどこでも出せる EFS 利⽤不可 利⽤可能 スポット系 利⽤不可 Capacity Provider GPUインスタンス 利⽤不可 利⽤不可 Windowsコンテナ 利⽤不可 利⽤不可
  18. 54 Agenda • 基礎のおさらい • ECR、ECR Public • ECS、EKS、Fargate •

    インフラ最適化 • Savings Plans • Capacity Provider • Graviton Processor • バッチ処理系 • Step Functions + Fargate • AWS Batch • 次世代系 • Proton • App Runner • Lightsail Container • Anywhere系 • EKS Anywhere • ECS Anywhere • まとめ
  19. 58 Savings Plansとは︖ • 1年または3年の期間で⼀定量のコンピューティングの利 ⽤を前提に割引できる仕組み。契約量までは、使⽤料⾦が 割引される • Compute Savings

    Plansであれば、FargateやLambdaに も割引が適⽤可能 • オハイオリージョン、3年、全額払いで、52%OFF︕︕ • 構成を⼀切変更すること無く対応可能(コンソールでのポ チポチのみ)
  20. 64 Capacity Providerとは • ECSにおけるタスク実⾏のインフラをより柔軟に設 定する仕組み • 元々ECS on EC2でもスポットインスタンスを活⽤で

    きていたが、それをもっと柔軟に簡素にできるよう になった • それぞれで使い⽅がぜんぜん違う • ECS on EC2 • ECS on Fargate
  21. 65 Capacity Providerの構造(EC2) Auto Scaling group Capacity Provider Auto Scaling

    group Capacity Provider Auto Scaling group Capacity Provider Capacity Provider Strategy ・ ・ ・ • VPC • サブネット • AMI • インスタンスタイプ • オンデマンド or スポット ECS Cluster Auto Scaling group
  22. 66 Capacity Providerの構造(Fargate) FARGATE Capacity Provider FARGATE_SPOT Capacity Provider Capacity

    Provider Strategy ECS Cluster Fargateで登録できるCapacity Provider はFARGATEとFARGATE_SPOTのみ
  23. 69 Spot系利⽤における注意点 中断への対応 • スポットインスタンスでは、事前に ECS_ENABLE_SPOT_INSTANCE_DRAINING=trueに設定 • コンテナ⾃体もSIGTERM発⽣時にGraceful Shutdownができ るように設計

    リソースの再確保 • 基本的にECS側で適切なサービス設定をしておけば、⾃動的にタ スクが起動するが、即時のリソース確保が確約されるわけではな い
  24. 70 Spot系を実際導⼊するときのやりやすさ Fargate Spotを開発環境にいれる • 何も考えずに、該当サービスの全タスクをFargate Spotにしてしまう のもあり • 定期的に落ちるのも開発環境なら許容できる場合もある

    • コンテナをイミュータブルにしていつ落ちても問題なく使える状態を 再現する(Graceful Shutdown含めて)にも有⽤ 本番環境への展開は⼗分な検証をもって • 概念が多く、ECS on EC2の場合は特に複雑 • オートスケールFargateサービスを使っているのであれば、スケーリ ングタスクをFargate Spotにするのが⽐較的取り組みやすい
  25. 75 Graviton Processorとは︖ AWSが独⾃に作成したARMアーキテクチャのプロセッサ • 第⼀世代はAmazon EC2 A1インスタンスとして動作 • 第⼆世代のGraviton2プロセッサは第⼀世代に⽐べて⼤幅に改良されたパフォーマン

    スを発揮 x86ベースインスタンスよりハイコストパフォーマンス • 最⼤40%のパフォーマンス向上 • 20%安い • 電⼒あたりのパフォーマンス向上(2〜3.5倍) 幅広いエコシステムをサポート • Amazon Linux2, Red Hat, SUSE, Ubuntu, その他Linux • ECS, EKS, ECR, CodeBuild, CodeCommit, CodePipeline, CodeDeploy, CloudWatch
  26. 81 コンテナレジストリへのプッシュ 実⾏⽅法はそれぞれのマニュアルを参照 • Docker Hub︓(Multi-arch build and images, the

    simple way - Docker Blog) • ECR︓(amazon-ecr-user-guide/docker-push-multi- architecture-image.md) • ECR Public︓(Pushing a multi-architecture image - Amazon ECR Public)
  27. 91 Agenda • 基礎のおさらい • ECR、ECR Public • ECS、EKS、Fargate •

    インフラ最適化 • Savings Plans • Capacity Provider • Graviton Processor • バッチ処理系 • Step Functions + Fargate • AWS Batch • 次世代系 • Proton • App Runner • Lightsail Container • Anywhere系 • EKS Anywhere • ECS Anywhere • まとめ
  28. 93 AWS App Runnerとは • 2021年5⽉18⽇にリリースされた、AWSの新しいコ ンテナホスティング環境(フルマネージド型) • ECSでもEKSでもFargateでもない、完全新規の環境 •

    様々なAWSリソースをユーザーから完全に隠蔽する ことで、開発者がコンテナのホスティングに注⼒す ることを意図したサービス
  29. 96 AWS App Runnerでできること • オートスケール設定(同時実⾏数、最⼤/最⼩サイ ズ) • カスタムドメイン(含証明書管理) •

    ロギング(CloudWatch Logs) • CI/CD(コンテナ or コードベース) • 監視(CloudWatch Alarm)
  30. 97 AWS App Runnerでできないこと • VPCリソースへのアクセス • AuroraなどVPCが必須なサービスに通信する⽅法が無 い •

    ロードマップに載っている • WAFが利⽤できない • ALBも⾒えないのでWAFも使えない • ロードマップに載っている
  31. 99 Agenda • 基礎のおさらい • ECR、ECR Public • ECS、EKS、Fargate •

    インフラ最適化 • Savings Plans • Capacity Provider • Graviton Processor • バッチ処理系 • Step Functions + Fargate • AWS Batch • 次世代系 • Proton • App Runner • Lightsail Container • Anywhere系 • EKS Anywhere • ECS Anywhere • まとめ
  32. 101 Amazon ECS Anywhereとは • ⼀般提供開始︓2021年5⽉27⽇ • ECSのうちコントロールプレーンはAWS環境で利⽤ し、データプレーンをAWSの外側(いわゆるオンプ レミス)でホストすることが可能

    • 無料で使える(︕)ECSオーケストレーターの機能 を、コンテナ実⾏環境に関わらず展開することで、 運⽤上のオーバーヘッドを無くす
  33. 104 Amazon ECS Anywhereのユースケース フルマネージドなコントロールプレーンの利⽤ • 基本的に落ちないECSコントールプレーンをだいたい無料で利⽤可能 • AWS、オンプレミス、Google Cloudなどで、⼀環したコンテナオー

    ケストレーションを実現可能 エッジ環境でのデータ処理 • クラウドに持っていくには⼤変な既存の⼤量データ(TB以上)をエッ ジ領域で処理することで、クラウド課⾦や処理実⾏中のレイテンシー を削減 既存環境からの移⾏ • 既存のオンプレミス環境を利⽤しながら、ECSを導⼊することで導⼊ の⼿間を減らしながら、将来のAWSへの移⾏を準備する
  34. 105 Amazon ECS Anywhereの実⾏⽅法 1.ECSクラスターの作成 • ネットワーキングのみで作成 2.クラスター専⽤アクティベーションキーの取得 • ECSクラスターのExternalインスタンス登録ボタンから、専⽤

    コマンドを取得 3.Externalインスタンスの登録 • コマンドにはアクティベーションコードが含まれており、イン スタンスがインターネット接続できる状態になっていれば、そ のコマンドを実⾏するだけで、クラスターにインスタンスとし て登録される
  35. 106 Amazon ECS Anywhereのリファレンス Amazon VPC と接続可能なおうち Amazon ECS Anywhere

    クラスターの構築 | Amazon Web Services ブログ Amazon ECS Anywhere のよくある質問– ア マゾン ウェブ サービス Getting Started with Amazon ECS Anywhere – Now Generally Available | AWS News Blog
  36. 109 Amazon EKS Anywhereとは • ⼀般提供開始︓2021年9⽉8⽇ • Amazon EKSのための新しいデプロイオプション •

    AWS関係ないところ(オンプレミスだけ)での利⽤ が可能 • EKS Distroを利⽤ • AWSが開発したKubernetesディストリビューション • EKS Connectorを利⽤することで、全ての Kubernetesクラスターを確認可能
  37. 115 Amazon EKS Anywhereの実⾏⽅法 1.EKS Anywhereのインストーラダウン ロード 2.EKS Anywhereクラスタの検査 •

    アップグレード、スケーリング、ネットワーク、リポジト リ統合をテスト 3.EKS Connectorのインストール • EKSコンソールを通じて、全ての管理対象Kubernetesクラ スターを表⽰し検査
  38. 119 Amazon EKS Anywhereのリファレンス Amazon EKS Anywhere ̶ オンプレミス で

    Kubernetes クラスターの作成と管理が 広く利⽤可能になりました | Amazon Web Services ブログ Amazon EKS Connector - Amazon EKS
  39. 122 AWS コンテナ関連サービスの選び⽅(基本) App Runnerを触ったこ とがある? App Runnerを触って何 ができるか理解する No

    Yes App Runnerでコンテナ ワークロードの要件を 満たしているか? App RunnerでPOCを 実施、問題ないか? App Runnerで 本番運用する ECS on Fargateがコン テナワークロードの要 件を満たしているか? Yes No ECS on Fargateで 本番運用する Kubernetesのエコシス テムを利用する必要が あるか? EKS on EC2/Fargateで 本番運用する No Yes No Yes Yes 他の選択肢を探す (ECS on EC2など) No