Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Capacity Providers をもっと身近に / Introduction of Ca...
Search
mats
July 29, 2020
Technology
1
1.5k
Capacity Providers をもっと身近に / Introduction of Capacity Providers
2020/07/29 に行われた「夏の AWS コンテナ祭り with Amazon ECS」で使った資料です。
mats
July 29, 2020
Tweet
Share
More Decks by mats
See All by mats
「生成系AI」と「ソフトウェアライセンス」の今 / Generative AI and OSS License
mats16
4
1.8k
🦜️🔗LangChain入門 / LangChain 101
mats16
1
630
Supabase - AWS DevDay 2022
mats16
3
1.9k
AWS スタートアップ支援プログラム / AWS Activate
mats16
0
1.2k
AWS Startup ゼミ 2021 秋期講習 / AWS Startup Seminar 2021 Autumn class - AWS Dev Day
mats16
4
2.5k
Unicorns run on AWS
mats16
0
280
AWS Startup tech Meetup Online 6
mats16
0
1k
シードスタートアップに知っておいてほしいこと / What seed startups need to know
mats16
0
360
Introduction to AWS App Runner
mats16
0
1k
Other Decks in Technology
See All in Technology
人に寄り添うAIエージェントとアーキテクチャ #BetAIDay
layerx
PRO
1
190
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
1.1k
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
1
2k
마라톤 끝의 단거리 스퍼트: 2025년의 AI
inureyes
PRO
1
200
ビジネス文書に特化した基盤モデル開発 / SaaSxML_Session_2
sansan_randd
0
180
生成AI時代におけるAI・機械学習技術を用いたプロダクト開発の深化と進化 #BetAIDay
layerx
PRO
0
120
Gemini in Android Studio - Google I/O Bangkok '25
akexorcist
0
100
風が吹けばWHOISが使えなくなる~なぜWHOIS・RDAPはサーバー証明書のメール認証に使えなくなったのか~
orangemorishita
7
1.3k
Microsoft Learn MCP/Fabric データエージェント/Fabric MCP/Copilot Studio-簡単・便利なAIエージェント作ってみた -"Building Simple and Powerful AI Agents with Microsoft Learn MCP, Fabric Data Agent, Fabric MCP, and Copilot Studio"-
reireireijinjin6
1
190
Vision Language Modelと自動運転AIの最前線_20250730
yuyamaguchi
2
880
[TechNight #91] Oracle Database 最新パフォーマンス分析手法
oracle4engineer
PRO
4
300
2025-07-31: GitHub Copilot Agent mode at Vibe Coding Cafe (15min)
chomado
2
280
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
For a Future-Friendly Web
brad_frost
179
9.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Unsuck your backbone
ammeep
671
58k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Transcript
© 2020, Amazon Web Services, Inc. or its Affiliates. Kazuki
Matsuda @mats16k Startup Solutions Architect | Amazon Web Services Japan Capacity Providers をもっと⾝近に 夏のAWSコンテナ祭り with Amazon ECS #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Kazuki
Matsuda @mats16k Startup Solutions Architect Amazon Web Services Japan --- インターネット広告代理店(のアドサーバ作っている部⾨)でインフラエンジニアに ➡ アドテク系スタートアップ⼆⼈⽬のエンジニア(SRE、アプリ開発、情シス、データエンジニア、採⽤) ➡ AWS でスタートアップ⽀援 & コンテナのスペシャリスト AWS Fargate / AWS Lambda あたりが好きです 最近は AWS Amplify と Amazon Chime SDK がイチオシ #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. アジェンダ
• Capacity Providers って? • Capacity Providers ないとき • Capacity Providers あるとき • Capacity Providers の細かい話 • まとめ #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers って? #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Amazon
ECS Capacity Providers (Dec 3, 2019〜) • Capacity = • Provide = タスク(コンテナ)の配置先を決定するための新しい⽅法 タスクの配置先の柔軟なコントロールが可能になる 例えば、60%はオンデマンドで残りはスポット など • Capacity = タスク(コンテナ)を配置する先のコンピューティングリソース • つまり、EC2 や Fargate のこと • Provide = コンテナの実⾏に必要な量を調達 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers ないとき
© 2020, Amazon Web Services, Inc. or its Affiliates. これまでの
ECS クラスターのスケーリング(その1) 基本的に EC2 の負荷の増⼤を起点にスケールするのでリアクティブ コンテナで動いているワークロード全体の状態を⾒ていない EC2 Auto Scaling Group ECS Cluster ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. これまでの
ECS クラスターのスケーリング(その2) よりコンテナの動きに連動するメトリクスを⾒てはいるが、クラスタ全体のメトリクス であるため、復数のワークロードが共存する場合に適切に機能しないことも EC2 Auto Scaling Group ECS Cluster • Cluster • Cluster ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers 登場前の課題 • コンテナのスケール前に EC2 をスケールさせる必要がある • コンテナをスケール出来る余剰を残しておく必要がある • コスト最適化の観点で不利 • 最⼩値を0にすることが出来ない • 復数の AutoScaling Group を扱う際の制御が複雑 • スケーリングまわりの設定が ECS から独⽴しており、エンジニアによっては 設定が複雑に感じることも • 込み⼊った要件の際は細かく設定できるので、いい⾯もある • そもそもコンテナと EC2 両⽅のスケーリングを考慮するのがメンドクサイ AWS Fargate で解決可能 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers あるとき #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Capacity Providers による ECS クラスターのスケーリング コンテナワークロードの状態を反映したメトリクスを元にスケーリング EC2 Auto Scaling Group ECS Cluster • Capacity Provider Reservation ECS Tasks Capacity Provider が⾃動的に設定 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers による ECS クラスターのスケーリング • 復数の Capacity Provider を利⽤ することも可能 • 戦略に基づいてタスクを配置する (詳細は後述) EC2 Auto Scaling Group EC2 Auto Scaling Group CapacityProvider A CapacityProvider B ECS Tasks 4 weight: 1 weight: 1 ECS Cluster #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers による ECS クラスターのスケーリング • 復数の Capacity Provider を利⽤ することも可能 • 戦略に基づいてタスクを配置する (詳細は後述) • 例えば、オンデマンド 60% スポットインスタンス 40% • EC2 ⾃体の⽐率ではなく、 ECS Task の配置先の⽐率 EC2 Auto Scaling Group EC2 Auto Scaling Group CapacityProvider A CapacityProvider C ECS Tasks 10 weight: 3 weight: 2 ECS Cluster Spot Instance #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Providers の細かい話 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Amazon
ECS Capacity Providers で登場するリソースや機能 • Capacity Provider • Capacity Provider Strategy • Capacity Provider Reservation • Managed Scaling #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider • ECS とコンテナ実⾏基盤(AutoScaling Group、Fargate)の間のインターフェー スとしてリソースの抽象化を⾏う • AutoScaling Group や Fargate という グループを1つの Capacity Provider と 定義して、クラスタに紐づけて利⽤ { "autoScalingGroupArn": "string", "managedScaling": { "status": "ENABLED"|"DISABLED", "targetCapacity": integer[1-100], "minimumScalingStepSize": integer, "maximumScalingStepSize": integer }, "managedTerminationProtection": "ENABLED"|"DISABLED" } ECS Cluster EC2 Auto Scaling Group CapacityProvider - Targaet Capacity : 60 - Managed Scaling : True - Managed Termination Protection : True #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy • タスクをどの Capacity Provider に 配置するかを決定する「戦略」 • Task 実⾏や Service を作成する際に 指定する • base と weight を使⽤して、複数の Capacity Provider にまたがって配置 することも可能 Default Capacity Provider Strategy • ECS クラスタがデフォルトで利⽤する Capacity Provider Strategy • Capacity Provider Strategy を指定せずに Task を実⾏した際に利⽤される ECS Cluster EC2 Auto Scaling Group EC2 Auto Scaling Group CapacityProvider A CapacityProvider B ECS Tasks ECS Tasks weight: 2 weight: 1 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy • weight : 実⾏するタスクの総数に対する指定 した Capacity Provider での相対的な割合 • base : その Capacity Provider での最⼩実⾏ タスク数 ECS Cluster EC2 Auto Scaling Group EC2 Auto Scaling Group CapacityProvider A CapacityProvider B ECS Tasks 6 weight: 5 weight: 1 aws ecs run-task --cluster FargateCluster --task-definition task-def-family:revision --count 6 --capacity-provider-strategy capacityProvider=CapacityProviderA,weight=5 capacityProvider=CapacityProviderB,weight=1 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy • weight : 実⾏するタスクの総数に対する指定 した Capacity Provider での相対的な割合 • base : その Capacity Provider での最⼩実⾏ タスク数 ECS Cluster aws ecs run-task --cluster FargateCluster --task-definition task-def-family:revision --count 6 --capacity-provider-strategy capacityProvider=CapacityProviderA,weight=2,base=2 capacityProvider=CapacityProviderB,weight=1 EC2 Auto Scaling Group EC2 Auto Scaling Group CapacityProvider A CapacityProvider B ECS Tasks 6 base: 2 weight: 1 weight: 1 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy with AWS Fargate • Fargate 利⽤時も基本的な考え⽅は同じ • Fargate Spot は別の CapacityProvider で扱う 注意点 ※ 2020-07-29 時点 • 特定の Capacity Provider で起動できない場合 にフォールバックすることは出来ない • AutoScaling Group の Capacity Provider と 混在させて Storategy を組むことは出来ない ECS Cluster AWS Fargate AWS Fargate Spot CapacityProvider A CapacityProvider B ECS Tasks ECS Tasks base: 1 weight: 1 weight: 1 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy with AWS Fargate • Fargate 利⽤時も基本的な考え⽅は同じ • Fargate Spot は別の CapacityProvider で扱う 注意点 ※ 2020-07-29 時点 • 特定の Capacity Provider で起動できない場合 にフォールバックすることは出来ない • AutoScaling Group の Capacity Provider と 混在させて Storategy を組むことは出来ない ECS Cluster AWS Fargate CapacityProvider A CapacityProvider C ECS Tasks base: 1 weight: 1 weight: 1 EC2 AutoScaling Group #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy with AWS Fargate • Fargate 利⽤時も基本的な考え⽅は同じ • Fargate Spot は別の CapacityProvider で扱う 注意点 ※ 2020-07-29 時点 • 特定の Capacity Provider で起動できない場合 にフォールバックすることは出来ない • AutoScaling Group の Capacity Provider と 混在させて Storategy を組むことは出来ない ECS Cluster AWS Fargate CapacityProvider A CapacityProvider C ECS Tasks EC2 AutoScaling Group ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Strategy #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Reservation Capacity Provider EC2 Auto Scaling Group ECS Cluster • Capacity Provider Reservation ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider Reservation クラスター内のすべてのコンテナワークロードが必要とする クラスターリソースの割合を表す新しいメトリクス 既存 / 新規 / 変更中 の Task が予約するキャパシティの予約率 このメトリクスを利⽤したスケーリングポリシーで Cluster Auto Scaling を実現している • 100が上限 → この場合リソースを使い切るまでスケールしない • ⼩さい値にする → 早めにスケールアウトし、急なスパイクに強くする #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Managed
Scaling #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Managed
Scaling Auto Scaling グループのキャパシ ティープロバイダー⽤のマネージド型 スケーリングを有効または無効にでき ます。マネージド型スケーリングが有 効になっていると、Amazon ECS が Auto Scaling グループのスケールイン およびスケールアウトのアクションを 管理します。 AutoScaling group Amazon ECS ECS が ASG を 直接制御 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Managed
Scaling Capacity Provider EC2 Auto Scaling Group ECS Cluster • Capacity Provider Reservation ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Managed
Scaling Capacity Provider EC2 Auto Scaling Group ECS Cluster • Capacity Provider Reservation ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. まとめ
#ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider の実体 • CloudWatch に専⽤のメトリクスを作る • Strategy に基づいてタスク実⾏状況 (コンテナオーケストレーション)を メトリクスに反映する Capacity Provider EC2 Auto Scaling Group ECS Cluster • Capacity Provider Reservation ECS Tasks #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Capacity
Provider の実体 Capacity Provider EC2 Auto Scaling Group ECS Cluster • Capacity Provider Reservation ECS Tasks • Managed Scaling を有効にすると、Alarm と Scaling Policy が設定される • Alarm と Scaling Policy の設定変更は Capacity Provider からのみ⾏える #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. まとめ
• Capacity Providers のコアはタスク配置時(コンテナオーケストレーション) の Strategy の考慮とメトリクスコントロール • 基本的な仕組みは CloudWatch や EC2 Auto Scaling のものを利⽤している • Capacity Provider 側で Managed Scaling の設定をするだけで、 CloudWatch Alarm や EC2 Auto Scaling の設定が可能 #ECSMatsuri
© 2020, Amazon Web Services, Inc. or its Affiliates. Thank
you! Kazuki Matsuda @mats16k
© 2020, Amazon Web Services, Inc. or its Affiliates. Appendix
© 2020, Amazon Web Services, Inc. or its Affiliates. AWS
Fargate Spot - 柔軟な設定の選択肢 ‒ 50 のCPU/メモリ設定から - 通常の Fargate の価格と⽐較して 最⼤70% の割引 Price 1 vCPU $0.01553623 1 GB Mem $0.00169927 AWS Fargate Pricing https://aws.amazon.com/fargate/pricing/ Price 1 vCPU $0.05056 1 GB Mem $0.00553 Fargate Spot Standard Fargate ※ 上記はTokyoリージョン 2020-07-29 時点での料⾦
© 2020, Amazon Web Services, Inc. or its Affiliates. AWS
Fargate Spot AWS にキャパシティが必要になったと き、Fargate Spot で稼働するタスクは 2分前の通知とともに中断される - ECS Task State Change として Amazon EventBridge にイベント送信 - SIGTERM シグナルが実⾏中のタスクに送信 クリーンアップアクションを実⾏する には、コンテナ内から SIGTERM シグナルを受信する必要がある Task の中断について AWS Fargate Spot Spot 中断 Amazon EventBridge Task Container Container Task Container Container Service ECS Task State Change として イベント送信 SIGTERM シグナル が実⾏中のタスク に送信 中断が許容できないワークロードを Fargate Spot で稼働させるべきではなく、 ⼀⽅で中断耐性のあるワークロードに対しては、コスト最適化に⼤きく貢献する