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
節約は技術!削減は芸術!何より必要なものは覚悟!
Search
Masaya Hayashi
February 01, 2024
Technology
6
6.9k
節約は技術!削減は芸術!何より必要なものは覚悟!
第1回 AWSコスト削減 天下一武道会
https://no1.connpass.com/event/305664/
Masaya Hayashi
February 01, 2024
Tweet
Share
More Decks by Masaya Hayashi
See All by Masaya Hayashi
QAEが生成AIと越える、ソフトウェア開発の境界線
rinchsan
0
1k
全部AI、全員Cursor、ドキュメント駆動開発 〜DevinやGeminiも添えて〜
rinchsan
12
6.7k
VPoEキャリア(へ|から)のマイルストーン 〜先週の質問への回答を添えて〜
rinchsan
1
260
Four Keysだけじゃ足りなくない? 〜俺たちだけのFour Keysを探して〜
rinchsan
5
7k
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
4
1.2k
QAエンジニアってスクラムで何をすればいいの?
rinchsan
2
2.7k
CTOって何をすればいいの?
rinchsan
0
700
AWS月額利用料を$137,000→$87,000に削減して信頼性に投資した話
rinchsan
8
4.3k
フロー効率を重視して「2年半でエンジニア2名→35名」の急拡大組織で高い生産性を実現した話
rinchsan
22
14k
Other Decks in Technology
See All in Technology
QAセントラル組織が運営する自動テストプラットフォームの課題と現状
lycorptech_jp
PRO
0
310
プログラミング言語を書く前に日本語を書く── AI 時代に求められる「言葉で考える」力/登壇資料(井田 献一朗)
hacobu
PRO
0
110
CloudFormationコンソールから、実際に作られたリソースを辿れるようになろう!
amixedcolor
0
110
Databricks Free Editionで始めるMLflow
taka_aki
0
870
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
2
190
技術の総合格闘技!?AIインフラの現在と未来。
ebiken
PRO
0
240
決済システムの信頼性を支える技術と運用の実践
ykagano
0
370
どうなる Remix 3
tanakahisateru
2
350
Flutter DevToolsで発見! 本番アプリのパフォーマンス問題と改善の実践
goto_tsl
1
160
Introducing RFC9111 / YAPC::Fukuoka 2025
k1low
1
150
Black Hat USA 2025 Recap ~ クラウドセキュリティ編 ~
kyohmizu
0
490
隙間ツール開発のすすめ / PHP Conference Fukuoka 2025
meihei3
0
240
Featured
See All Featured
Making Projects Easy
brettharned
120
6.4k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The Cost Of JavaScript in 2023
addyosmani
55
9.2k
How to train your dragon (web standard)
notwaldorf
97
6.4k
KATA
mclloyd
PRO
32
15k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Documentation Writing (for coders)
carmenintech
76
5.1k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Transcript
2024/02/01 第1回 AWSコスト削減 天下一武道会 節約は技術!削減は芸術! 何より必要なものは覚悟! @rinchsan
今日のキーワード
ボトルネックから潰す 「覚悟」を持つ 今日のキーワード
目次 プロダクトの急成長 1 コスト削減もボトルネックから 2 いろいろなコスト削減 3 おまけ 4
CTO @SODA inc. ◦ 2020年10月に入社 ◦ Webエンジニア → VPoE(2022/01) →
CTO(2023/10) ⇧⇧⇧ Backend Engineer @CyberAgent ◦ 2019年新卒入社 バックエンドエンジニア ◦ Go / AWSでサービス開発 Masaya Hayashi - @rinchsan X@rinchsan
プロダクトの急成長 1
鑑定付き 利用者数 No.1 スニーカー・トレカ フリマアプリ
MAU リクエスト数 デプロイ頻度 AWS月額利用料 プロダクトの急成長
3年で 100万人 → 500万人 MAU プロダクトの急成長
負荷スパイク(人気スニーカー発売など) 1万〜2万 rps リクエスト数 プロダクトの急成長
Monthlyで 60回 〜 90回 Dailyで 3回 〜 4.5回 デプロイ頻度 プロダクトの急成長
2020/02〜2022/08で $43,000 → $146,000 AWS月額利用料 プロダクトの急成長
コスト削減もボトルネックから 2
パフォーマンスチューニングの鉄則は?
ボトルネックから潰す ボトルネックを放置したら効果ゼロ パフォーマンスチューニングの鉄則
“一カ所でも大きなボトル ネックが存在していると、 システム全体の性能が大き く上がることは決してあり ません。” ISUCON本
“実際に存在しているボトル ネックを解消せずに、他の 事例において効果的だった 手段だけをいくら積み重ね ても効果は薄いのです。” ISUCON本
支配的なコストから減らす 支配的な部分を放置したら効果ゼロ コスト削減も同じく ※ パフォーマンスの議論では計算量のオーダーが違うことが多いため、それと比べるとゼロというわけではない。
実際にどう削減されていったか
2022/08 - 2023/01 $146,000 → $87,000 半年で $60,000 削減
施策A:$40,000削減 施策B:$12,000削減 施策C:$2,700削減 ︙ 支配的なコストから削減
施策A:$40,000削減 施策B:$12,000削減 施策C:$2,700削減 ︙ 支配的なコストから削減 まさにコレが Elephant in the room
あともう1つ重要なもの
覚悟
事業成長が大事 コストには目をつぶることも 後回しになりがち コスト削減には「覚悟」も必要 ※ 会社の文化やフェーズにもよるため、すべての会社に当てはまることではないはずです。
覚悟 「早く削減するほど 効果が高い」 耳が痛いですね
いろいろなコスト削減 3
まずはボトルネックを探す
削減金額予想が支配的なものを優先 ※ 構想段階のシートのため最終的な実施有無とは異なる部分があります。 ←サッと対応できるものもやる
VPC Endpoint導入:削減金額予想が最も大きいところから
まずは VPC Endpoint から!
スニダンはECS, Aurora, Elasticache, S3, ... などのオーソドックスな構成 ECS Aurora S3 Elasticache
VPC Endpoint導入の背景 ECS NAT Gateway ECR S3 Internet Private subnet
大量にNAT Gatewayを通っているのは主にECR/S3への通信のはず
数百MBytesなコンテナイメージのPullが大量に走る ECS Task起動数は35〜150個。デプロイは月に多くて100回 (=1日に5回)
S3/ECRに対するVPC Endpointを作成 ECS VPC Endpoint ECR S3 Private subnet NAT
Gatewayの料金が $50,000 削減される見込み Private接続
NAT Gatewayの通信料が一気に削減!
ここまでで $40,000 の削減 🎉
あれ、 $10,000 足りない…?
あ!! ECR Public からの Pull が!!
ECS Taskの中に、ECR PublicからPullするサイドカーコンテナが ECS VPC Endpoint ECR S3 Private subnet
Private接続 NAT Gateway Internet ECR Public 試算すると、予想通り $10,000 に
ECR pull through cache の導入
ECR Public をキャッシュ Privateに自前で置かなくていい キャッシュ更新でイメージタグ更新 (自動でイメージタグが変わると困ることも多いので注意です) ECR pull through cache
とは
ECR pull through cache の利用 Pull through cache ECR Public
ECS VPC Endpoint ECR S3 Private subnet Private接続 Privateな ECR 上に ECR Public のイメージがキャッシュできるように 🎉
今度こそNAT Gatewayの通信量を大幅に削減!
ここまでで $52,000 の削減 🎉
次のボトルネックを探す
次のボトルネックを探す
WAFのログ配信先変更
WAFのログ配信先をCloudwatch LogsからS3へ Cloudwatch Logsに比べると可視化・分析は難しくなることに注意 ログ Cloudwatch Logs WAF ログ S3
WAF
ここまでで $54,700 の削減 🎉
次のボトルネック探しの旅へ...
不要リソースの削除 Gravitonインスタンスの利用 Auto-scaling policyの見直し 他にもいくつか細かいコスト削減を
不要リソースの削除 Gravitonインスタンスの利用 Auto-scaling policyの見直し 他にもいくつか細かいコスト削減を
アタッチされてないEIP削除 使われていない環境を削除 (EC2, ECS, Aurora, Elasticache…) 不要リソースの削除
不要リソースの削除 Gravitonインスタンスの利用 Auto-scaling policyの見直し 他にもいくつか細かいコスト削減を
Intelに比べてコスト効率20%向上 データストア系のみに適用 (ECSはARMで動くかの検証が必要でPendに) Gravitonインスタンスの利用
不要リソースの削除 Gravitonインスタンスの利用 Auto-scaling policyの見直し 他にもいくつか細かいコスト削減を
Step-scalingのしきい値調整 Target-tracking scalingの検証 Scheduled-scalingの設定調整 余分なECS/Auroraインスタンスが起動しないように
最終的に $60,000 の削減 🎉
おまけ 4
CloudFront の Request-Collapsing
CloudFront Request-Collapsing(リクエスト折りたたみ)とは CloudFront ALB S3 Origin接続 Users Originへのリクエストを最低回数に折りたたんでくれる https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-traffic-spikes
ALB スニダンの課題:スパイク時の負荷が高くて大変! Users スパイクすると 2万rps くらいに跳ねる 💣💥 Aurora Elasticache ECS
スニダンではALBの前段にCloudFrontを設置して、Request-Collapsingの準備 CloudFront ALB ECS Route53の加重ルーティングを利用してダウンタイムなしで移行 👏
TTLが1秒のキャッシュポリシーを設定
TTL 1秒でも意外に高いキャッシュヒット率 対象エンドポイントのキャッシュヒット率は約12%に 🎉
Datadog APMから見たリクエスト数も大きく削減され、ECSやAuroraへの負荷が軽減 🎉 対象エンドポイントのリクエスト数も約半分に
もちろんコスト削減も
2023/06 - 2023/09 $26,400 → $24,300 DataTransfer + CloudFront が
$2,100 削減 ※ コスト削減はメインの目的ではありませんでしたが、ある程度の削減に成功 🎉
ユーザ体験も改善しつつコスト削減も 🎉
まとめ
ボトルネックから潰す 「覚悟」を持つ コスト削減で重要なコト
支配的コストを放置すると効果ゼロ まずは作戦を練るところから ボトルネックから潰す ※ パフォーマンスの議論では計算量のオーダーが違うことが多いため、それと比べるとゼロというわけではない。
コスト削減は後回しになりがち 削減しないと削減されない (あたりまえ) 「覚悟」を持つ
ボトルネックから潰す 「覚悟」を持つ コスト削減で重要なコト