はじめに
はじめまして。『スタディサプリ』データエンジニアリンググループ(DEG)新卒1年目の後藤と申します。
本記事では、まなび組織のFinOps推進として取り組み始めたGCPコスト管理ダッシュボードの作成について話します。近年、注目が増しているFinOpsの具体イメージを少しでも掴んでいただけたらと思います。
背景
まなび組織ではデータ基盤やデータプロダクトとしてGCPの各サービスを利用しています。
GCPは従量課金であるため、急激なユーザーの利用増加により利用料が跳ね上がることがあります。 例えば、コロナ感染拡大による緊急事態宣言の際に、オンライン学習者の急増とともに学習者データも増え、クラウド料金が増加したことも過去にはありました。
他にも、クラウドベンターの料金体系の改定1や円安といった外部要因によりコストが増加することもありました。
まなびのプロダクト開発組織内でGCPを一番利用していたのがDEGであったこともあり、GCPのコスト管理や最適化の施策もDEGが中心に行ってきました。 実際に、集計パイプラインのリファクタやストレージタイプの最適化などによる、コスト削減の成功事例はいくつかありました。
ただし、事業の成長とともにデータ基盤のステークホルダーは、データサイエンティスト、アナリティクスエンジニア、マーケター、PM、エンジニアなど様々な職種のメンバーに増えていき、DEG単体の施策だけではコスト最適化の成果が局所的になってしまう部分もありました。
全体最適化を叶えるためには、他のチームのメンバーも巻き込んだ「コスト意識の改革」が不可欠です。
そこで、その世界観の実現に向け、GCPコスト管理を「自分ごと化」できる可視化ツールの登場が期待されるようになりました。
FinOpsへの期待
FinOpsとは
上記の問題に対して、クラウドサービスを利用する一人ひとりがコスト意識を持つことを提唱したのがFinOpsという考え方です。
FinOpsでは以下の6つの原則があります。2
- チームをまたぐ協働
- ビジネス価値に基づいた意思決定
- クラウド利用に対する各人の当事者意識
- いつでも誰でもアクセス可能なコストデータ
- 1つの中心チームによるFinOps主導
- クラウドのコスト変動モデルの活用
すなわち、DEGが中心となって組織横断的にクラウドコストを最適化し、ビジネスの利益を最大化することを目指します。
FinOpsとダッシュボード作成の関係
さて、FinOpsの目的について紹介しましたが、それとダッシュボード作成の繋がりは何でしょう?
それは、誰もが現在のコスト状況を簡単に確認できる透明性です。(原則4に対応)
自分達のサービス利用コストを正しく把握できることが、各人のコスト意識醸成や課題発見につながると考えています。
ダッシュボード作成
目的
デザインスプリント風に上長やチームメンバーとのディスカッションを重ね、ダッシュボードの用途を短期目標と中長期目標の2つの観点で整理しました。
異常検知とは、クエリの過剰使用やサーバーの異常などでコストが跳ね上がった時に検出することです。コスト全体をパッと確認できるダッシュボードを用意し、定期的に確認することで、知らないうちに発生していたコスト異常を見逃すことを防ぎます。
コスト最適化とは、各サービスの定常コストにおけるボトルネックを特定し、改善点を発見することです。より詳細なダッシュボードを用意し、様々な観点でコスト推移を分析できるようにします。
実施内容とTips
ダッシュボード作成はダッシュボードデザインの参考書3をもとに以下の手順で進めました。
また、ダッシュボードには既に社内で使用され馴染みのあったLookerを使用しました。 各フェーズの詳細はここでは省きますが、全体を通して意識したポイントをまとめておきます。
Next Actionを意識する
ダッシュボードは確認して終わりではなく、分析結果をもとに対応策や改善案を考える必要があります。そういったNext Actionにつながることを意識してダッシュボードを作っていくのが大事です。
利用者と擦り合わせしながら進める
ダッシュボードの利用者は自分だけではありません。そして、利用者ごとに欲しい情報や気になるポイントは異なる場合がほとんどです。そのため、ダッシュボード作成の各フェーズにおいて定期的に方向性が間違っていないか擦り合わせを行うことが大事です。また、ダッシュボード作成後も利用者からのレビューをもらって改善していくことが必要です。
必要十分な情報量を提供する
ダッシュボードにおけるグラフは多過ぎても少な過ぎても問題です。特に、普段からデータに触れている人間はたくさんの情報を盛り込みがちであるため、伝えたい情報をしっかり整理することが大事です。また、それぞれのグラフ自体も複雑にし過ぎない注意が必要です。ここでも利用者視点が求められます。
インテグレーション
可視化までのデータパイプラインは以下の通りです。
- Billingの請求ログやComposerのクエリ実行ログをBQに吐き出す
- BQ上でLooker用にデータを整理しテーブルを用意する
- Lookerにデータを取り込み、可視化する
工夫点として、ラベル機能を使って請求ログや実行ログを細かいレベルで分別できるようにしたことが挙げられます。具体的には以下のようなことを行いました。
- 請求ログではストレージ料金をデータセットごとに見られるように各データセット名をラベルに設定
- 実行ログでは日次ワークフローのタスクごとにクエリ料金を見られるように各タスク名をラベルに設定
これにより、料金を細かく区分けして可視化できるようになり、異常を検知した後にその原因(ボトルネック)を特定しやすくなりました。
完成品
現在完成済みの全体ダッシュボードがこちらです。
レイアウトや機能面での工夫点は以下の通りです。
- 前述の参考書3で紹介されていた一画面ダッシュボードを採用
(異常検知においては必要な情報を短時間で把握できることが重要だと考えたため) - 表示期間や集計粒度を動的に変えられるようフィルター機能を利用(画面左上)
- 詳細ダッシュボードと切り替え可能なボタンを用意(画面右端)
- ページの上部が全体像の指標で、下に行くほど詳細な情報を見られるようレイアウトを設計
現在はひとまず週次のDEG定例で活用しており、直近1週間の中でコスト異常がないかを確認しています。
また、各サービスの詳細ダッシュボードも現在作成中で、例えば、BQの分析コストやストレージコストに関して詳しく分析できるダッシュボードを作っています。以下のように、アカウント種別やストレージ種別などで各利用料金を切り分けています。
さらに、もっと粒度を下げてアカウント単位での利用内訳なども確認できるようにしています。
サービスアカウント単位での内訳 | 一般ユーザー単位での内訳 |
こちらの詳細ダッシュボードもコストのボトルネック調査に役立つと考えているので、完成次第活用していきます。
今後の予定
サービスごとのダッシュボードの作成
現在、全体ダッシュボードは完成しているもののコスト最適化のための詳細コストダッシュボードは未完成です。コストのボトルネックを特定するにはより細かい区分でコストを可視化する必要があります。例えば、BQであればデータセット/テーブルごとのストレージ料金やクエリごとのオペレーション料金などです。
コスト最適化に取り組む
FinOpsの目的はクラウドコスト最適化にあります。コストの定期モニタリングに閉じず、ボトルネックの調査と改善に対し、ステークスホルダーを巻き込んで取り組んでいきたいです。
おわりに
本記事ではFinOpsを目指すGCPコストダッシュボード作成の取り組みについて話しました。
今回の取り組みの中でデータ基盤コストの現状を把握できただけでなく、自分自身のクラウド知識を深めることもできました。
これからも今後の予定に書いてあることを進めていき、FinOpsの掲げるクラウドコスト最適化によるビジネス価値の最大化に挑戦していこうと思います!
References
-
例えば、最近ではBQの料金改定などがありました。
https://cloud.google.com/blog/products/data-analytics/introducing-new-bigquery-pricing-editions/?hl=en ↩︎ -
こちらのFinOps Principlesを参考にしました。
https://www.finops.org/framework/principles/ ↩︎ -
参考にした書籍は「ビジネスダッシュボード 設計・実装ガイドブック 成果を生み出すデータと分析のデザイン」です。
https://www.shoeisha.co.jp/book/detail/9784798177649 ↩︎
まなびデータエンジニア
後藤直央
競プロとお絵描きが得意でした(過去形)