Slide 1

Slide 1 text

データ基盤を⽀える技術 chanyou

Slide 2

Slide 2 text

Yu Nakamura - chanyou ‧ DRE ← Data Engineer ← SWE ‧ X: @chanyou0311 ‧ GCP BigQuery ‧ Azure Databricks ‧ おうち Kubernetes クラスタ

Slide 3

Slide 3 text

ゴール ‧データ基盤の構成要素がわかる ‧データ基盤を構成する技術スタックがイメージできる なんかデータ分析基盤作れそう!作ってみたい 💪

Slide 4

Slide 4 text

注意 ‧AWS と Azure 固有のサービスは触れられてません ‧GCP に類似したサービスはあるはず… ‧だいたい Databricks で対応できます

Slide 5

Slide 5 text

Databricks

Slide 6

Slide 6 text

データ基盤の構成要素

Slide 7

Slide 7 text

データ基盤とは?

Slide 8

Slide 8 text

データを保存‧加⼯‧活⽤する システム群のこと

Slide 9

Slide 9 text

クラウド時代のデータ基盤は どうあるべき?

Slide 10

Slide 10 text

“モダンデータスタック”

Slide 11

Slide 11 text

https://snowplow.io/blog/modern-data-stack/

Slide 12

Slide 12 text

クラウドサービスの組み合わせで データ基盤が作れてしまう

Slide 13

Slide 13 text

データ基盤の主な構成要素を 紐解いていく

Slide 14

Slide 14 text

データ基盤の構成要素 ‧ストレージ ‧ELT ‧データモデリング ‧カタログ ‧データ品質保証 ‧MLOps / BI https://snowplow.io/blog/modern-data-stack/

Slide 15

Slide 15 text

データ基盤の構成要素 ‧ストレージ ‧ELT ‧データモデリング ‧カタログ ‧データ品質保証 ‧MLOps / BI https://snowplow.io/blog/modern-data-stack/

Slide 16

Slide 16 text

ストレージ

Slide 17

Slide 17 text

ストレージ ‧データウェアハウス ‧データレイク ‧データレイクハウス

Slide 18

Slide 18 text

データウェアハウス ‧構造データをサクッと取り出せるストレージ ‧BigQuery, Snowflake など

Slide 19

Slide 19 text

データレイク ‧構造‧⾮構造どちらも保存できるストレージ ‧S3 や GCS など ‧画像や⾳声を使ってMLモデル作りたい、に応える ‧構造データはデータウェアハウスに転送する

Slide 20

Slide 20 text

データレイクハウス ‧データレイクにデータウェアハウスを内包する思想 ‧構造データとして Delta Lake などを採⽤ ‧ACID トランザクションの担保 ‧実体は列指向の Parquet ファイル ‧マネージドサービスとして Databricks Unity Catalog

Slide 21

Slide 21 text

ストレージ ‧データウェアハウス ‧データレイク ‧データレイクハウス

Slide 22

Slide 22 text

ELT

Slide 23

Slide 23 text

ELT ‧Extract ‧Load ‧Transform

Slide 24

Slide 24 text

ELT vs ETL ‧ELT: 外部データをそのままストレージにロードして後から変換する ‧ETL: 外部データを変換してからストレージにロードする 最近は ELT が主流 ストレージコストが安価、後から変換をやり直せるため

Slide 25

Slide 25 text

ETL 全部できるもの ‧GCP Dataflow / Apache Beam ‧Databricks Delta Live Tables ‧trocco / Embulk / Fluentd ‧Jupyter Notebook / Spark ‧お⼿製スクリプトと任意の実⾏環境

Slide 26

Slide 26 text

Extract と Load 特化 ‧Fivetran ‧Airbyte Cloud / Airbyte ‧dlt ‧trocco / Embulk / Fluentd 多数のコネクタを持ち合わせている 接続したいサービスの token を渡すだけで連携できる 例: S3 に保存された⽣ログをそのまま BigQuery に転送

Slide 27

Slide 27 text

Fivetran が⼀強(豊富な連携先、安定性) https://classmethod.jp/partner/fivetran/

Slide 28

Slide 28 text

