カブコムAWSコスト管理の話

システム技術部 shiromizu(id:kc-shiromizu)です。

AWSのコスト管理

今日のお題はこちらです。世の中AWSの情報は数多あれど、AWSコスト管理の実際の話はあまり公開されてない気がします。そこで、今回はカブコム流のコスト管理メソッド、カブコムのコスト管理の実態をご紹介しようと思います。

金銭感覚

本題に入る前に。AWSエンジニアたるもの、金銭感覚が重要です。オンプレ、仮想サーバ時代のシステムは、アプリケーションエンジニアが考えるべきは作業にかかる工数がメインでした。サーバの調達はインフラ担当と分業で、運用開始後は(多少の幅はあるとしても)ほぼ固定費用で運用が出来ました。

IaaS型クラウドサービスが主流となった現代では、使った分だけ支払う従量課金が多数を占めています。湯水のようにリソースを使えるという強力なメリットを得た一方、アーキテクチャ設計の段階から

  • 想定するアクセス数、データ量、通信量はどれくらいか
  • 使うアーキテクチャ(サービス)はどれだけお金がかかるのか

を把握しておかないと、想定外に支出が!となってしまいます

コスト管理の単位

コストの「管理単位」は組織によって様々あるでしょう。スタートアップなら全社一括、大組織なら部・課の単位で予算枠がある、事業会社ならサービス毎、なんてパターンもあるかもしれません。

カブコムでは以下のような管理をしています

  • 支払いは全社一括請求(全AWSアカウントを1つのOrganizationで統括)
  • 予算は案件(各プロジェクト・サービス)ごとに管理

コストの可視化手法

以下のサービスを活用して、コストの可視化・分析を行っています。

  • AWS Cost Explorer
  • AWS Cost and Usage Reports
  • Microsoft Power BI

AWS Cost Explorer

コスト可視化の第一歩、利用必須のサービスです。毎月の推移、サービスごとのコスト詳細、アカウントごとのコスト詳細、これらを数クリックで可視化してくれる便利サービスです。手軽に見やすくまとめてくれるので、最初期はこのサービスに頼って分析をしていました。またリザーブドインスタンスやSavings Plansの購入すべき数のレポートも自動で挙げてくれますので、とても重宝しています。

しかしサマリしたデータしか見れないので、もう一歩踏み込んで分析したいケースでは物足りません。そこで、以下を併用するようにしています。 

AWS Cost and Usage Reports、Microsoft Power BI

「Cost and Usage Reports」は、コスト明細をCSV形式でS3に吐き出してくれるサービスです。AWSサービスとの連携も対応しており、AthenaやRedShiftと連携して分析する事も可能です。

カブコムでは、この吐き出した明細レポートを「Microsoft Power BI」Webサービスを使って分析しています。

powerbi.microsoft.com

  • 月別で確定したAWSコスト明細情報をS3からダウンロード
  • Power BIに取り込み、Webダッシュボードを作成
  • 社内のMicrosoft Teamsに展開、全社員が見られるように配置

f:id:kc-shiromizu:20200214143157p:plain

Power BI

月別の増減率や、使っているサービスの明細がより視覚的に分かるようにしています。全アカウント分を見えるようにしているのがポイントで、プロダクト個別の担当者は自身のプロダクト外の事を知る手段が少ないため

  • 他プロダクトではこんなサービス使っている
  • 全社費用の○%を占めている

などの意識付けをしてもらう効果も期待しています。

Power BIを使う場合、Cost Explorerよりも情報量が多く多彩なグラフが使えるのは良いですね。AWS内で完結する場合、QuickSightで同じようなダッシュボードが作成できると思いますのでお試しください。

まとめ

カブコム流、AWSコスト可視化術をお伝えしました。このように可視化できたのは割と最近で、それまでシステム部門は全体の総額を一部の人しか知らないという無法地帯になってました。見える化した事で個々人のコスト意識も向上し、無駄なインスタンス立ててない?サイズは妥当?リザーブド使い切れてる?など自発的に動き色々と良い変化が起きてきてます。

今後は、まだ有効活用できてない「コスト配分タグ」を使ったり、「Budget」と「Budget Actions」で予算オーバーのリスク回避、「Compute Optimizer」で最適化などをしていきます。