$30 off During Our Annual Pro Sale. View Details »

次の10年を戦える分析用データ基盤構築の第一歩 - dbtによる基盤刷新とクエリ費用90%削減への取り組み -

次の10年を戦える分析用データ基盤構築の第一歩 - dbtによる基盤刷新とクエリ費用90%削減への取り組み -

Yappli Tech Conference 2023 の発表資料です。

▼登壇記事▼
https://tech.yappli.io/entry/yapplitechconf2023-data

▼イベントページ▼
https://yappli.connpass.com/event/295001/

yamamoto-yuta

October 19, 2023
Tweet

More Decks by yamamoto-yuta

Other Decks in Technology

Transcript

  1. 次の10年を戦える


    分析⽤データ基盤構築の第⼀歩


    - dbtによる基盤刷新とクエリ費⽤90%削減への取り組み -

    View Slide

  2. Speaker
    プロダクト開発本部 技術戦略室


    データサイエンティスト
    ⼭本 雄太
    • 23新卒データサイエンティスト


    • dbtを使⽤した集計システムの刷新を担当


    • 学⽣時代は機械学習を⽤いた特許解析の研究に取
    り組みつつ、インターン等を通してWebシステム
    の開発‧運⽤を経験


    • 社内でのあだ名は「もっさん」
    @__Y4M4MOTO__

    View Slide

  3. 1
    2
    本⽇お伝えする内容
    本⽇お伝えしない内容
    • ヤプリの分析⽤データ基盤をdbtで刷新しようとしている話


    • 刷新によって、Yappli 管理画⾯ (CMS) のダッシュボード⽤集計クエリの実⾏費⽤を90%削減しよう
    としている話


    ➡︎
    まだ刷新途中
    • 刷新を完了して得られた効果


    • 実際どのくらい費⽤を削減できたのか?


    ➡︎
    刷新完了後、またどこかで…!
    00 はじめに

    View Slide

  4. 01


    02


    03


    04


    05


    06


    分析⽤データ基盤刷新に⾄った経緯


    課題①|分析⽤データマートの全容把握が困難


    課題②|CMSダッシュボードのクエリ費⽤の削減


    分析⽤データ基盤刷新の⽅向性と現在の進捗状況


    刷新にあたっての⼯夫点


    まとめ


    View Slide

  5. 01 分析⽤データ基盤刷新に


    ⾄った経緯

    View Slide

  6. 01 分析⽤データ基盤刷新に⾄った経緯
    10年⽬のヤプリにデータは⽋かせない存在
    Yappli 管理画⾯


    ダッシュボード
    Yappli Data Hub Yappli Analytics

    View Slide

  7. 01 分析⽤データ基盤刷新に⾄った経緯
    新規事業でもデータは核となる存在
    Yappli CRM Yappli for Retail App Ads Yappli UNITE

    View Slide

  8. 01 分析⽤データ基盤刷新に⾄った経緯
    次の10年を戦えるデータ活⽤ロードマップ
    データマネジメントの強化
    STEP 1
    データの⼀次活⽤の強化
    STEP 2
    データの⼆次活⽤
    STEP 3
    • データモデリング


    • データカタログ作成 etc

    今ココ
    • アプリ横断での分析 etc

    • 効果検証、レコメンド


    • ⽣成 AI への埋め込み etc

    View Slide

  9. 01 分析⽤データ基盤刷新に⾄った経緯
    今のヤプリの分析⽤データ基盤の課題
    ① 分析⽤データマートの全容が把握しづらい


    ② CMSダッシュボードのクエリ費⽤がかさんでしまっている

    View Slide

  10. 02 課題①


    分析⽤データマートの


    全容把握が困難

    View Slide

  11. 02 課題①|分析⽤データマートの全容把握が困難
    ヤプリの分析⽤データマート
    • BigQuery を DWH として、trocco でデータマートを作成
    • 分析基盤構築‧運⽤の⽀援SaaS


    • ETL/データ転送


    • データマート⽣成


    • ジョブ管理


    • etc

    画像: trocco サービスページから引⽤
    「trocco」とは?

    View Slide

  12. 02 課題①|分析⽤データマートの全容把握が困難
    ヤプリではデータ活⽤ツールとして trocco が浸透
    trocco がデータ活⽤の要

    View Slide

  13. 02 課題①|分析⽤データマートの全容把握が困難
    分析⽤データマート作成 trocco ワークフロー

    View Slide

  14. 02 課題①|分析⽤データマートの全容把握が困難
    分析⽤データマート作成 trocco ワークフロー
    ワークフロー実⾏ジョブが3段

    View Slide

  15. 02 課題①|分析⽤データマートの全容把握が困難
    分析⽤データマート作成 trocco ワークフロー
    Data Hub 共通


    データマート作成ジョブ
    Data Hub クライアント別


    データマート作成ジョブ
    Yappli Analytics ⽤


    データマート作成ジョブ

    View Slide

  16. 02 課題①|分析⽤データマートの全容把握が困難
    分析⽤データマート作成 trocco ワークフロー
    Data Hub 共通


    データマート作成ジョブ
    Data Hub クライアント別


    データマート作成ジョブ
    Yappli Analytics ⽤


    データマート作成ジョブ
    データマートの全容が把握しづらい…

    View Slide

  17. 02 課題①|分析⽤データマートの全容把握が困難
    今の分析⽤データマート作成⽅法の課題
    このジョブで参照しているテーブルの


    成り⽴ちを知るには…
    Data Hub クライアント別


    データマート作成ジョブ
    Data Hub 共通


    データマート作成ジョブ
    ここまで遡って1つずつ


    ジョブを確認するしかない

    View Slide

  18. 02 課題①|分析⽤データマートの全容把握が困難
    今の分析⽤データマート作成⽅法の課題
    Data Hub 共通


    データマート作成ジョブ
    各ジョブが参照‧作成しているテーブルの関係
    どこでどのテーブルが参照‧作成されているのか?が把握しづらい…

    View Slide

  19. 02 課題①|分析⽤データマートの全容把握が困難
    分析⽤データマートの全容が把握しづらいと…
    • ワークフローのメンテナンスが⼤変


    • メンテナンス作業が属⼈化

    View Slide

  20. 03 課題②


    CMSダッシュボードの


    クエリ費⽤の削減

    View Slide

  21. 03 課題②|CMSダッシュボードのクエリ費⽤の削減
    Yappli の CMS では次のダッシュボードを提供
    • 新規ユーザ数


    • QR/短縮URLコード読み取り数


    • アクティブユーザ数


    • コンテンツ閲覧数


    • オートプッシュ配信数


    • クーポン利⽤数


    • プッシュ配信数

    View Slide

  22. 03 課題②|CMSダッシュボードのクエリ費⽤の削減
    CMSダッシュボードの成り⽴ち
    • 今の CMS ダッシュボードができたのは3年前


    • 運⽤時の修正対応やアップデートのしやすさを考慮して、

    各データの集計をデータソースから1クエリで⾏うよう実装
    データソース
    CMSダッシュボード
    クエリ

    View Slide

  23. 03 課題②|CMSダッシュボードのクエリ費⽤の削減
    CMSダッシュボードの成り⽴ち
    • 各データの集計をデータソースから1クエリで⾏うと…
    メリット
    • 実装スピードが早い


    • 集計結果に異常があった際の原因が単⼀のクエリ内に限定される


    • 集計結果を修正する際のデータ差し替えが容易
    デメリット
    • 過去分の結果を毎⽇更新するため、同じ集計を何度も⾏わざるを得ない

    ➡︎
    処理⾯、データスキャン量(=コスト)⾯で無駄が多い
    運⽤開始から3年経った現在では、


    メリットよりデメリットの⽅が勝ってしまっている状況

    View Slide

  24. 03 課題②|CMSダッシュボードのクエリ費⽤の削減
    集計元切り替えによるクエリ費⽤へのインパクト
    データソースから


    直接集計
    共通データマートから集計
    クエリ費⽤


    約90%削減
    分析⽤データ基盤刷新と併せてクエリの集計元切り替えも実施することに

    View Slide

  25. 04 分析⽤データ基盤刷新の


    ⽅向性と現在の進捗状況

    View Slide

  26. 04 分析⽤データ基盤刷新の⽅向性
    今の分析⽤データ基盤
    BigQuery
    Data Hub メインワークフロー
    Data Hub


    共通データマート


    作成ジョブ
    Data Hub


    クライアント別データマート


    作成ジョブ
    Yappli Analytics ⽤


    データマート


    作成ジョブ
    Yappli


    CMS ダッシュボード

    View Slide

  27. 04 分析⽤データ基盤刷新の⽅向性
    今の分析⽤データ基盤
    1
    . Data Hub 共通データマート作成ジョブを

    データ分析全般⽤の共通データマート作成ジョブへ刷新


    2
    . CMS ダッシュボード集計元を切り替え
    BigQuery
    Data Hub メインワークフロー
    Data Hub


    共通データマート


    作成ジョブ
    Data Hub


    クライアント別データマート


    作成ジョブ
    Yappli Analytics ⽤


    データマート


    作成ジョブ
    Yappli


    CMS ダッシュボード

    View Slide

  28. 04 分析⽤データ基盤刷新の⽅向性
    刷新⽅法
    • データマート作成処理を dbt でリプレイス
    • データの加⼯処理を管理してくれるツール


    • SQL による加⼯処理の git 管理を可能に


    • データカタログの⾃動⽣成


    • データのテスト


    • etc


    • 無償CLI版と有償SaaS版がある


    • ヤプリでは無償CLI版を採⽤
    「dbt」とは?

    View Slide

  29. 04 分析⽤データ基盤刷新の⽅向性
    dbtを採⽤した理由
    • trocco が dbt 連携を追加料⾦なしでサポートしていたため


    • 他の選択肢は下記を無視できるほどのメリットは無いと判断:


    • 社内で trocco がすでに普及


    • trocco が dbt を追加料⾦なしでサポート


    • オーケストレーションツールが複数にまたがると運⽤が複雑化

    View Slide

  30. 04 分析⽤データ基盤刷新の⽅向性
    現時点での分析⽤データ基盤の状況
    BigQuery
    Data Hub メインワークフロー
    Data Hub


    共通データマート


    作成ジョブ
    Data Hub


    クライアント別データマート


    作成ジョブ
    Yappli


    CMS ダッシュボード
    新ワークフロー
    データ分析全般⽤


    共通データマート


    作成ジョブ
    データ分析全般⽤


    共通データマート作成


    dbt プロジェクト
    trocco 上で実⾏
    Yappli Analytics ⽤


    データマート


    作成ジョブ

    View Slide

  31. 新ワークフロー
    04 分析⽤データ基盤刷新の⽅向性
    現時点での分析⽤データ基盤の状況
    BigQuery
    Data Hub メインワークフロー
    Data Hub


    共通データマート


    作成ジョブ
    Data Hub


    クライアント別データマート


    作成ジョブ
    Yappli


    CMS ダッシュボード
    CMS ダッシュボードの


    集計元切り替えを実施中…
    Yappli Analytics ⽤


    データマート


    作成ジョブ
    データ分析全般⽤


    共通データマート


    作成ジョブ
    データ分析全般⽤


    共通データマート作成


    dbt プロジェクト
    trocco 上で実⾏
    共通データマートの


    dbt での作り直しは完了

    View Slide

  32. 04 分析⽤データ基盤刷新の⽅向性
    共通データマートの dbt モデリング
    Staging
    • View で実体化


    • データソースにあるテーブルと1:1対応で作成


    • 名前や値の揺らぎを是正
    Component
    • Table で実体化


    • ディメンションテーブルやファクトテーブルを作成
    Aggregation
    • Table で実体化


    • ダッシュボード等で参照するためのデータマートテーブルを作成
    データソース BigQuery、スプレッドシート etc

    データ活⽤ ダッシュボード etc

    View Slide

  33. 04 分析⽤データ基盤刷新の⽅向性
    CMS ダッシュボードの集計元切り替え⽅法
    既存クエリ
    sku アクティブユーザ数
    xxx xxx
    xxx xxx


    ① 条件を固定して実⾏
    ② 実⾏結果を


      保存
    新クエリ
    sku アクティブユーザ数
    xxx xxx
    xxx xxx


    ③ 同じ条件で実⾏
    ④ 実⾏結果を⽐較

    View Slide

  34. 04 分析⽤データ基盤刷新の⽅向性
    現時点での分析⽤データ基盤の状況
    BigQuery
    Data Hub メインワークフロー
    Data Hub


    共通データマート


    作成ジョブ
    Data Hub


    クライアント別データマート


    作成ジョブ
    Yappli


    CMS ダッシュボード
    新ワークフロー
    Yappli Analytics ⽤


    データマート


    作成ジョブ
    データ分析全般⽤


    共通データマート


    作成ジョブ
    データ分析全般⽤


    共通データマート作成


    dbt プロジェクト
    trocco 上で実⾏ 既存の共通データマートとの


    置き換えは今後実施予定

    View Slide

  35. 05 刷新にあたっての⼯夫点

    View Slide

  36. 1 dbt docs を GitHub Page でホスティング&⾃動更新
    05 刷新にあたっての⼯夫点
    • モデルの情報、関係性を簡単&すぐに確認可能


    ➡ CMSダッシュボードの集計元切り替えで、

    既存クエリと新クエリの差分発⽣時の原因特定がスムーズに

    View Slide

  37. 2 他の DS メンバー向けに dbt 学習資料を⽤意
    05 刷新にあたっての⼯夫点
    • まだ刷新プロジェクト担当の DS メンバーしか dbt を扱えない


    ➡ メンテナンスの属⼈化防⽌のため、全 DS メンバーが dbt を扱えるようにしたい


    • ヤプリには、社内 Slack 活性化のための Slack データ基盤が存在


    • チャンネル⼀覧、ユーザ⼀覧、メッセージ⼀覧のデータが利⽤可能


    • 実際の Slack 活性化ソリューション開発を通して dbt を学習できる資料を作成


    ➡ 基本操作だけでなく、より実践的な dbt スキルが⾝につけられる

    View Slide

  38. 2 他の DS メンバー向けに dbt 学習資料を⽤意
    05 刷新にあたっての⼯夫点
    • ドキュメントは全部で3チャプター

    View Slide

  39. 2 他の DS メンバー向けに dbt 学習資料を⽤意
    05 刷新にあたっての⼯夫点
    • 実際に開発された Slack 活性化ソリューション

    View Slide

  40. 2 他の DS メンバー向けに dbt 学習資料を⽤意
    05 刷新にあたっての⼯夫点
    • 内定者インターン⽣も取り組み中


    • 実際に取り組んだインターン⽣の声:


    • 「dbt を使ったことがない⼈にとって⾮常に助かる資料」


    • 「辞書のように使っている」


    • 「資料をもとに⾃分で新たにソリューション開発を⾏った時が⼀番 dbt スキルがついた」

    View Slide

  41. 3 データマート側とプロダクト側で責務を明確化
    05 刷新にあたっての⼯夫点
    • 今まで、 CMS ダッシュボードはデータソースから1クエリで集計を実施


    ➡単なる集計とプロダクト側の仕様が集計クエリに混在…


    • カラムの順番、名前


    • プロダクト側で必要な追加カラム( ID カラム、 Appendix カラム etc




    • 集計ロジックはデータマート側の責務、

    仕様に合わせる処理はプロダクト側の責務としてクエリを作成


    ➡集計結果に異常が発⽣した際、修正範囲がデータマート側で完結可能

    View Slide

  42. 06 まとめ

    View Slide

  43. 06 まとめ
    本⽇お伝えした内容
    • ヤプリの今の分析⽤データ基盤には次の課題が存在:


    • 分析⽤データマートの全容が把握しづらい


    • CMS ダッシュボードのクエリ費⽤がかさんでしまっている


    • 課題に対し、次の2つを現在実施中:


    • 共通データマートを dbt で刷新


    • CMS ダッシュボードの集計元をデータソース直接から共通データマートへ切り替え


    • 刷新にあたっての⼯夫点は次の3つ:


    • dbt docs を GitHub Page でホスティング&⾃動更新


    • 他の DS メンバー向けに dbt 学習資料を⽤意


    • データマート側とプロダクト側で責務を明確化

    View Slide