Transform 特化 ‧dbt Cloud / dbt Core ‧GCP Dataform ‧Databricks Delta Live Tables ストレージにロード済みのデータを変換する SQL ベースで冪等に処理できるものが好まれる

Slide 29

Slide 29 text

dbt がデファクトスタンダード的ポジション ‧token 設定して SQL ファイル書いて実⾏するだけ ‧結果がテーブルとして書き込まれる ‧別の SQL ファイルの結果を利⽤して SQL ファイルを書ける ‧依存関係を解決して⾃動で適切な順序でテーブルを⽣成してくれる ‧ストレージや実⾏環境にロックインされない ‧dbt は SQL のコンパイルを⾏うのがメイン ‧実際の変換処理はストレージ標準の計算リソースを利⽤する

Slide 30

Slide 30 text

dbt がデファクトスタンダード的ポジション ‧データエンジニアリングに SWE の⽂化を持ち込める ‧データテスト、単体テスト、ドキュメンテーション ‧オープンソースでプラグイン開発が容易 ‧Web Framework のプラグインのように dbt ライブラリが豊富 ‧クラウド ↔ セルフホストを⾏き来できる ‧最初は dbt Cloud に頼る ‧コストが気になったら GitHub Actions で dbt Core に切替とか

Slide 31

Slide 31 text

dbt integration なサービスが豊富 ‧Fivetran, Airbyte, troccoなど Extruct / Load に特化したサービスで dbt に対応 ‧Databricks Jobs などのワークフローのステップに dbt が使える https://prtimes.jp/main/html/rd/p/000000046.000039164.html

Slide 32

Slide 32 text

その他の要素

Slide 33

Slide 33 text

データ基盤の構成要素 ‧ストレージ ‧ELT ‧データモデリング ‧カタログ ‧データ品質保証 ‧MLOps / BI https://snowplow.io/blog/modern-data-stack/

Slide 34

Slide 34 text

データモデリング ‧ファクトテーブル、ディメンションテーブルの実装 ‧分析のための集約テーブルの実装 Transform の作り込み Notebook ベースでも実装可能だが、保守性が低い dbt ⼀択な印象

Slide 35

Slide 35 text

カタログ ‧テーブルやカラムのメタデータ管理ツール ‧分析時に⾏や列の意味がわからないとしんどい ‧GCP Data Catalog ‧BigQuery テーブル詳細画⾯ ‧dbt docs

Slide 36

Slide 36 text

データ品質保証 ‧これだけで1テーマになってしまう ‧データの品質とはなにか? ‧完全性、⼀意性、適時性、可⽤性… ‧dbt test + elementary ‧レコードに重複が発⽣したらアラートを出す ‧存在しない FK がデータに含まれていたら(ry ‧データが反映されるべき時刻に挿⼊されてなかったら(ry

Slide 37

Slide 37 text

MLOps / BI ‧MLOps ‧実験環境、モデルレジストリ、モデルのサービング ‧GCP Vertex AI ‧Databricks MLFlow ‧BI ‧Tableau / PowerBI / Looker ‧Superset / Metabase

Slide 38

Slide 38 text

データ基盤の構成要素 ‧ストレージ ‧ELT ‧データモデリング ‧カタログ ‧データ品質保証 ‧MLOps / BI https://snowplow.io/blog/modern-data-stack/

Slide 39

Slide 39 text

データ基盤の構成要素のまとめ

Slide 40

Slide 40 text

マネージド サービス セルフ ホスト Storage Extract Load Transform DataModeling Catalog 品質 MLOps BI dbt BigQuery DuckDB Unity Catalog Airbyte Fivetran Dataform Vertex AI Superset Metabas e Looker Tableau Snowflak e Data Catalog trocco Embulk Delta Live Tables Unity Catalog Dataflow BigQuery MLFlow Dashboard

Slide 41

Slide 41 text

まとめ ‧パブリッククラウド以外の選択肢も豊富 ‧OSS のマネージドサービスが近年増えている ‧パブリッククラウドにロックインされず健全 ‧選択肢がありすぎて、技術選定が難しい ‧ストレージと Fivetran と dbt があればなんとかなる

Slide 42

Slide 42 text

⽂献 ‧データマネジメント知識体系ガイド 第⼆版 ‧ビッグデータを⽀える技術 ‧データエンジニアリングの基礎