Dataformを導入してBigQueryデータ基盤を進化させた株式会社ガラパゴスの事例
株式会社ガラパゴス / Kenta Kaneko
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|
10名以下 | 2023年9月 | B to B |
ツールの利用規模 | 10名以下 |
---|---|
ツールの利用開始時期 | 2023年9月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
BigQueryをベースにしたデータ基盤のため、取り扱うデータソースを一通りBigQueryに連携してから加工しています。Dataformによりデータマートに必要な項目を入れておくことで、自社プロダクトからBigQueryのAPIを呼び出して欲しいデータを取得できるような構造にしてあります。
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
元々Dataformを用いる前はBigQueryのみを使用していたのですが、以下のような課題がありました。
- SQLの管理が大変
- 日次更新したいBigQueryのテーブルは、スケジューリングされたクエリの機能を用いて更新していましたが、全てのSQLをこのクエリに集約すると膨大な行数になるので、作成したいtableごとにviewを分けて配置していました。ただし、テーブルの個数が増えるたびにスケジューリングクエリとviewの両方に手を加える必要があるので面倒でした。
- レビューがしづらく属人化している
- クエリをエンジニア内でレビューするためにGitHubにSQLを置いていましたが、他テーブルとの関連が見づらいのでクエリの修正が正しいか判断できず、レビューが十分に行える状況にありませんでした。それによりさらにデータ基盤の属人化が進むという悪循環に陥っていました。
- データ基盤の全体像が分かりづらい
- テーブルの依存関係を表す図を手動で書くのはとても手間がかかるので設計書のドキュメントを維持できず、データ基盤の最新版がパッと分からない状態でした。
どのような状態を目指していたか
これらの課題を無くすことで、エンジニアがデータを取り扱う際にスムーズに作業を進められ、なおかつ互いにレビューも行えるような状態を目指していました。
比較検討したサービス
当初dbtも検証する予定でしたが、最初に試したDataformで即決したため比較サービスは無いです。
比較した軸
- データ基盤に不慣れなエンジニアチームでも使いやすいこと
- 最新のデータ、クエリコードを管理しやすいこと
選定理由
BigQueryでデータ基盤を構築しておりDataformの導入コストが小さかったためです。何か問題が発覚したら別ツールに移行しても良いと考えていましたが、現在もDataformを使い続けています。
導入の成果
改善したかった課題はどれくらい解決されたか
導入以前に感じていた課題は全て解決されました。
- SQLの管理が大変
- Dataformでは全てのテーブルを定期的に一括更新できるため、テーブルごとのクエリを書くだけで済み管理が非常に楽になりました。またクエリ実装時にテーブルの参照元を書くことで自動的に依存関係も考慮してくれます。
- レビューがしづらく属人化している
- DataformはGitHubと連携できるため、一般的な開発フローと同様にGitHubでクエリをレビューできる状態になりました。
- データ基盤の全体像が分かりづらい
- Dataformのコンパイルグラフ機能を用いることで、テーブルの依存関係を簡単に可視化することが可能になりました。
どのような成果が得られたか
dataform導入後に機能拡張に伴いデータ基盤をスケールすることになりましたが、特に大きな混乱も無く現在までデータ基盤を運用できています。
導入時の苦労・悩み
当時は日本語の記事が少なく公式ドキュメントくらいしか無かったため、手がかりが少なかった点が唯一不安に感じていました。
導入に向けた社内への説明
上長・チームへの説明
実際にチームメンバーに向けてDataformの画面を見せながら使い方を説明したところ好評で、特にテーブルの依存関係をグラフで表すコンパイルグラフ機能の反応が良かったです。なお新しいものを積極的に試してみる組織なので上長への説明は必須でなく、チームの意見により導入を決めました。
活用方法
チームメンバーが開発した際にGitHub ActionsからCloud Run functions経由でDataform APIを呼び出すことで、クエリ変更をすぐにデータ基盤に反映させています。また途中でエラーが発生した際にはSlackのチャンネルに通知しています。
よく使う機能
BigQueryでできることはDataformでもできることが多く、テーブルのパーティションや主キーの設定もDataform経由で行っています。またスプレッドシートをソースとするテーブルを作る処理もDataformで行うことで、データ基盤のIaCがより進みます。
ツールの良い点
- BigQueryコンソール内にDataformのリンクがあり、お試しのハードルが低い
- データ基盤がBigQueryで完結している場合は使って損が無い
- 無料(クエリ実行にかかる費用はBigQueryに準じる)
ツールの課題点
- ドキュメントが少ない
- 別ロケーションにあるデータセットをそのまま使えない
- Google製ならではのUIのクセが若干ある(慣れれば使いやすい)
ツールを検討されている方へ
BigQueryコンソールからDataformのリンクを踏むとDataform APIの有効化の画面に切り替わりますが、間違えたと思って戻る方が大半かと思います。日頃からBigQueryやデータ基盤に関わるエンジニアであればそのまま有効化してしまっても問題ないです。常時稼働して莫大なコストがかかるようなツールでは無いので、間違えたついでに試しに使ってみてもよいかもしれません。
今後の展望
当初ドキュメントが少なかったDataformですが、最近では導入記事も増えてきたように思えます。それらを学習したか否か分かりませんが、ChatGPTやClaudeにDataformでのクエリ実装方法を尋ねるとそれらしい回答が返ってきます。現時点ではたまに参考にする程度しか使っていませんが、検証を深めて利用できるユースケースを増やしていきたいと思います。BigQueryやDataformの新機能も取り入れつつ、今後もより良いデータ基盤を目指して改善を続けていきます。
株式会社ガラパゴス / Kenta Kaneko
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
よく見られているレビュー
株式会社ガラパゴス / Kenta Kaneko
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 11名〜50名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法