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
180
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
520
CO2濃度を監視して生産性向上💪
kefi550
0
27
非IaCなAWS環境をCloudFormationでIaC化する
kefi550
2
490
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Designing for Performance
lara
604
68k
Building Applications with DynamoDB
mza
90
6.1k
Designing Experiences People Love
moore
138
23k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
What's in a price? How to price your products and services
michaelherold
243
12k
Done Done
chrislema
181
16k
The Cult of Friendly URLs
andyhume
78
6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
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モード)はデメリットもあるため、本番ではなく開発環境のような ユースケースがおすすめ