Yappli Tech Conference 2023 の発表資料です。
▼登壇記事▼ https://tech.yappli.io/entry/yapplitechconf2023-data
▼イベントページ▼ https://yappli.connpass.com/event/295001/
次の10年を戦える分析⽤データ基盤構築の第⼀歩- dbtによる基盤刷新とクエリ費⽤90%削減への取り組み -
View Slide
Speakerプロダクト開発本部 技術戦略室データサイエンティスト⼭本 雄太• 23新卒データサイエンティスト• dbtを使⽤した集計システムの刷新を担当• 学⽣時代は機械学習を⽤いた特許解析の研究に取り組みつつ、インターン等を通してWebシステムの開発‧運⽤を経験• 社内でのあだ名は「もっさん」@__Y4M4MOTO__
12本⽇お伝えする内容本⽇お伝えしない内容• ヤプリの分析⽤データ基盤をdbtで刷新しようとしている話• 刷新によって、Yappli 管理画⾯ (CMS) のダッシュボード⽤集計クエリの実⾏費⽤を90%削減しようとしている話➡︎まだ刷新途中• 刷新を完了して得られた効果• 実際どのくらい費⽤を削減できたのか?➡︎刷新完了後、またどこかで…!00 はじめに
010203040506分析⽤データ基盤刷新に⾄った経緯課題①|分析⽤データマートの全容把握が困難課題②|CMSダッシュボードのクエリ費⽤の削減分析⽤データ基盤刷新の⽅向性と現在の進捗状況刷新にあたっての⼯夫点まとめ
01 分析⽤データ基盤刷新に⾄った経緯
01 分析⽤データ基盤刷新に⾄った経緯10年⽬のヤプリにデータは⽋かせない存在Yappli 管理画⾯ダッシュボードYappli Data Hub Yappli Analytics
01 分析⽤データ基盤刷新に⾄った経緯新規事業でもデータは核となる存在Yappli CRM Yappli for Retail App Ads Yappli UNITE
01 分析⽤データ基盤刷新に⾄った経緯次の10年を戦えるデータ活⽤ロードマップデータマネジメントの強化STEP 1データの⼀次活⽤の強化STEP 2データの⼆次活⽤STEP 3• データモデリング• データカタログ作成 etc…今ココ• アプリ横断での分析 etc…• 効果検証、レコメンド• ⽣成 AI への埋め込み etc…
01 分析⽤データ基盤刷新に⾄った経緯今のヤプリの分析⽤データ基盤の課題① 分析⽤データマートの全容が把握しづらい② CMSダッシュボードのクエリ費⽤がかさんでしまっている
02 課題①分析⽤データマートの全容把握が困難
02 課題①|分析⽤データマートの全容把握が困難ヤプリの分析⽤データマート• BigQuery を DWH として、trocco でデータマートを作成• 分析基盤構築‧運⽤の⽀援SaaS• ETL/データ転送• データマート⽣成• ジョブ管理• etc…画像: trocco サービスページから引⽤「trocco」とは?
02 課題①|分析⽤データマートの全容把握が困難ヤプリではデータ活⽤ツールとして trocco が浸透trocco がデータ活⽤の要
02 課題①|分析⽤データマートの全容把握が困難分析⽤データマート作成 trocco ワークフロー
02 課題①|分析⽤データマートの全容把握が困難分析⽤データマート作成 trocco ワークフローワークフロー実⾏ジョブが3段
02 課題①|分析⽤データマートの全容把握が困難分析⽤データマート作成 trocco ワークフローData Hub 共通データマート作成ジョブData Hub クライアント別データマート作成ジョブYappli Analytics ⽤データマート作成ジョブ
02 課題①|分析⽤データマートの全容把握が困難分析⽤データマート作成 trocco ワークフローData Hub 共通データマート作成ジョブData Hub クライアント別データマート作成ジョブYappli Analytics ⽤データマート作成ジョブデータマートの全容が把握しづらい…
02 課題①|分析⽤データマートの全容把握が困難今の分析⽤データマート作成⽅法の課題このジョブで参照しているテーブルの成り⽴ちを知るには…Data Hub クライアント別データマート作成ジョブData Hub 共通データマート作成ジョブここまで遡って1つずつジョブを確認するしかない
02 課題①|分析⽤データマートの全容把握が困難今の分析⽤データマート作成⽅法の課題Data Hub 共通データマート作成ジョブ各ジョブが参照‧作成しているテーブルの関係どこでどのテーブルが参照‧作成されているのか?が把握しづらい…
02 課題①|分析⽤データマートの全容把握が困難分析⽤データマートの全容が把握しづらいと…• ワークフローのメンテナンスが⼤変• メンテナンス作業が属⼈化
03 課題②CMSダッシュボードのクエリ費⽤の削減
03 課題②|CMSダッシュボードのクエリ費⽤の削減Yappli の CMS では次のダッシュボードを提供• 新規ユーザ数• QR/短縮URLコード読み取り数• アクティブユーザ数• コンテンツ閲覧数• オートプッシュ配信数• クーポン利⽤数• プッシュ配信数
03 課題②|CMSダッシュボードのクエリ費⽤の削減CMSダッシュボードの成り⽴ち• 今の CMS ダッシュボードができたのは3年前• 運⽤時の修正対応やアップデートのしやすさを考慮して、 各データの集計をデータソースから1クエリで⾏うよう実装データソースCMSダッシュボードクエリ
03 課題②|CMSダッシュボードのクエリ費⽤の削減CMSダッシュボードの成り⽴ち• 各データの集計をデータソースから1クエリで⾏うと…メリット• 実装スピードが早い• 集計結果に異常があった際の原因が単⼀のクエリ内に限定される• 集計結果を修正する際のデータ差し替えが容易デメリット• 過去分の結果を毎⽇更新するため、同じ集計を何度も⾏わざるを得ない ➡︎処理⾯、データスキャン量(=コスト)⾯で無駄が多い運⽤開始から3年経った現在では、メリットよりデメリットの⽅が勝ってしまっている状況
03 課題②|CMSダッシュボードのクエリ費⽤の削減集計元切り替えによるクエリ費⽤へのインパクトデータソースから直接集計共通データマートから集計クエリ費⽤約90%削減分析⽤データ基盤刷新と併せてクエリの集計元切り替えも実施することに
04 分析⽤データ基盤刷新の⽅向性と現在の進捗状況
04 分析⽤データ基盤刷新の⽅向性今の分析⽤データ基盤BigQueryData Hub メインワークフローData Hub共通データマート作成ジョブData Hubクライアント別データマート作成ジョブYappli Analytics ⽤データマート作成ジョブYappliCMS ダッシュボード
04 分析⽤データ基盤刷新の⽅向性今の分析⽤データ基盤1. Data Hub 共通データマート作成ジョブを データ分析全般⽤の共通データマート作成ジョブへ刷新2. CMS ダッシュボード集計元を切り替えBigQueryData Hub メインワークフローData Hub共通データマート作成ジョブData Hubクライアント別データマート作成ジョブYappli Analytics ⽤データマート作成ジョブYappliCMS ダッシュボード
04 分析⽤データ基盤刷新の⽅向性刷新⽅法• データマート作成処理を dbt でリプレイス• データの加⼯処理を管理してくれるツール• SQL による加⼯処理の git 管理を可能に• データカタログの⾃動⽣成• データのテスト• etc… • 無償CLI版と有償SaaS版がある• ヤプリでは無償CLI版を採⽤「dbt」とは?
04 分析⽤データ基盤刷新の⽅向性dbtを採⽤した理由• trocco が dbt 連携を追加料⾦なしでサポートしていたため• 他の選択肢は下記を無視できるほどのメリットは無いと判断:• 社内で trocco がすでに普及• trocco が dbt を追加料⾦なしでサポート• オーケストレーションツールが複数にまたがると運⽤が複雑化
04 分析⽤データ基盤刷新の⽅向性現時点での分析⽤データ基盤の状況BigQueryData Hub メインワークフローData Hub共通データマート作成ジョブData Hubクライアント別データマート作成ジョブYappliCMS ダッシュボード新ワークフローデータ分析全般⽤共通データマート作成ジョブデータ分析全般⽤共通データマート作成dbt プロジェクトtrocco 上で実⾏Yappli Analytics ⽤データマート作成ジョブ
新ワークフロー04 分析⽤データ基盤刷新の⽅向性現時点での分析⽤データ基盤の状況BigQueryData Hub メインワークフローData Hub共通データマート作成ジョブData Hubクライアント別データマート作成ジョブYappliCMS ダッシュボードCMS ダッシュボードの集計元切り替えを実施中…Yappli Analytics ⽤データマート作成ジョブデータ分析全般⽤共通データマート作成ジョブデータ分析全般⽤共通データマート作成dbt プロジェクトtrocco 上で実⾏共通データマートのdbt での作り直しは完了
04 分析⽤データ基盤刷新の⽅向性共通データマートの dbt モデリングStaging• View で実体化• データソースにあるテーブルと1:1対応で作成• 名前や値の揺らぎを是正Component• Table で実体化• ディメンションテーブルやファクトテーブルを作成Aggregation• Table で実体化• ダッシュボード等で参照するためのデータマートテーブルを作成データソース BigQuery、スプレッドシート etc…データ活⽤ ダッシュボード etc…
04 分析⽤データ基盤刷新の⽅向性CMS ダッシュボードの集計元切り替え⽅法既存クエリsku アクティブユーザ数xxx xxxxxx xxx……① 条件を固定して実⾏② 実⾏結果を 保存新クエリsku アクティブユーザ数xxx xxxxxx xxx……③ 同じ条件で実⾏④ 実⾏結果を⽐較
04 分析⽤データ基盤刷新の⽅向性現時点での分析⽤データ基盤の状況BigQueryData Hub メインワークフローData Hub共通データマート作成ジョブData Hubクライアント別データマート作成ジョブYappliCMS ダッシュボード新ワークフローYappli Analytics ⽤データマート作成ジョブデータ分析全般⽤共通データマート作成ジョブデータ分析全般⽤共通データマート作成dbt プロジェクトtrocco 上で実⾏ 既存の共通データマートとの置き換えは今後実施予定
05 刷新にあたっての⼯夫点
1 dbt docs を GitHub Page でホスティング&⾃動更新05 刷新にあたっての⼯夫点• モデルの情報、関係性を簡単&すぐに確認可能➡ CMSダッシュボードの集計元切り替えで、 既存クエリと新クエリの差分発⽣時の原因特定がスムーズに
2 他の DS メンバー向けに dbt 学習資料を⽤意05 刷新にあたっての⼯夫点• まだ刷新プロジェクト担当の DS メンバーしか dbt を扱えない➡ メンテナンスの属⼈化防⽌のため、全 DS メンバーが dbt を扱えるようにしたい• ヤプリには、社内 Slack 活性化のための Slack データ基盤が存在• チャンネル⼀覧、ユーザ⼀覧、メッセージ⼀覧のデータが利⽤可能• 実際の Slack 活性化ソリューション開発を通して dbt を学習できる資料を作成➡ 基本操作だけでなく、より実践的な dbt スキルが⾝につけられる
2 他の DS メンバー向けに dbt 学習資料を⽤意05 刷新にあたっての⼯夫点• ドキュメントは全部で3チャプター
2 他の DS メンバー向けに dbt 学習資料を⽤意05 刷新にあたっての⼯夫点• 実際に開発された Slack 活性化ソリューション
2 他の DS メンバー向けに dbt 学習資料を⽤意05 刷新にあたっての⼯夫点• 内定者インターン⽣も取り組み中• 実際に取り組んだインターン⽣の声:• 「dbt を使ったことがない⼈にとって⾮常に助かる資料」• 「辞書のように使っている」• 「資料をもとに⾃分で新たにソリューション開発を⾏った時が⼀番 dbt スキルがついた」
3 データマート側とプロダクト側で責務を明確化05 刷新にあたっての⼯夫点• 今まで、 CMS ダッシュボードはデータソースから1クエリで集計を実施➡単なる集計とプロダクト側の仕様が集計クエリに混在…• カラムの順番、名前• プロダクト側で必要な追加カラム( ID カラム、 Appendix カラム etc…)• 集計ロジックはデータマート側の責務、 仕様に合わせる処理はプロダクト側の責務としてクエリを作成➡集計結果に異常が発⽣した際、修正範囲がデータマート側で完結可能
06 まとめ
06 まとめ本⽇お伝えした内容• ヤプリの今の分析⽤データ基盤には次の課題が存在:• 分析⽤データマートの全容が把握しづらい• CMS ダッシュボードのクエリ費⽤がかさんでしまっている• 課題に対し、次の2つを現在実施中:• 共通データマートを dbt で刷新• CMS ダッシュボードの集計元をデータソース直接から共通データマートへ切り替え• 刷新にあたっての⼯夫点は次の3つ:• dbt docs を GitHub Page でホスティング&⾃動更新• 他の DS メンバー向けに dbt 学習資料を⽤意• データマート側とプロダクト側で責務を明確化