Slide 1

Slide 1 text

© 2023 LayerX Inc. LayerXへのdbt導入時に意識したこと 2023/08/22 LTイベント「データ基盤における管理の考え方〜dbtの極意〜」 株式会社LayerX @civitaspo

Slide 2

Slide 2 text

2 © 2023 LayerX Inc. 所属 バクラク事業部Platform Engineering部DevOpsグループ Mgr 兼 バクラク事業部Platform Engineering部Product Securtyグループ 兼 バクラク事業部Data&ML部Dataグループ 兼 CTO室 SNS 𝕏 civitaspo   civitaspo その他 福岡在住 (一応)Embulkのメンテナ @civitaspo (きびたすぽ、きびちゃん)

Slide 3

Slide 3 text

3 © 2023 LayerX Inc. 「バクラク」シリーズラインナップ

Slide 4

Slide 4 text

4 © 2023 LayerX Inc.

Slide 5

Slide 5 text

© 2023 LayerX Inc. 本題

Slide 6

Slide 6 text

6 © 2023 LayerX Inc. このLTの内容をざっくり 「LayerXにdbtを導入するときに意識したこと」の背景 ● 2022年中頃までRedash+本番DB Read Replicaという牧歌的な分析環境 ● 複数プロダクト提供、及び利用SaaS増加等の背景からマルチデータソースを扱える分析環境が必要に ● BigQuery + dbt で分析環境を構築を決定 ● 初期は価値検証目的、そのまま利用拡大する可能性を考えて基盤構築する必要があった ● このLTはそんな状況下で何を考えてdbtを導入していったかお話します

Slide 7

Slide 7 text

7 © 2023 LayerX Inc. このLTの内容をざっくり 想定視聴者 ● dbtをこれから導入しようとしている人 ● dbtを導入したけどまだ運用が固まってなくて示唆が欲しい人 思想的な話半分、技術的な話半分くらいの分量です。 dbtゴリゴリ運用してる人は参考になる情報少ないかも。

Slide 8

Slide 8 text

8 © 2023 LayerX Inc. このLTの内容をざっくり LayerXにdbtを導入するときに意識したこと 意識したこと3つ ● データ階層 ● 可搬性 ● 開発者(≠エンジニア)体験 時間があんまりないので各パート1〜2ページでサクサク終わらせます なお、このスライドに記載しているコードはすべてMITライセンスで利用できます。

Slide 9

Slide 9 text

© 2023 LayerX Inc. 今の分析環境

Slide 10

Slide 10 text

10 © 2023 LayerX Inc. 今の分析環境 バクラク事業におけるデータ組織とデータ基盤 2023 - LayerX エンジニアブログ

Slide 11

Slide 11 text

© 2023 LayerX Inc. 意識したこと①: データ階層

Slide 12

Slide 12 text

12 © 2023 LayerX Inc. データ階層 dbtの特性を活かしてデータ階層を細分化 Naked Source Safe Source I/F Data Component Data Mart / Activation データエンジニア アナリティクスエンジニア アナリスト 匿名化・仮名化・同意フィルタリング・etc. データモデリング・用途特化

Slide 13

Slide 13 text

© 2023 LayerX Inc. 意識したこと②: 可搬性

Slide 14

Slide 14 text

14 © 2023 LayerX Inc. 可搬性 materialized="view"を積極的に利用する Materializations | dbt Developer Hub ● データ基盤の導入期には将来どのような要件が現れるか読めません ● が、将来発生する要件の中にはかならず「データの移動」及び「データの削除」が存在します ○ e.g. IPアドレスは個人情報として扱うことになったのでデータの削除をお願いします ○ e.g. このデータセットは管理要件を厳しくすることにしたので別のGoogle Cloudプロジェクトに 移してほしい ● materialized=”view”はmaterialized=”table”とは異なり、変換後のデータを保持しません。ビュー を作ります。 ● 実データを保持しないことで将来の要件に対応しやすくなります。 ○ ソースとなるテーブルを参照するビューからカラムを削除するだけで、元データを消すことなく、依存 するすべてのビューからデータが参照できなくすることができる ○ 必要なデータモデルのdatabase/schemaを変更するだけで、データコピーなくデータモデルの移 動が完結する。

Slide 15

Slide 15 text

© 2023 LayerX Inc. 意識したこと③: 開発者(≠エンジニア)体験

Slide 16

Slide 16 text

16 © 2023 LayerX Inc. 開発者(≠エンジニア)体験 データ基盤にコミットする人は必ずしもエンジニアではない ● アナリストやPdMなど開発に慣れ親しんでいない人もコミットできる状態を作る必要があった ● ドキュメントやオンボーディング、変更箇所以外のコード自動生成など以外で特に役立ったことを書いてい く

Slide 17

Slide 17 text

17 © 2023 LayerX Inc. 開発者(≠エンジニア)体験 dockerだけ入ってれば動くdbt

Slide 18

Slide 18 text

18 © 2023 LayerX Inc. 開発者(≠エンジニア)体験 GitHub Pagesにdbt docsのホスティング ● dbt docs generate で生成されたファイ ルをArtifactとして保存 ● あとはソースをGitHub Actionsとして Pagesをセットアップするだけ。

Slide 19

Slide 19 text

19 © 2023 LayerX Inc. 開発者(≠エンジニア)体験 BigQuery impersonate service account BigQuery setup | dbt Developer Hub ● dbtの実行プロファイルにimpersonate_service_accountを設定することで、指定したサービスアカ ウントを借用した状態でdbtが実行できる ● 個人に依存した権限エラーが発生しなくなるため、サポートが非常にやりやすくなる。

Slide 20

Slide 20 text

© 2023 LayerX Inc. おわりに

Slide 21

Slide 21 text

21 © 2023 LayerX Inc. 俺たちの戦いはこれからだ! もっと事業貢献できるデータ組織にしたい!助けてください! ● 弊社では「全員アナリスト」として活躍できるデータ基盤を作ろうと頑張っています ● まだまだやりたいことがたくさんあってアナリティクスエンジニア・データエンジニアともに大募集中です ● ホントに大募集中です ● 少しでも興味を持たれた方はぜひカジュアル面談にいらしてください! 全員アナリストを実現する Data Enablingを支えるData Engineeringについて語らいましょう〜〜!!!