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
640
CO2濃度を監視して生産性向上💪
kefi550
0
32
非IaCなAWS環境をCloudFormationでIaC化する
kefi550
2
540
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
133
9.2k
Site-Speed That Sticks
csswizardry
5
500
Code Review Best Practice
trishagee
67
18k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
9
760
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
670
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Building Applications with DynamoDB
mza
94
6.3k
A designer walks into a library…
pauljervisheath
205
24k
How GitHub (no longer) Works
holman
314
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
We Have a Design System, Now What?
morganepeng
52
7.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
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モード)はデメリットもあるため、本番ではなく開発環境のような ユースケースがおすすめ