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
Cookpad Lounge #4 SRE 座談会 AWS コスト最適化の取り組み
Search
mozamimy
June 16, 2021
Programming
0
920
Cookpad Lounge #4 SRE 座談会 AWS コスト最適化の取り組み
mozamimy
June 16, 2021
Tweet
Share
More Decks by mozamimy
See All by mozamimy
AWS コストを可視化して「説明」 できるようにするための取り組み
mozamimy
2
4.1k
Ruby DSL × SSH config = Nymphia!!
mozamimy
0
450
Other Decks in Programming
See All in Programming
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
230
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
600
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
GoLab2025 Recap
kuro_kurorrr
0
790
Grafana:建立系統全知視角的捷徑
blueswen
0
270
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
230
Vibe codingでおすすめの言語と開発手法
uyuki234
0
160
Graviton と Nitro と私
maroon1st
0
160
AIエージェントの設計で注意するべきポイント6選
har1101
6
2.9k
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
520
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.3k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
260
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
51
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
The Limits of Empathy - UXLibs8
cassininazir
1
200
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
140
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
140
Navigating Team Friction
lara
191
16k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
72
Transcript
AWS コスト最適化の取り組み mozamimy @ Cookpad Lounge #4
はじめに • 以下の記事の内容がベースに最近の事情も含めてお話します ◦ https://techlife.cookpad.com/entry/cost-and-ri-optimization-in-cookpad ◦ https://techlife.cookpad.com/entry/how-to-describe-infra-cost
コストそのものや、その変化を 「説明」できることが 求められる
「説明」できるようになって得られるもの • 購入決裁 (稟議) の資料を作りやすくなる • 予算をクリアできるかどうか予測できるようになる • オーバーしそうなときの打ち手を考える助けになる •
問題をお金で解決するかどうかの判断材料になる • 事業のコストパフォーマンスを測れる
クックパッドにおける AWS コスト管理術
全体観 • 年間の予算を決める • 月次コストレポートをまとめて部長や本部長に共有 • 週次の SRE 定例ミーティングで共有 •
まずそうであれば具体的なコスト最適化の作業に移る • AWS の機能の Cost Explorer と内製ツールの Costco の二本柱
Costco (内製 AWS コスト管理ツール)
全体観 • 年間の予算を決める • 月次コストレポートをまとめて部長や本部長に共有 • 週次の SRE 定例ミーティングで共有 •
まずそうであれば具体的なコスト最適化の作業に移る • AWS の機能の Cost Explorer と内製ツールの Costco の二本柱
予算の設定
全体観 • 年間の予算を決める • 月次コストレポートをまとめて部長や本部長に共有 • 週次の SRE 定例ミーティングで共有 •
まずそうであれば具体的なコスト最適化の作業に移る • AWS の機能の Cost Explorer と内製ツールの Costco の二本柱
月次レポート
AWS コストを分類して 現状を知る方法
Cost allocation tags / Cost Explorer • これに始まりこれに終わるといっても過言ではない (?) •
AWS の機能のひとつ ◦ https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html ◦ https://console.aws.amazon.com/billing/home?#/preferences/tags • 特定のキーのタグの値をもつリソースに絞ってコストを集計できる ◦ Cost Explorer を使って可視化できる
Project タグ • 社内ルールとして AWS リソースに Project タグを付与することを強制している • コストがどのプロジェクトにかかっているのかを把握できる
• もちろん必要に応じて他の cost allocation tags を設定しても OK ◦ Environment や Owner など ◦ ともかく Project タグがあれば最低限の分類はできる
Project タグによるコスト分類と可視化
Project タグをめぐる問題点 • 😩 そもそも付け忘れる • 😩 表記ゆれする ◦ e.g.
cookpad_all vs cookpad (現在は cookpad で統一) ◦ 好き勝手に値の種類を増やすと治安が崩壊 • 😩 typo する • 😩 コンテキストが失われて値の意味がわからなくなる • 😩 値が非推奨になっていることに気づけない
Project タグを管理する仕組み • Project タグのないリソースを検知するツール ◦ infra-compliance ▪ AWS Config
& auto remediation & SSM Automation のあわせ技 ◦ Tagcop ▪ 定期的にリソースをクロールして検知したらアラートをあげる素朴なバッチ • Project タグの値のバリエーションをホワイトリスト管理にする ◦ tech/terraform の project_tag_whitelist.txt • Costco では複数のタグをまとめて カテゴリとして管理
infra-compliance によるタグ監視 • Config rule で AWS リソースがルールを満たしているかをチェックできる ◦ https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html
◦ DynamoDB テーブルを監視する rule • タグなしリソースが生じて noncompliant 状態になると Lambda function や SSM Automation を実行できる • SSM Automation を利用している ◦ SSM document (手続きを YAML で書いたもの) を実行 ◦ 自動でタグ付け、できない場合はアラートに
YAML DE PUROGURAMINGU • コード ◦ Project タグがない EBS volume
の親となっている EC2 インスタンスの Project タグを自動でセットしてく れる SSM document ◦ もし detach されていて宙ぶらりんならアラートをあげる ◦ 雰囲気だけ感じてくれ!! • AWS API を適当にコールするだけの処理を書くなら Lambda より楽 • if が出てきたあたりで警戒、 10 ステップを超えたりネストまでしたら もうやめたほうがいいと思う
Terraform 管理リポジトリでホワイトリスト管理 • ホワイトリスト (プレーンテキスト) • 既存のプロジェクトではリストに含まれている値を使う • リストにない値を追加するときは pull
request で SRE にレビューをもらう ◦ リソースの追加と一緒にやると natural ◦ 表記ゆれ・typo・みだりな値のバリエーションの増加・治安の悪化を防ぐ
Costco でコスト管理の世界が 広がります
ここまで紹介してなかった Costco の機能 • Project タグを管理 • AWS 予算・進捗を管理 •
AWS の決裁と消化状況を管理 ◦ Workday と連携 • Route 53 で購入したドメインの請求一覧 • 月次レポート管理 • コストアノマリ管理
コストアノマリトラッカー
ツールたち • Costco ◦ 内製 AWS コストコンソール • infra-compliance /
Tagcop ◦ Project タグの監視 • Burimuon ◦ RI の状況を管理 • Lunala ◦ AWS 開発者アカウントのリソースを自動削除するツール
Burimuon
Lunala
None
アウトライン • なぜ AWS コストの最適化をやるのか • クックパッドにおける AWS コスト管理術 ◦
全体観 ◦ コスト管理のための内製のコンソールアプリケーション • まとめ・これからについて
なぜ AWS コストの最適化を やるのか
なぜ AWS コストの最適化をやるのか • 表面的 ◦ 組織運用の仕組みとして「予算」が決まっているから ◦ お金は有限のリソースだから •
もうちょっとつっこんで ◦ 直接利益を生んでいるわけではない ◦ 利益率を上げるためにインフラコストは減れば減るほど良い ◦ より価値ある投資ができるようになる ◦ 持続可能かつチャレンジができる組織になるために必要
• 現状のコスト状況の把握 • それをもとにした予測 AWS コスト最適化に必要なこと
まとめ・これからについて
まとめ・これからについて • 高いレベルでコスト状況を把握 /改善できるようになった • とはいえ未分類となっているコストも少なくない • 継続して見ていくことが重要 ◦ ノウハウが失われないようにする
• さらに細やかなコスト状況の把握がしたい場面もある ◦ e.g. ECS クラスタ内での各アプリケーションの利用状況