Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データの信頼性を支える仕組みと技術
Search
chanyou0311
November 09, 2024
Technology
6
2.1k
データの信頼性を支える仕組みと技術
「オープンセミナー2024@広島 − XRE エンジニアを支える組織」での登壇資料です。
https://osh.connpass.com/event/324736/
chanyou0311
November 09, 2024
Tweet
Share
More Decks by chanyou0311
See All by chanyou0311
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
3.3k
5分でわかるDuckDB
chanyou0311
11
4k
データプロダクトの定義からはじめる、データコントラクト駆動なデータ基盤
chanyou0311
3
1.4k
Pulumi に入門してみた
chanyou0311
1
300
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
1.1k
release-please で実現する手軽で不変な Docker イメージタグ付け方法
chanyou0311
0
390
データ基盤を支える技術
chanyou0311
9
4.3k
おうちk8s入門 - すごい広島 IT初心者の会 [84]
chanyou0311
1
360
オンラインコミュニケーションの課題と、その乗り越え方
chanyou0311
0
530
Other Decks in Technology
See All in Technology
Azure Developer CLI と Azure Deployment Environment / Azure Developer CLI and Azure Deployment Environment
nnstt1
1
110
継続戦闘能⼒
sansantech
PRO
0
200
大規模PaaSにおける監視基盤の構築と効率化の道のり
lycorptech_jp
PRO
0
160
ソフトウェアテストのAI活用_ver1.10
fumisuke
0
210
AIコードエディタは開発を変えるか?Cursorをチームに導入して1ヶ月経った本音
ota1022
1
650
超簡単!RAGアプリケーション構築術
oracle4engineer
PRO
0
110
会社員しながら本を書いてきた知見の共有
sat
PRO
3
680
Oracle Cloud Infrastructure:2025年5月度サービス・アップデート
oracle4engineer
PRO
0
320
Scale Security Programs with Scorecarding
ramimac
0
380
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
0
270
プラットフォームとしての Datadog / Datadog as Platforms
aoto
PRO
1
330
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The World Runs on Bad Software
bkeepers
PRO
68
11k
The Language of Interfaces
destraynor
158
25k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Why Our Code Smells
bkeepers
PRO
336
57k
Become a Pro
speakerdeck
PRO
28
5.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Documentation Writing (for coders)
carmenintech
71
4.8k
Transcript
2024/11/09 Yu Nakamura - chanyou データの信頼性を⽀える仕組みと技術 @chanyou0311
Yu Nakamura - chanyou • スタートアップでデータエンジニアとして交通データ分析基盤 の構築‧運⽤を経験 • その後、株式会社タイミーの DRE
チームにジョイン • モデリング済みのデータを各種ツールに送出する Reverse ETL の実装などを担当 • 広島在住。趣味はおうち Kubernetes クラスタ • YAPC::Hiroshima 2024 のスタッフなど • オープンセミナー2022@広島 に登壇も
タイミーとは 3 「働きたい時間」と「働いてほしい時間」を マッチングするスキマバイトサービス 従来の「求⼈サイト」でも「派遣」でもない
タイミーの特徴 4
タイミーの実績 スキマ バイト No.1 ※1 ※2 [調査⽅法]インターネット調査 [調査期間]2024 年 2
⽉ 9 ⽇~11 ⽇ [調査概要]スキマバイトアプリサービスの実態調査 [調査委託先]株式会社マクロミル ※3 2024年9⽉時点 ※4 2024年9⽉時点 利⽤率 ‧リピート率 ※1 ※2 導⼊事業者数 136,000企業 ワーカー数 900万⼈ ※4 ※3
目次 • タイミーにおけるデータ基盤の変遷 • dbt の概要 • データ基盤における信頼性とは • データの信頼性を⽀える仕組みと技術
• データ基盤の課題とこれから
1 タイミーにおける データ基盤の変遷
タイミーの従業員数の増加 タイミーでは、2019年から2023年時点で、従業員数が86人→1000人規模まで増加した。
タイミーのデータ基盤の歴史 2018 アプリ リリース DWH (BigQuery)へ データ集約 2020 Looker導入 &
dbt導入 2021 2022 2023 2024 データモデリング をLookerからdbt へ移行 data streamに よるCDC導入 / exposureによる アウトプットの 管理 ガバナンスの強化 DREの数 (正社員ベース) 1 1 1 -> 2 2 -> 4 4 -> 6 AEの数 (正社員ベース) 1 -> 2 2 1
アーキテクチャ(2022年頃)
アーキテクチャ(いま)
アーキテクチャ(2022年頃) Forward ETL Aggregate 活⽤ / Reverse ETL
アーキテクチャ(いま) Forward ETL Aggregate 活⽤ / Reverse ETL
2 dbt の概要
dbt とは Aggregate
dbt とは • オープンソースのデータ変換ツール • アナリスト中⼼の領域にソフトウェアエンジニアリングの⽂化を持ち込んだ ◦ バージョン管理、モジュール化、CI/CDとの統合、ドキュメント⽣成 ◦ アナリティクスエンジニアと呼ばれるロールが誕⽣したほど
• dbt によって変換処理の信頼性が⾼まった
dbt ⼊⾨ • 実際に体験してみる ◦ Repository: chanyou0311/data-reliability-engineering-demo • dbt-core と接続先に応じたアダプタを
pip でインストールする • 今回はローカル分析⽤DBの DuckDB を使う • インストール後 dbt init コマンドでプロジェクトを初期化できる
コンセプト • dbt_project.yml, profiles.yml ◦ 設定ファイル • models/*.sql ◦ モデルファイル
• models/*.yml ◦ スキーマファイル
dbt モデル • SQLファイル ◦ dbt ではモデルと呼ぶ。変換内容を定義する ◦ Jinja テンプレートで拡張されており、他のモデルの結果を参照できる
◦ dbt が依存関係を解決してくれて、SELECT の結果をテーブルやビューと して保存する • YAMLファイル ◦ モデルのメタデータを定義する
dbt を実⾏してみる • 事前にデータを DuckDB にロードしておく ◦ データウェアハウスへのデータ投⼊は dbt のスコープ外
• dbt build コマンドを実⾏するだけ ◦ DuckDB にテーブルが⽣成される • ドキュメントの⽣成もできる ◦ dbt docs generate ◦ dbt docs serve
デモ
dbt を使い込むと • ディメンショナル‧モデリングという、分析に特化したモデリング⼿法がある ◦ モデリング済みのテーブルを Looker や Tableau に接続すると、SQLが書
けなくても分析やダッシュボードの作成ができる • タイミーでは1000以上のモデルを管理している ◦ モデルをレイヤリングして秩序を保つ必要がある
dbt まとめ • SQL と YAML で変換処理をコード管理できる • 再利⽤可能なモデルでコラボレーションしやすい •
冪等な処理で CI/CD への統合も容易にできる
信頼性に話を戻します
3 データの信頼性とは何か
データの信頼性とは • 信頼できるデータ = 品質が担保されているデータ • タイミーで重視しているデータ品質の評価軸 特性 意味 完全性
データが⽋損していないか 適時性 必要な時にすぐにデータを参照できるか ⼀意性 データが重複していないか ⼀貫性 型‧タイムゾーン‧表記揺れなど、値の書式や意味が統⼀されているか
データの信頼性を損なうとどうなるか • 必要なときにデータが参照できない • 誤った意思決定や機械学習モデルの精度低下を引き起こす
データの信頼性を損なうタイミング • 転送パイプラインの障害 • 変換ロジックの誤り • 意図しないデータソースの仕様変更
転送パイプラインの障害 停⽌ • 適時性を損なう
変換ロジックの誤り • LEFT JOIN すべきところで INNER JOIN してレコードが減ってしまった • ⼀意だと思った列に重複があり、
LEFT JOIN でレコードが膨れてしまった Aggregate
意図しないデータソースの仕様変更 • ⼿⼊⼒スプレッドシートのような、壊れやすいデータソースを扱うとき ◦ 作業していてカラム名が意図せず変わってしまった ◦ 結果、dbt の SELECT で存在しないカラムを指定してコケる
• アプリケーションのテーブルやカラムが削除されてしまったとき ◦ 同様に dbt で追従できずコケてしまう 停⽌ 停⽌
4 データの信頼性を⽀える 仕組みと技術
信頼性の⾼め⽅、守り⽅ • 信頼性が低下する要因を排除しよう • 可能な限りテストをやっていこう 特性 意味 完全性 データが⽋損していないか 適時性
必要な時にすぐにデータを参照できるか ⼀意性 データが重複していないか ⼀貫性 型‧タイムゾーン‧表記揺れなど、値の書式や意味が統⼀されているか
dbt による⼀貫した指標の定義 • 例えば ワーカーの リピート率[%] の定義は? • 分析の度にクエリ書くと定義が揺れてしまうリスクがある •
dbtモデルから参照する形を取れば、再計算不要で⼀貫した値を参照できる
不安定なデータを JSON Lines 化して安全に扱う ⼿⼊⼒CSVのような、壊れやすいデータソースを扱いたいとき • 各レコードを JSON ⽂字列に変換して、ワンカラムとしてまとめる •
BigQuery にロードする • dbt モデルで JSON ⽂字列をパースして、列として抽出する 存在しない列を SELECT しても null として抽出できる
データ転送前後の⾏数⽐較で完全性を守る • RDSからBigQueryにロードするときに、⽋損がないか⾏数を⽐較する • GitHub Actions などでスクリプトを動かて監視
dbt によるテスト • データテスト • ユニットテスト • データ鮮度チェック
dbt によるデータテスト 実際のテーブルデータに対するテスト • Generic data tests ◦ スキーマファイルにテストを定義できる ◦
列に対して UNIQUE や NOT NULL の検証 ◦ 別モデルの外部キーを持つか、離散値の検証 • Singular data tests ◦ テスト⽤の任意のSQLファイルを作成して、結果が0⾏であることを検証 できる
dbt によるユニットテスト テストデータを与えて、期待する結果となるか検証する • 複雑なロジックや重要指標の定義が間違っていないか • 正規表現が間違っていないか テスト駆動開発が実践できるようになった
dbt によるデータ鮮度のチェック 1時間に1回テーブルにインサートされるはずのに、 updated_at 列が古いままだ と怪しい… 期待するテーブルの更新頻度を記述して、ちゃんと更新されているか検証できる
信頼性の⾼め⽅、守り⽅ 特性 信頼性の守り⽅ 完全性 転送前後の⾏数⽐較 dbt によるデータテスト 適時性 不安定なデータの JSON
Lines 化(パイプライン停⽌を避ける) dbt によるデータ鮮度チェック ⼀意性 dbt によるデータテスト ⼀貫性 dbt による⼀貫した指標の定義 dbt によるユニットテスト
信頼性の⾼め⽅、守り⽅
5 データ基盤の課題と これから
タイミーのデータ基盤の現状 • Good ◦ これまで紹介した⽅法により、特定のデータソースやユースケースに対 するデータの信頼性を担保しやすい環境が整っている • More ◦ データソースとユースケースが多様化する中、中央のデータチームだけ
で社内のあらゆるドメインロジックや業務で期待されるデータ品質を把 握して、維持運⽤していくのが困難になりつつある
タイミーのデータ基盤の現状 引⽤元:[Data Mesh Manager公式サイト](https://www.datamesh-manager.com/)
理想形としてデータメッシュに期待 • データメッシュとは、⼀⾔でデータ基盤のマイクロサービス化 ◦ データプロダクトと呼ばれる単位でデータ基盤と開発チームを分離 ◦ データプロダクト同⼠のインターフェイスとして、データコントラクト を定義 ◦ 横串でプラットフォームチームが⽀える体制
理想形としてデータメッシュに期待 引⽤元:[Data Mesh Manager公式サイト](https://www.datamesh-manager.com/)
データプロダクト データプロダクト 理想形としてデータメッシュに期待 データ ソース データプロダクトのオーナー 処理 いい感じの モデル インフラ
/ モニタリング環境 データプロダクト DRE インフラ インフラ
とはいえ、⼀気に進めるのは難しい 組織体制の変更とデータ基盤のプラットフォーム化を⼀気に進めるのは難しい • データプロダクトの開発‧運⽤のケイパビリティを持つ⽅が稀有 ◦ 開発部⾨はともかく、事業部にエンジニアがいることは稀 • データ基盤のプラットフォーム化も、上⼿くいくか不透明でリスクが⾼い ◦ 銀の弾丸などない
特定の重要なユースケースに絞って検証していく • データプロダクトのスコープの定義 • データプロダクトの⼊出⼒のインターフェイスの定義 • データプロダクトの開発の伴⾛ • 部分的なプラットフォーム化の実施 •
データプロダクト開発⽂化の醸成 ◦ 開発‧運⽤ガイドラインの⽂書化や勉強会の開催など
6 まとめ
まとめ • データの信頼性は地道なテストの積み重ねで⾼めることができる ◦ dbt の功績が⼤きい • 多様で複雑なデータ基盤のニーズに素早く応えるには、組織体制含めた リアーキテクチャが必要そう ◦
試⾏錯誤しながら実績を積み上げていきたい
https://hrmos.co/pages/timee/jobs/1682251404118319115 データ基盤を通して、プロダクトと組織の成⻑を⼀緒に⽀えましょう! We're hiring!