こんにちは、ウォンテッドリーでアナリティクスエンジニアをしている木村(@akimu294231)です。
このストーリーは Wantedly Advent Calendar 2024 の11日目の記事です。今回は、Looker ダッシュボードのスロット消費量を削減するためにやったことについて書きました。Looker ダッシュボードの改善に取り組む際の参考になれば幸いです。
目次
ウォンテッドリーが抱える Looker の課題
重いダッシュボードを放置することの弊害
改善するために行ったこと
アンケート
解析機能の利用
公式ドキュメントの確認
アンケート再び
パフォーマンスを向上させる
最後に
ウォンテッドリーが抱える Looker の課題
ウォンテッドリーの開発組織は Squad 体制を採用しています。私が所属する BI Squad は「不自由なくデータ活用できる環境を整え、データによって意思決定を支援する」ことを目的として、横断的な開発を行っています。BIツールとして Looker を、データウェアハウスとして BigQuery をデータ基盤として利用し、効率的で信頼性の高いデータ活用をサポートしています。しかし、プロダクト開発を行う Dev Branch だけではなくビジネスチームである Biz Branch のメンバーが日々データを活用する中で、データ活用の効率やコストに影響を与える以下のような課題がありました。
- Looker ダッシュボードのデータ表示が遅い
- データ使用量が不必要に多い
- BigQuery 全体のスロット消費量に対して Looker の消費が過剰傾向にある
この課題に対して、どのように調査を行い、具体的に何を実施したのか、その結果どれくらい改善されたのか紹介します。「ダッシュボードが重い」という課題に直面した際の改善プロセスが、データ基盤に関わる方々の参考になれば幸いです。
前提として、ウォンテッドリーのデータ基盤に関しては、Wantedly Engineering Handbook の以下のページを参照してください。
重いダッシュボードを放置することの弊害
そもそも、重いダッシュボードを改善せず、そのまま使い続けるとどのような問題が発生するでしょうか。例えば、データ利用者の作業効率の低下が挙げられます。ダッシュボードを商談中に使っているのであれば、利用者の作業効率の悪化は商談数やコミュニケーションの低下に繋がり、売上が下がる原因にもなりえます。
また、BigQuery にかかるコストも大きな問題です。従量課金制の場合、スロット消費量の大きいダッシュボードを利用し続けることで、不要なコストが発生する可能性があります。さらに、スロットを無駄に消費することで、他のプロジェクトに必要なリソースを効率的に割り当てられないという問題も生じます。私たちは特に、この「コスト削減」に注目してダッシュボード改善に取り組んでいきました。
改善するために行ったこと
アンケート
はじめに、社内アンケートを実施しました。データ表示が遅いダッシュボード、そのダッシュボードの利用頻度、困りごとと希望する状態をヒアリングしました。実際にダッシュボードを利用するユーザーの声を聞くことで、具体的な改善ポイントを把握することができました。
解析機能の利用
次に Looker の管理者用のダッシュボード(Performance Recommendations など)やBigQuery の調査用のプラグインを利用し、パフォーマンスに深刻な問題を抱えるダッシュボードをリストアップしました。これらの調査結果をもとに「クエリ数」と「クエリ実行時間」の観点から、以下の図の右上の象限に位置するダッシュボードを優先的に改善することを判断しました。この象限には、特に負荷が大きく改善の効果が高いと考えられるダッシュボードが含まれています。
公式ドキュメントの確認
闇雲に対応するのではなく、ベストプラクティスがあるかどうか確認します。そのため、Looker の公式ドキュメントを読み、パフォーマンス改善の基本的な知識を確認しました。Looker のドキュメントには、「Looker サーバーのパフォーマンスの最適化」と「クエリのパフォーマンスの最適化」について詳しく記載されています。
サーバーのパフォーマンス向上に関して、改善対象のダッシュボードでは多くのタイルが作成されている現状がありました。その結果、利用者が見たいデータ以外のものも同時に更新されてしまうという問題が確認されました。また事前の調査では、ダッシュボードの初回実行時にロード時間が長く、途中で実行がキャンセルされることがあり、一部のキャッシュが作成されずに終わるケースも見つかりました。
これらの課題を踏まえ、クエリのパフォーマンスの最適化では、キャッシュの効率的な利用という観点から改善策を検討することにしました。
アンケート再び
ダッシュボードの利用状況やユースケースをより詳しく把握するため、ダッシュボードを頻繁に利用しているユーザーを対象にアンケートを再実施しました。このアンケートでは、例えば以下の項目についてヒアリングを行いました。
- ダッシュボードの利用目的
- データを確認するタイミング
- データの粒度やフィルターの使用状況
これらの結果をもとに、対象となるダッシュボードのキャッシュポリシーを定義しました。具体的なユースケースを知ることは、キャッシュポリシーを効果的に設計する上で非常に有効な手段となりました。
パフォーマンスを向上させる
アンケートの結果と実際の使用ログを組み合わせて調査した結果、ダッシュボードが複数の用途を持たせる形で肥大化していることが判明しました。この問題を解決するため、ダッシュボードをいくつかに分割する対応を行いました。
具体的には、以下の図に示すように、セクションごとにダッシュボードを分割することで、多くの利用者にとって不要なデータの取得を避けることができました。これにより、データ表示の遅延を防ぎ、ユーザー体験の低下を抑えることができました。
また、アンケートで実際にユーザーが見ているデータを示してもらったところ、ほとんど利用されていないデータが存在することも確認できました。この結果、ダッシュボードを分割するだけでサーバーのパフォーマンス向上につながりました。
次に、クエリのパフォーマンスを向上させるために、ユースケースに合わせた集約テーブルを導入しました。この集約テーブルを利用することで、スロット消費量の多かった集計用クエリの実行回数を削減し、スロット消費量の少ない集約テーブルに対するクエリで代替することが可能になります。
1ヶ月の利用を想定した概算ではありますが、対象ダッシュボードの改善前後を比較した結果、スロット消費量を約8割削減することに成功しました。この結果、パフォーマンスが大幅に向上し、データ基盤の効率的な運用に寄与できたと考えています。
最後に
今回、BI Squad が取り組んできた Looker ダッシュボードの最適化についてご紹介しました。パフォーマンスの課題を解決するために、社内アンケートを通じた利用状況の把握や、キャッシュポリシーの見直し、セクションごとのダッシュボード分割、さらには集約テーブルの導入など、さまざまな改善を実施しました。これらの取り組みを通じて、スロット消費量の削減やデータ表示速度の向上といった具体的な成果を得ることができました。
これらの試みは、データを活用した意思決定を支援するだけでなく、ユーザー体験の向上やコスト削減といった副次的な効果も得ることができ、データ基盤の効率化につながっています。
私たちの取り組みが、同様にデータ基盤やダッシュボードのパフォーマンス改善に取り組んでいる方々にとって、少しでも参考になれば幸いです。