Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cookpad Lounge #4 SRE 座談会 AWS コスト最適化の取り組み

Cookpad Lounge #4 SRE 座談会 AWS コスト最適化の取り組み

mozamimy

June 16, 2021
Tweet

More Decks by mozamimy

Other Decks in Programming

Transcript

  1. 全体観 • 年間の予算を決める • 月次コストレポートをまとめて部長や本部長に共有 • 週次の SRE 定例ミーティングで共有 •

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

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

    まずそうであれば具体的なコスト最適化の作業に移る • AWS の機能の Cost Explorer と内製ツールの Costco の二本柱
  4. 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 を使って可視化できる
  5. Project タグ • 社内ルールとして AWS リソースに Project タグを付与することを強制している • コストがどのプロジェクトにかかっているのかを把握できる

    • もちろん必要に応じて他の cost allocation tags を設定しても OK ◦ Environment や Owner など ◦ ともかく Project タグがあれば最低限の分類はできる
  6. Project タグをめぐる問題点 • 😩 そもそも付け忘れる • 😩 表記ゆれする ◦ e.g.

    cookpad_all vs cookpad (現在は cookpad で統一) ◦ 好き勝手に値の種類を増やすと治安が崩壊 • 😩 typo する • 😩 コンテキストが失われて値の意味がわからなくなる • 😩 値が非推奨になっていることに気づけない
  7. Project タグを管理する仕組み • Project タグのないリソースを検知するツール ◦ infra-compliance ▪ AWS Config

    & auto remediation & SSM Automation のあわせ技 ◦ Tagcop ▪ 定期的にリソースをクロールして検知したらアラートをあげる素朴なバッチ • Project タグの値のバリエーションをホワイトリスト管理にする ◦ tech/terraform の project_tag_whitelist.txt • Costco では複数のタグをまとめて カテゴリとして管理
  8. 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 で書いたもの) を実行 ◦ 自動でタグ付け、できない場合はアラートに
  9. YAML DE PUROGURAMINGU • コード ◦ Project タグがない EBS volume

    の親となっている EC2 インスタンスの Project タグを自動でセットしてく れる SSM document ◦ もし detach されていて宙ぶらりんならアラートをあげる ◦ 雰囲気だけ感じてくれ!! • AWS API を適当にコールするだけの処理を書くなら Lambda より楽 • if が出てきたあたりで警戒、 10 ステップを超えたりネストまでしたら もうやめたほうがいいと思う
  10. Terraform 管理リポジトリでホワイトリスト管理 • ホワイトリスト (プレーンテキスト) • 既存のプロジェクトではリストに含まれている値を使う • リストにない値を追加するときは pull

    request で SRE にレビューをもらう ◦ リソースの追加と一緒にやると natural ◦ 表記ゆれ・typo・みだりな値のバリエーションの増加・治安の悪化を防ぐ
  11. ここまで紹介してなかった Costco の機能 • Project タグを管理 • AWS 予算・進捗を管理 •

    AWS の決裁と消化状況を管理 ◦ Workday と連携 • Route 53 で購入したドメインの請求一覧 • 月次レポート管理 • コストアノマリ管理
  12. ツールたち • Costco ◦ 内製 AWS コストコンソール • infra-compliance /

    Tagcop ◦ Project タグの監視 • Burimuon ◦ RI の状況を管理 • Lunala ◦ AWS 開発者アカウントのリソースを自動削除するツール
  13. アウトライン • なぜ AWS コストの最適化をやるのか • クックパッドにおける AWS コスト管理術 ◦

    全体観 ◦ コスト管理のための内製のコンソールアプリケーション • まとめ・これからについて
  14. なぜ AWS コストの最適化をやるのか • 表面的 ◦ 組織運用の仕組みとして「予算」が決まっているから ◦ お金は有限のリソースだから •

    もうちょっとつっこんで ◦ 直接利益を生んでいるわけではない ◦ 利益率を上げるためにインフラコストは減れば減るほど良い ◦ より価値ある投資ができるようになる ◦ 持続可能かつチャレンジができる組織になるために必要