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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mats
July 29, 2020
Technology
1
1.6k
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
2.3k
🦜️🔗LangChain入門 / LangChain 101
mats16
1
680
Supabase - AWS DevDay 2022
mats16
3
2.1k
AWS スタートアップ支援プログラム / AWS Activate
mats16
0
1.3k
AWS Startup ゼミ 2021 秋期講習 / AWS Startup Seminar 2021 Autumn class - AWS Dev Day
mats16
4
2.7k
Unicorns run on AWS
mats16
0
320
AWS Startup tech Meetup Online 6
mats16
0
1.1k
シードスタートアップに知っておいてほしいこと / What seed startups need to know
mats16
0
390
Introduction to AWS App Runner
mats16
0
1.1k
Other Decks in Technology
See All in Technology
男(監査)はつらいよ - Policy as CodeからAIエージェントへ
ken5scal
1
340
LINEヤフーにおけるAI駆動開発組織のプロデュース施策
lycorptech_jp
PRO
0
170
Databricks (と気合い)で頑張るAI Agent 運用
kameitomohiro
0
300
チームメンバー迷わないIaC設計
hayama17
1
1.9k
ソフトウェアアーキテクトのための意思決定術: Create Decision Readiness—The Real Skill Behind Architectural Decision
snoozer05
PRO
23
6.6k
Scrum Fest Morioka 2026
kawaguti
PRO
2
670
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
22k
APMの世界から見るOpenTelemetryのTraceの世界 / OpenTelemetry in the Java
soudai
PRO
0
190
opsmethod第1回_アラート調査の自動化にむけて
yamatook
0
310
OCI技術資料 : 外部接続 VPN接続 詳細
ocise
1
10k
Getting started with Google Antigravity
meteatamel
1
380
[続・営業向け 誰でも話せるOCI セールストーク] AWSよりOCIの優位性が分からない編(2026年2月20日開催)
oracle4engineer
PRO
0
120
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
92
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
My Coaching Mixtape
mlcsv
0
62
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.1k
Why Our Code Smells
bkeepers
PRO
340
58k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Being A Developer After 40
akosma
91
590k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
75
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
180
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
470
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
69
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 で稼働させるべきではなく、 ⼀⽅で中断耐性のあるワークロードに対しては、コスト最適化に⼤きく貢献する