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
ECSのコストのケチり方
Search
kefi550
July 17, 2024
0
200
ECSのコストのケチり方
AWS10分LT会 - vol.4
https://aws-likers.connpass.com/event/322723/
kefi550
July 17, 2024
Tweet
Share
More Decks by kefi550
See All by kefi550
Amazon Pinpoint使ってますか?Amazon PinpointでGmail送信者ガイドラインに対応した話
kefi550
0
590
CO2濃度を監視して生産性向上💪
kefi550
0
31
非IaCなAWS環境をCloudFormationでIaC化する
kefi550
2
510
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
74
9.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.3k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Statistics for Hackers
jakevdp
797
220k
Code Review Best Practice
trishagee
65
17k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Git: the NoSQL Database
bkeepers
PRO
427
64k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
ECSのコストのケチり方 2024/07/17 AWS10分LT会 vol.4 みんなのマーケット株式会社 石橋翔太
自己紹介 名前: いしばし(石橋翔太) Xなど: @kefi550 所属: みんなのマーケット株式会社 の SRE 好きなAWSサービス:
AWSサポート、AWS CloudFormation 2
コストをケチるためにはECS on EC2を使いましょう いくつかコスト削減に関する機能などを紹介します
ケチり1: FargateでなくEC2を使う Fargate 2vCPU, 4GiBメモリ: 0.05056 + 0.01106 = 0.06162USD/hour
EC2 t3.medium 2vCPU, 4GiBメモリ: 0.0544USD/hour https://aws.amazon.com/jp/fargate/pricing/ https://aws.amazon.com/jp/ec2/pricing/on-demand 約15%割高
Fargateの割り当てリソースの下限 Fargateはタスクレベルのcpu, memoryの定義が必須 vCPU, memoryについて有効な組み合わせの中から選択 0.25vCPU, 512MiBメモリが最小の組み合わせ EC2はタスクレベルのcpu, memoryの指定は必須でない 予約リソースを小さく設定できる
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest /developerguide/task-cpu-memory-error.html
小さなタスクを複数起動したい場合のコスト差 0.1vCPU, 256MiBメモリ程あれば十分かなというECSタスクを20個起動する場合 Fargate: 0.25vCPU, 512MiB のタスクを20個 = 0.3081 USD/hour
EC2: t3.medium (2vCPU, 4GiB)の1台で20個のタスクを起動 = 0.0544 USD/hour 512MiB 512MiB 512MiB 512MiB 256MiB 256MiB 256MiB 256MiB 256MiB 256MiB 256MiB 256MiB 512MiB 512MiB 512MiB 512MiB
EC2インスタンスでのタスク起動数の制約 EC2インスタンスへのENIの割り当て上限によってawsvpcモード等では インスタンスあたりの起動できるタスク数に上限がある https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/develo perguide/eni-trunking-supported-instance-types.html ENI trunkingという機能でこの上限緩和ができるが、それでもこれくらい
bridgeモードを使う - ECSのnetwork modeの一つ - タスクごとにENIを作らないの でタスク起動数の制約にかか らない https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide /networking-networkmode-bridge.html
EC2をbridgeモードで使うデメリット - タスクの通信にはインスタンスのENI、SGが使われる - 複数のECSサービスがインスタンスに混在する場合があるため、それら全ECS サービスに必要な全SGをアタッチする必要がある。セキュアでない
ケチり2: Spot Instanceを使う - オンデマンドインスタンスに比べて半額以下
Capacity ProviderでSpotの利用を制御 capacity providerで制御 - spotを使う、使わないサービス - spotの利用割合
ケチり3: Capacity Provider Managed Scalingを使う - タスクの起動状況に合わせてASGをスケーリング - タスク起動時にインスタンスの空きリソースがない場合にスケールアウト -
インスタンスで起動するタスクが無くなったらスケールイン - インスタンスにタスクが残ってるとスケールインされない https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cluster-auto-scaling.html
このようにタスクが停止すると スケールインするが
このようにタスクが停止すると 全インスタンスが残る
ケチり4: Scheduled Scalingを使う - managed scalingではタスクの配置具合によってはインスタンスが多く残ってしまう ことがある - 時刻指定で強制的にスケーリングさせる
- gitブランチごとに検証環境としてECSサービス、タスクなどが起動 - ECSタスクによっては開発時には利用頻度が少ないものも - Fargateはラクだが、利用頻度の少ないECSタスクにも一定のリソースを割り当て る必要があり、積み上がるとそれなりのコストに 当社での運用
当社での運用 - 利用機会が少ないECSタスクは予約リソースを小さくしてインスタンスにギュッと詰 め込む - 複数人が同時にECSタスクを利用してリソース使用が大きくなるとOOM等になる可 能性はある
まとめ - ECS on EC2を使うことでFargateに比べてコストをギュッと圧縮できる - Spot Instance, Managed Scaling,
Scheduled Scalingによってさらにコスト削減 - ECS on EC2(bridgeモード)はデメリットもあるため、本番ではなく開発環境のような ユースケースがおすすめ