kubell(旧Chatwork)のデータ分析基盤でのdbt活用について
株式会社kubell / みっつ
テックリード / テックリード / 従業員規模: 301名〜500名 / エンジニア組織: 51名〜100名
利用プラン | 利用機能 | ツールの利用規模 | ツールの利用開始時期 |
---|---|---|---|
Team(dbtCloud) | データ取り込みの制御、データモデル構築(ステージング・中間・意味層) | 10名以下 | 2022年 |
利用プラン | Team(dbtCloud) |
---|---|
利用機能 | データ取り込みの制御、データモデル構築(ステージング・中間・意味層) |
ツールの利用規模 | 10名以下 |
ツールの利用開始時期 | 2022年 |
アーキテクチャ
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
制御を自前のshellスクリプト+αで行っていたため、以下のような課題がありました。
- データモデルが追加される度に、制御の仕組みも実装する必要がある。
- モデル間の依存関係による実行順序の制御や開発・テスト・本番などの環境差異などの全てを、自前スクリプトで制御していたため、構造が大きくなると制御スクリプトの改修のコストが増大してしまう。
- 開発・運用ともに属人化が進行しやすく、スケールが難しい要因となる。
どのような状態を目指していたか
次世代のデータ分析基盤を立ち上げるにあたって、開発・運用ともに小さく始め、スケールできる仕組みを目指しました。
- 少リソースで開発を始められ、スケールも見込めること。
- 少ない労力で運用が可能になること。
- データ品質をテストする仕組みがあること。
比較検討したサービス
- 自前のshellスクリプト
- digdag
比較した軸
主要なところとしては以下のような点でした。
- ストレスなく開発を進められること(できれば楽しく!)。
- 運用がツラくならないこと。
- スムーズにスケールできるかどうか。
選定理由
- データ処理に必要な一般的な基本機能(incremental, snapshot)をフレームワークで実装する仕組みを持っていたこと。
- データモデルの依存関係を自動解決する仕組み(run, build)があり、運用がツラくならない見通しが立てられたこと。
導入の成果
改善したかった課題はどれくらい解決されたか
開発・運用を始めてから2年以上が経過しましたが、基本レベルの課題は全て解消できています。 それにより今は、より高レベルなスケールする構造・実装への対応や生産性を高める自動化、テストの導入に取り組んでいます。
どのような成果が得られたか
プロジェクトの立ち上げ当初は想定していなかった、以下のような利用拡大にも対応できる開発体制を構築できました。
- データ基盤を利用する側のアナリストも開発に参加するようになった。(アナリストが自ら必要なデータモデル(意味層)をdbtで実装するように)
- 別ドメイン(他会社、事業)のデータ基盤構築に対して、素早く横展開できた。
導入に向けた社内への説明
上長・チームへの説明
以下のような点を示しました。
- 「ツール導入前の課題」で示した問題に対して解決が見込めること。
- 基本的な使い方では使用料などの追加費用が発生しないこと。
- スケールに対して十分な拡張性を見込めること。
- これからのデータ基盤技術の進化に追従していけること。
活用方法
よく使う機能
- 実行コマンド
- データ処理を実行する際にbuild, run, snapshot, test...etcを使います。
- オプションで--selectでモデルを指定したり、--targetで環境を切り替えたりします。
- run-operationで環境構築を実行する便利ツールもいくつか用意しています。
- incremental、snapshot、マクロ、test・meta(yaml)などの実装
- incremental、snapshotは定形処理処理を枠組み化したもので使いこなすと便利です。
- マクロを使うとさまざまな処理を補完できます。
- testやmetaはyamlに記述して、品質チェックやデータマスキングの設定で使います。
ツールの良い点
- データ処理に必要な基本機能が枠組み化・型化されていて、より高レベルの課題対応に集中できる。
- 開発(OSS)が活発で順当に進化している。
- 基本機能は無料で使える。
ツールの課題点
データ処理をの基本機能はあるものの、スケールが進むと、以下のような課題が生じました。
- 名前空間がないため、モデル名で吸収する必要がある(モデル名が長くなる)
- 他システムと連携するデータ取り込みや、Job制御などは別途オーケストレーションを導入する必要がある(ここはdbtCloudにあるが弱いため、別で置き換え予定)
ツールを検討されている方へ
これからデータ基盤構築を始める場合は、検証しておいて損はないと思います。
特にSQLで色々な設定を適用できるSnowflakeと合わせると、環境まわり(外部ストレージ/table構築、タグベースマスキングの設定...etc)もコード化できて、生産性を向上させる実装ができるようになるのでオススメです!
株式会社kubell / みっつ
テックリード / テックリード / 従業員規模: 301名〜500名 / エンジニア組織: 51名〜100名
よく見られているレビュー
株式会社kubell / みっつ
テックリード / テックリード / 従業員規模: 301名〜500名 / エンジニア組織: 51名〜100名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法