REALITY データ分析基盤の現状と今後取り組んで行きたいこと!
みなさんこんにちは。
REALITY の Data Engineering チームに所属しているションローです。
この記事は REALITY Advent Calendar 2024の16日目の記事になります。
この記事では、現在の REALITY のデータ分析基盤についての現状や課題を示しつつ、今後どんな事に取り組む予定なのかをご紹介します。
はじめに
REALITYでは、長らく「データ分析基盤」というもの自体に対しての投資が出来ていませんでした。
結果として、社内のデータアナリストチームを代表とする「データを元に意思決定を行いたい人々(PdMやSWEを含む)」の作業効率や品質面に対する問題意識が大きくなっているのが現状です。
そこで、「データを元に意思決定を行いたい人々」が効率よく高品質なデータにアクセスできる環境を作るため、今年の7月頃に Data Engineering チームの立ち上げを行いました。
Data Engineering チームは既存のデータ分析基盤のキャッチアップを行いつつ、ワークフローの最適化や技術スタック・アーキテクチャの更新を少しずつ進めています。
REALITYデータ分析基盤の現状
現状の REALITY のデータ分析基盤は以下の構成になっています
前提として、REALITY のインフラはほとんどが Google Cloud を活用して構成されています。故にデータ分析基盤のアーキテクチャもそれに最適化された形で育てています。
データソース
主に以下のデータを扱っています
REALITY のモバイル, Webアプリから取得されたログ(Google Analytics, Google Analytics for Firebase)
REALITY のバックエンドサービスから取得されたログ(Cloud Logging, GCSなど)
アプリケーションのDB(Cloud SQL, Cloud Spanner)
その他の管理用データ(スプレッドシートなど)
データロード・データウェアハウス
扱うデータは基本的に全て BigQuery に集約しています。
上記データソースのうち、1 については BigQuery Export 機能を使ってBQに送信しています。2については、(Cloud Logging ->) Pub/Sub -> Dataflow を通り、BigQuery に送信されます。
3 については主に Federated Query を用いた的なデータ取得を行っており、4については主に External Tables として連携しています。
また、先述の通りデータウェアハウスは基本的に BigQuery で完結しています。
歴史的経緯により、一部のダッシュボードのデータマートとして Cloud SQL(アプリケーションDBとは別)を利用していますが、こちらは廃止予定です。
基盤管理
Dataform と Terraform を活用して基盤の管理をしようとしています。
全体のインフラ構成を Terraform で管理しつつ、ウェアハウス部分を Dataform の管理下にいれる方針で進めています。
現在はまだすべてのリソースが管理下に入っておらず、徐々に移行している最中です。
特に Scheduled Query で実行されているクエリの管理、パイプラインが適切に管理できていないため、現在の基盤の全体感を把握する上でで大きな課題になっています。
データ活用
幸いになことに REALITY のメンバーは SQL を書ける人が多く、BigQuery のWebUI を活用して様々なデータ分析が行われていました
一方で、データセットの運用ルールや権限管理が適切に行われていない部分もあり、ここも今後整備していきたい課題になっています。
メタデータ管理
メタデータの管理は Dataplex と Data Catalog を中心とし、どこにどんなデータが有るのか?がすぐに分かる状態を目指して整備しています。
ここでは、プロダクトの拡張に紐づいて適切にメタデータが更新されるWF, ないしは変更が素早く検知できる状態を構築することが課題になっています。
直近で取り組んできたこと
直近で取り組んできたことは以下のような内容になっています
データカタログ(Dataplex, Data Catalog)の導入とメタデータの更新
Dataform の検証と導入
既存のデータ分析基盤管理の引き継ぎ
ダッシュボードの棚卸し
データカタログ(Dataplex, Data Catalog)の導入とメタデータの更新
「データ分析基盤に投資しよう」というキッカケになったのは、既存のデータカタログ管理の崩壊でした。
具体的にはスプレッドシートで構築されていたデータカタログの中身が更新されずに実装と乖離した箇所が多くなったことや、スプシ内でのテーブル情報検索が大変になったことです。
このタイミングで「効率良くメタデータを管理する方法はないだろうか」という疑問をもち、調査した結果として Dataplex 及び Data Catalog にたどり着き、導入を決めました。
このときの試行錯誤の様子は以下の記事で紹介しています。
既存のスプシで管理されていたメタデータを BigQuery の Table Description や Column Description に記載すること、Dataplex のビジネス用語を活用することで表現力を高めることを行いました。
また、メタデータ管理や活用を社内で広げていくためのドキュメンテーションやチームへの共有も同時に行いました
Dataform の検証と導入
先述の通り、テーブルのメタデータ管理から始まった Dataform の検証・導入ですが、徐々に本丸のデータモデリング、データパイプラインの管理で活用出来る環境を作っています。
社内にデータモデリングツールの有識者がおらず、インターネット上の記事を参考にさせてもらったり、お世話になっている Findy さんのデータエンジニアの方にお話を伺わせて頂いたりしながら日々奮闘しています。
色々ご相談させて頂いた田頭さんと会をアレンジして頂いたくぼちゃんさんにはこの場を借りて感謝申し上げます。
せっかくなので、参考にさせて頂いた田頭さん執筆の Dataform 記事をリンクさせて頂きます。
既存のデータ分析基盤管理の引き継ぎ
これは社内都合の話ですが、REALITY のデータ分析基盤は親会社であるグリー株式会社の共通部門に所属するデータエンジニアチームの方々に面倒を見てもらっていました。
我々として非常に助かっていたものの、データ分析基盤の進化の方向性について議論することが出来ていなかったため、日々の運用を肩代わりしてもらうだけの状態が続いていました。
また、このタイミングで共通部門側の人の出入りなどもあったため、基本的に REALITY 側で基盤の管理部分を引き取る意思決定を行っています。
具体的には Terraform のリソースを REALITY 管理のリポジトリに移したり、特定のインフラリソースの更新などを直近で行いました。
ダッシュボードの棚卸し
REALITY の KPI やプロダクトの状況を把握するためのダッシュボードやグラフの数が爆発しており、管理している データアナリストチームの負担が大きくなっていました。
Data Engineering チームとして管理を引き継ぎつつ、管理コストを低減させるために棚卸しを実施しました。
棚卸しは社内のユーザーの声を聞きつつ、Google Analaytics でアクセス数も見ながら検討しました。
最終的には全体で使っていたダッシュボードのページのうち、半数弱が棚卸され、日々のメンテコストを減らせました。
事業状況の変化によって日々新しいページ・グラフはが作られ、一方で見られなくなったグラフも生まれていくので、定期的に利用率が低いページを削除する事が大事だなぁと実感しました。
今後取り組みたいこと
ここまででご紹介してきた通り、色々取り組みは進めているものの課題はまだたくさんあります。
今後取り組んでいきたいことは以下のように考えています
データ変換パイプラインを Schedule Query から Dataform に移行しつつ棚卸し
Dataform の開発・データアナリストチームへの浸透
アプリケーションDBのストリーミングデータ同期の実現
データ品質、ガバナンスを担保する仕組みの整備
音声やテキストなどの非構造化データを含んだデータ分析基盤の構築
まずは既存の Scheduled Query をすべて Dataform 管理に移行することで、既存のパイプラインを把握しつつ、同時に不要なデータセットやテーブルを棚卸しすることで管理コストを低減したいと考えています。
上記と同時に Dataform の利用を促進することで Data Engineering チームだけではなく開発チーム全体がデータ分析基盤を管理更新出来る状態を目指しています。
また、アプリケーションDBのデータについて、現状は外部クエリで定期的に取得するパイプラインになっています。そのためリアルタイム性が低く分析がしづらいケースが存在するので、リアルタイム性を担保するために Datastream の導入を予定しています。
現在のBQテーブルのデータについて、品質の問題もそれなりに発生しているため、品質を担保する取り組みをその後に進めつつ、現状分析対象にできていない「非構造化データ」を含んだデータ分析基盤の構築も進めていければと考えています。
まとめ
REALITYのデータ分析基盤はまだ取り組みがいのある問題が多く、これらの問題を解決することで、より良いプロダクト開発の意思決定に繋げられることを確信しています。
引き続き、データ分析基盤とその管理体制を改善して行きます。
REALITYでは「信頼性と利便性が高いデータ分析基盤の構築」を一緒に推進してくれるデータエンジニアの方を募集しています。
ご興味がある方は是非以下のリンクからご応募頂けると幸いです!