Slide 1

Slide 1 text

AWS コスト最適化の取り組み mozamimy @ Cookpad Lounge #4

Slide 2

Slide 2 text

はじめに ● 以下の記事の内容がベースに最近の事情も含めてお話します ○ https://techlife.cookpad.com/entry/cost-and-ri-optimization-in-cookpad ○ https://techlife.cookpad.com/entry/how-to-describe-infra-cost

Slide 3

Slide 3 text

コストそのものや、その変化を 「説明」できることが 求められる

Slide 4

Slide 4 text

「説明」できるようになって得られるもの ● 購入決裁 (稟議) の資料を作りやすくなる ● 予算をクリアできるかどうか予測できるようになる ● オーバーしそうなときの打ち手を考える助けになる ● 問題をお金で解決するかどうかの判断材料になる ● 事業のコストパフォーマンスを測れる

Slide 5

Slide 5 text

クックパッドにおける AWS コスト管理術

Slide 6

Slide 6 text

全体観 ● 年間の予算を決める ● 月次コストレポートをまとめて部長や本部長に共有 ● 週次の SRE 定例ミーティングで共有 ● まずそうであれば具体的なコスト最適化の作業に移る ● AWS の機能の Cost Explorer と内製ツールの Costco の二本柱

Slide 7

Slide 7 text

Costco (内製 AWS コスト管理ツール)

Slide 8

Slide 8 text

全体観 ● 年間の予算を決める ● 月次コストレポートをまとめて部長や本部長に共有 ● 週次の SRE 定例ミーティングで共有 ● まずそうであれば具体的なコスト最適化の作業に移る ● AWS の機能の Cost Explorer と内製ツールの Costco の二本柱

Slide 9

Slide 9 text

予算の設定

Slide 10

Slide 10 text

全体観 ● 年間の予算を決める ● 月次コストレポートをまとめて部長や本部長に共有 ● 週次の SRE 定例ミーティングで共有 ● まずそうであれば具体的なコスト最適化の作業に移る ● AWS の機能の Cost Explorer と内製ツールの Costco の二本柱

Slide 11

Slide 11 text

月次レポート

Slide 12

Slide 12 text

AWS コストを分類して 現状を知る方法

Slide 13

Slide 13 text

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 を使って可視化できる

Slide 14

Slide 14 text

Project タグ ● 社内ルールとして AWS リソースに Project タグを付与することを強制している ● コストがどのプロジェクトにかかっているのかを把握できる ● もちろん必要に応じて他の cost allocation tags を設定しても OK ○ Environment や Owner など ○ ともかく Project タグがあれば最低限の分類はできる

Slide 15

Slide 15 text

Project タグによるコスト分類と可視化

Slide 16

Slide 16 text

Project タグをめぐる問題点 ● 😩 そもそも付け忘れる ● 😩 表記ゆれする ○ e.g. cookpad_all vs cookpad (現在は cookpad で統一) ○ 好き勝手に値の種類を増やすと治安が崩壊 ● 😩 typo する ● 😩 コンテキストが失われて値の意味がわからなくなる ● 😩 値が非推奨になっていることに気づけない

Slide 17

Slide 17 text

Project タグを管理する仕組み ● Project タグのないリソースを検知するツール ○ infra-compliance ■ AWS Config & auto remediation & SSM Automation のあわせ技 ○ Tagcop ■ 定期的にリソースをクロールして検知したらアラートをあげる素朴なバッチ ● Project タグの値のバリエーションをホワイトリスト管理にする ○ tech/terraform の project_tag_whitelist.txt ● Costco では複数のタグをまとめて カテゴリとして管理

Slide 18

Slide 18 text

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 で書いたもの) を実行 ○ 自動でタグ付け、できない場合はアラートに

Slide 19

Slide 19 text

YAML DE PUROGURAMINGU ● コード ○ Project タグがない EBS volume の親となっている EC2 インスタンスの Project タグを自動でセットしてく れる SSM document ○ もし detach されていて宙ぶらりんならアラートをあげる ○ 雰囲気だけ感じてくれ!! ● AWS API を適当にコールするだけの処理を書くなら Lambda より楽 ● if が出てきたあたりで警戒、 10 ステップを超えたりネストまでしたら もうやめたほうがいいと思う

Slide 20

Slide 20 text

Terraform 管理リポジトリでホワイトリスト管理 ● ホワイトリスト (プレーンテキスト) ● 既存のプロジェクトではリストに含まれている値を使う ● リストにない値を追加するときは pull request で SRE にレビューをもらう ○ リソースの追加と一緒にやると natural ○ 表記ゆれ・typo・みだりな値のバリエーションの増加・治安の悪化を防ぐ

Slide 21

Slide 21 text

Costco でコスト管理の世界が 広がります

Slide 22

Slide 22 text

ここまで紹介してなかった Costco の機能 ● Project タグを管理 ● AWS 予算・進捗を管理 ● AWS の決裁と消化状況を管理 ○ Workday と連携 ● Route 53 で購入したドメインの請求一覧 ● 月次レポート管理 ● コストアノマリ管理

Slide 23

Slide 23 text

コストアノマリトラッカー

Slide 24

Slide 24 text

ツールたち ● Costco ○ 内製 AWS コストコンソール ● infra-compliance / Tagcop ○ Project タグの監視 ● Burimuon ○ RI の状況を管理 ● Lunala ○ AWS 開発者アカウントのリソースを自動削除するツール

Slide 25

Slide 25 text

Burimuon

Slide 26

Slide 26 text

Lunala

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

アウトライン ● なぜ AWS コストの最適化をやるのか ● クックパッドにおける AWS コスト管理術 ○ 全体観 ○ コスト管理のための内製のコンソールアプリケーション ● まとめ・これからについて

Slide 29

Slide 29 text

なぜ AWS コストの最適化を やるのか

Slide 30

Slide 30 text

なぜ AWS コストの最適化をやるのか ● 表面的 ○ 組織運用の仕組みとして「予算」が決まっているから ○ お金は有限のリソースだから ● もうちょっとつっこんで ○ 直接利益を生んでいるわけではない ○ 利益率を上げるためにインフラコストは減れば減るほど良い ○ より価値ある投資ができるようになる ○ 持続可能かつチャレンジができる組織になるために必要

Slide 31

Slide 31 text

● 現状のコスト状況の把握 ● それをもとにした予測 AWS コスト最適化に必要なこと

Slide 32

Slide 32 text

まとめ・これからについて

Slide 33

Slide 33 text

まとめ・これからについて ● 高いレベルでコスト状況を把握 /改善できるようになった ● とはいえ未分類となっているコストも少なくない ● 継続して見ていくことが重要 ○ ノウハウが失われないようにする ● さらに細やかなコスト状況の把握がしたい場面もある ○ e.g. ECS クラスタ内での各アプリケーションの利用状況