Sansan株式会社でのdbt導入事例
Sansan株式会社 / Ryo Nakamura
メンバー / データエンジニア / 従業員規模: 1,001〜5,000名 / エンジニア組織: 301名〜500名
利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
dbt core | 10名以下 | 2023年10月 | B to B |
利用プラン | dbt core |
---|---|
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2023年10月 |
事業形態 | B to B |
アーキテクチャ
アーキテクチャの意図・工夫
- Cloud Composerでワークフローを管理しており、ワーカーから直接Programmatic invocationsを実行しdbtを実行しています。
- (上記アーキテクチャ図には記載していないのですが)本番環境にモデルを反映する前に本番環境のデータを用いたモデルの作成を行うCI環境を構築し、リリース予定のモデルの結果を確認できるようにしています。
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
Sansanでは営業DXサービスであるSansanやインボイス管理サービスBill One、契約DXサービスContract OneなどのBtoBサービスと、個人向け名刺アプリEightをはじめとし、各事業を展開しています。これらのプロダクトのデータはAWSやGCPなどのクラウド環境上にそれぞれ蓄積されており、またその他にも社内CRMツールのデータや外部購入した企業マスタデータなどもそれぞれ異なる環境に存在していました。
このデータサイロを解消し、一元的にこれらのデータにアクセスできることにより、正確な意思決定を迅速に行えるデータ基盤の構築を目的として、2022/7頃より全社横断データ基盤の構築プロジェクトが発足しました。
アーキテクチャ概要としては、DWHとしてBigQueryを用い、Cloud Composerでワークフローを制御し、各種Operatorを用いてLoadやBigQueryへのクエリ実行をしています。
2022/8頃には社内の主要なデータが集まり、少数のデータマート(50-100程度。BIでのKPI可視化や社内CRMツールへのデータ連携用途)もCloud Composerからのクエリ実行で作成していましたが、それらはレイク→マートでの変換処理にとどまっていました。
データマート数の増加に伴い、共通ロジック(CTE句)の使いまわしや肥大化するTransformクエリなどが散見され、共通的に標準加工/モデリングされたウェアハウス層のニーズも高まったことから、dbtの導入に踏み切りました。
どのような状態を目指していたか
- 複数のデータマートで利用されるTransformロジックを管理し、再利用性の高いウェアハウス層を提供する。
- 主要なテーブルに対し、データ品質の担保を行う。
- リネージュを可視化し、データソースの変更や異常における影響範囲の特定を可能にする。
- SQLの読み書きさえできれば、安心してデータモデリングに取り組める環境を提供する。
比較検討したサービス
- dbt Cloud
- Dataform
比較した軸
- 手軽に使える(初期投資コストが低い)
- ドキュメントやエコシステムが充実している&コミュニティが活発である
- 特定のDWH製品に依存しない(仮にBigQuery以外でデータ基盤を構築する際にも知見が活かせる)
- 非エンジニアでもカタログが見やすい
導入の成果
改善したかった課題はどれくらい解決されたか
- 当初の課題は概ね解決しました。
どのような成果が得られたか
- 共通的なデータウェアハウス層のテーブルが作成しやすくなり、データマートの提供までのリードタイムが下がり、データ利活用の速度が向上しました。
- 執筆時点では1100程度のテーブルが作成されている(データウェアハウス&データマート)
- テストを実装することでデータソース〜データマートにおける異常を検知できています。
- Visual Studio Codeの拡張機能やdbt-osmosisなどを活用することで、アナリティクスエンジニアが素早く開発できています。
導入に向けた社内への説明
上長・チームへの説明
- Architecture Decision Recordを記載しそこに情報を集約し、合意を取った
- 現状の課題や今後の基盤エンハンスを見据えたうえで、dbt core及び比較サービス導入した際のPros/Cons
- 移行のフェーズ制定(どのデータセットからdbt化するか/generic testをいつ取り入れるか/カタログやメタデータの拡充はいつやるか など)と各フェーズ終了時においての評価項目・導入を取りやめる撤退ライン
活用方法
よく使う機能
- dbt run/test/snapshot
- データカタログ(Cloud Run上にdbtのデータカタログをホスティングし、BigQueryのdescriptionにも反映させています。)
ツールの良い点
- dbt coreの場合、導入コストが低い。
- 活用事例が多いため、それらを参考にしつつ、自社のデータ基盤エンハンスを進めていける。
- 開発が盛んに行われている
ツールの課題点
- dbtプロジェクト内でモデル名が一意である必要があるため、テーブルの作成先データセットが複数ある場合カスタムmacroの実装などが必要
- モデルが作成しやすい一方、根底のデータモデリングルールの制定も併せて行わないと、カオスが生まれうる。
- dbt Cloudの機能がdbt core向けにリリースされるまでラグがある。
- ワークフローの定義&実行機能は持っていないため、設計する必要がある
ツールを検討されている方へ
dbtは、データ基盤構築において、非常に優れたツールだと思います。
Building a Kimball dimensional model with dbt などで手軽に使用感もわかるので、導入を検討される際には一度触って見るのが良いかと思います。
今後の展望
今後、よりデータ活用が進み、モデル数が10倍以上にスケールした場合にも、耐えられるようなdbtプロジェクトやデータ基盤の進化が必要だと考えています。
Sansan株式会社 / Ryo Nakamura
メンバー / データエンジニア / 従業員規模: 1,001〜5,000名 / エンジニア組織: 301名〜500名
よく見られているレビュー
Sansan株式会社 / Ryo Nakamura
メンバー / データエンジニア / 従業員規模: 1,001〜5,000名 / エンジニア組織: 301名〜500名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法