Capacity Providerとは?ECSの次世代スケーリング戦略

C47bda32c8455a59471cd7e19c32c074?s=47 濱田孝治
December 11, 2019

Capacity Providerとは?ECSの次世代スケーリング戦略

re:Invent2019で発表されたECSのCapacity Providerについて喋りました。今までのオートスケーリング戦略を柔軟に組み合わせることができ、さらにFargateの場合は非常にお安くタスクを起動できるFARGATE_SPOTも利用できるため、今後のECSのワークロードにおいて検討必須の素晴らしい機能です。

C47bda32c8455a59471cd7e19c32c074?s=128

濱田孝治

December 11, 2019
Tweet

Transcript

  1. ECSの 次世代スケーリング戦略 濱⽥孝治(ハマコー) Capacity Provider

  2. 2 @hamako9999 ハマコー

  3. 3 #cmregrowth

  4. 4 今⾃分が Capacity Providerについて お届けしたい⽅とは︖

  5. 5 Capacity Providerをお届けしたい⽅々 既にECSを活⽤されている⽅ スケーリング戦略を根本から⾒直しできるかも︕

  6. 6 Capacity Providerをお届けしたい⽅々 既にECSを活⽤されている⽅ スケーリング戦略を根本から⾒直しできるかも︕ ECSをFargateで使っている⽅ Fargate Spotの安さと使いやすさにびっくり︕

  7. 7 Capacity Providerをお届けしたい⽅々 既にECSを活⽤されている⽅ スケーリング戦略を根本から⾒直しできるかも︕ ECSをFargateで使っている⽅ Fargate Spotの安さと使いやすさにびっくり︕ コンテナまだ使ってない⽅ ごっつええ感じのがでたと頭の⽚隅に

    おいといてください︕ ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_ \/ /
  8. 8 Agenda • Capacity Providerとは • ECS on EC2の場合 •

    ECS on Fargateの場合 • Capacity Provider Strategyによるタスク配分戦略 • Capacity Providerのユースケース • あなたにも今すぐ10分でできるFARGATE_SPOTの 活⽤⽅法
  9. 9 Capacity Providerとは︖

  10. 10 Capacity Providerとは • ECSにおけるタスク実⾏のインフラをより柔軟に設 定する新しい仕組み • ECSの以下の両⽅で利⽤可能 • ECS

    on EC2 • ECS on Fargate
  11. 11 Capacity Providerとは 名称 特徴 Capacity provider ECSのタスクを実⾏するインフラを決定する ・EC2︓Auto Scaling

    Group ・Fargate︓FARGATE, FARGATE SPOT Capacity provider strategy 複数のCapacity providerの組み合わせ⽅ (最⼩タスク数、タスク数⽐率)を決定する
  12. 12 ECS on EC2の場合

  13. 13 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
  14. 14 Capacity Providerの作り⽅(EC2) ECS Cluster 起動順序 • ECS Cluster作成

  15. 15 Capacity Providerの作り⽅(EC2) ECS Cluster 起動順序 • ECS Cluster作成 •

    Auto Scaling group作成 Auto Scaling group
  16. 16 Capacity Providerの作り⽅(EC2) ECS Cluster 起動順序 • ECS Cluster作成 •

    Auto Scaling group作成 • Capacity Provider作成 Auto Scaling group Capacity Provider
  17. 17 Capacity Providerの作り⽅(EC2) ECS Cluster 起動順序 • ECS Cluster作成 •

    Auto Scaling group作成 • Capacity Provider作成 • タスク実⾏、もしくはサービス作成 Auto Scaling group Capacity Provider ECS Tasks
  18. 18 Capacity Providerの作り⽅(EC2) ECS Cluster 起動順序 • ECS Cluster作成 •

    Auto Scaling group作成 • Capacity Provider作成 • タスク実⾏、もしくはサービス作成 • EC2インスタンス起動 • タスクの配置 Auto Scaling group Capacity Provider EC2 Instances ECS Tasks
  19. 19 ECS on Fargateの場合

  20. 20 Capacity Providerの構造(Fargate) FARGATE Capacity Provider FARGATE_SPOT Capacity Provider Capacity

    Provider Strategy ECS Cluster Fargateで登録できるCapacity Provider はFARGATEとFARGATE_SPOTのみ
  21. 21 FARGATE_SPOTとは • EC2におけるスポットインスタンスのようにスポッ トでFARGATEを使う仕組み • オンデマンドとは違うので、リージョンやAZでの利 ⽤状況に応じて突如終了される • Task

    State Change Events発⾏後SIGTERM • お値段70%OFF(⼀律)
  22. 22 FARGATE_SPOT参照記事 https://dev.classmethod.jp/cloud/aws/fargate-spot-detail/

  23. 23 Capacity Providerの作り⽅(Fargate) ECS Cluster 起動順序 • ECS Cluster作成

  24. 24 Capacity Providerの作り⽅(Fargate) ECS Cluster 起動順序 • ECS Cluster作成 •

    Capacity Provider作成 Capacity Provider
  25. 25 Capacity Providerの作り⽅(Fargate) ECS Cluster 起動順序 • ECS Cluster作成 •

    Capacity Provider作成 • タスク実⾏、もしくはサービス作成 • タスクの配置 Capacity Provider ECS Tasks
  26. 26 Capacity Provider Strategyによる タスク配分戦略

  27. 27 Capacity Provider Strategyとは • 複数のCapacity Providerの組み合わせ⽐率を決定 • Base︓最⼩タスク数(1つのみ指定) •

    注意︓run-taskのみ有効、create serviceでは無効(将来対応 予定) • Weight︓タスク数⽐率
  28. 28 Capacity Provider Strategyの詳細検証記事 https://dev.classmethod.jp/cloud/aws/fargate-spot-task-count/

  29. 29 Capacity Providerの ユースケース

  30. 30 ユースケース1︓オンデマンドandスポット • オンデマンドとスポットの⽐ 率を1:1で指定 • FARGATE_SPOTが起動する限 りは、2倍の性能を1.3 倍のコストで利⽤可能

  31. 31 ユースケース2︓AZのバランシング AZのバランス⽐率を全て同じに する CP1:Base=0, Weight=1 CP2:Base=0, Weight=1 CP3:Base=0, Weight=1

    これにより、Auto Scaling groupがスケールするとき も、タスクのリバランシン グが不要 ECS Cluster Auto Scaling group (AZ1) Capacity Provider:CP1 Auto Scaling group (AZ2) Capacity Provider:CP2 Auto Scaling group (AZ3) Capacity Provider:CP3
  32. 32 あなたにも今すぐ10分できる FARGATE_SPOTの活⽤⽅法

  33. 33 FARGATE_SPOTの活⽤⽅法 1. みなさんの開発環境のECSクラスターのCapacity Providerを以下の設定にする • FARGATE_SPOTのみ 2. そのクラスターは全てFARGATE_SPOTでタスクが 起動する

    3. 落ちない限りずっと7割引で使える︕
  34. 34 FARGATE_SPOTって落ちるでしょ︖ いくら開発環境だからってめんどくさくない︖ しかし

  35. 35 FARGATE_SPOTの活⽤⽅法 FARGATE_SPOTのタスク10個が46時間⼀つも落ちてない

  36. 36 FARGATE_SPOT、使い放題やん…!! ( ゚д゚) ガタッ / ヾ __L| / ̄ ̄ ̄/_ \/

    / ※恐らく今だけ
  37. 37 まとめ • ECSのタスク数を⾮常に柔軟に設定できるCapacity Providerがリリース • はっきり⾔って分かりづらい(触らないとわからな い) • スケーリング戦略を低コストで実現できる可能性⼤

    • 開発環境でFARGATE_SPOTから使ってみよう︕
  38. 38 皆さんのECS運⽤が さらに安く良くなることを願って