Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
2024/07/20 Yu Nakamura - chanyou What is DRE? @chanyou0311
Slide 2
Slide 2 text
Yu Nakamura - chanyou ● スタートアップでデータエンジニアとして交通データ分析基盤 の構築‧運⽤を経験 ● その後2024年3⽉に株式会社タイミーの DRE チームにジョイン ● モデリング済みのデータを各種ツールに送出する Reverse ETL の実装などを担当 ● 広島在住。趣味はおうち Kubernetes クラスタ ● YAPC::Hiroshima 2024 のスタッフなども
Slide 3
Slide 3 text
タイミーとは 3 「働きたい時間」と「働いてほしい時間」を マッチングするスキマバイトサービス 従来の「求⼈サイト」でも「派遣」でもない
Slide 4
Slide 4 text
タイミーの特徴 4
Slide 5
Slide 5 text
タイミーの実績 スキマ バイト No.1 ※1 ※2 [調査⽅法]インターネット調査 [調査期間]2024 年 2 ⽉ 9 ⽇~11 ⽇ [調査概要]スキマバイトアプリサービスの実態調査 [調査委託先]株式会社マクロミル 利⽤率 ‧リピート率 ※1 ※2 導⼊事業者数 98,000企業 ワーカー数 700万⼈
Slide 6
Slide 6 text
DRE とはなにか?
Slide 7
Slide 7 text
DRE とは ● Data Reliability Engineering の略 ○ データの信頼性を確保する新しいアプローチのこと ● SRE のプラクティスをデータに適⽤する試み
Slide 8
Slide 8 text
目次 ● DRE チームが担う役割 ● データの信頼性とは ● DRE チームで実践しているプラクティス
Slide 9
Slide 9 text
1 DRE チームが担う役割
Slide 10
Slide 10 text
DRE チームのミッション “私たちDREは、DataOpsによる、パイプライン構築、⾃動化、監視、デプロイメントの迅速化、 データ品質の向上などの取り組みにより、信頼性(スピード、品質‧安定、ユーザビリティ)の⾼ いデータ基盤プロダクトをユーザに提供します。”
Slide 11
Slide 11 text
タイミーにおけるデータのライフサイクル
Slide 12
Slide 12 text
ワークフロー管理‧Extract / Load
Slide 13
Slide 13 text
データクレンジング
Slide 14
Slide 14 text
Reverse ETL
Slide 15
Slide 15 text
モニタリング
Slide 16
Slide 16 text
リソース管理‧IAM
Slide 17
Slide 17 text
DRE が連携する社内関係者 ● データを扱うチーム ○ アナリティクスエンジニア ○ データアナリスト ○ データサイエンティスト ● プロダクト‧エンジニアリング本部 ○ Dev Platform Squad ○ その他 Squad
Slide 18
Slide 18 text
DRE が連携する社内関係者 ● マーケティング部⾨ ○ toC toB の両⽅にアプローチ ■ ユーザーマーケティング ■ クライアントマーケティング ● 営業部⾨ ○ 600名を超える営業組織 ○ セールスシステム ● コーポレート部⾨ ○ 法務 ○ セキュリティ
Slide 19
Slide 19 text
社内の全⽅位と向き合う必要がある ● 部署で使うデータはどこから供給されるのか? ○ 外部SaaSなのか、当社プロダクトなのか ○ いつ、どのように供給されるのか ● 供給されたデータは、いつどのように使われるのか? ○ 毎⽇参照されるのか、⽉次で参照されるのか ○ システム連携したいのか、意思決定を伴うのか データの理解も重要だが、組織と業務プロセスの理解がより重要
Slide 20
Slide 20 text
2 データの信頼性とは
Slide 21
Slide 21 text
信頼性が低下すると ● Webアプリケーションにおいて信頼性が低下すると ○ 「アクセスできないよ…」 → リクエストの可⽤性 ○ 「サイト重くない?」 → リクエストのレイテンシ ● ⼀⽅、データ基盤において信頼性が低下すると ○ 「昨⽇まで⾒れてたダッシュボードが今朝から表⽰できなくなったよ…」 ○ 「前⽇分のデータがまだダッシュボードに反映されてないよ…」 ○ 「なんかデータ、ダブってない?」
Slide 22
Slide 22 text
DMBOK を拠り所にデータの信頼性を紐解く ● データマネジメント知識体系ガイド 第⼆版 [⽇経BP社] ○ 様々なデータ品質の評価軸が紹介されている
Slide 23
Slide 23 text
タイミーで重視しているデータ品質の評価軸 特性 定義 完全性 ⽋損したデータの割合 適時性 データ参照時と現実のデータとの時間差 ⼀意性 重複したデータの割合 ⼀貫性 型、タイムゾーン、表記揺れなどの値の書式が統⼀されていない割合
Slide 24
Slide 24 text
その他のデータ品質 ● メタデータ ○ テーブルやカラムの意味や制約などの補⾜情報 ● データガバナンス ○ 最⼩権限の原則 ● データダウンタイム ○ データが⽋落したり不正確な状態の期間
Slide 25
Slide 25 text
(参考)データ品質がテーマの発表資料 https://speakerdeck.com/ttccddtoki/dmbokwocan-kao-nisitadetamanezimentonoqu-rizu-mi
Slide 26
Slide 26 text
3 DRE チームで実践している プラクティス
Slide 27
Slide 27 text
DRE チームで実践しているプラクティス ● ワークフローのステータス監視 ● データの外形監視 ● dbt によるメタデータ整備とテスト
Slide 28
Slide 28 text
ワークフローのステータス監視 ● ワークフローが失敗した場合にアラートを受け取る ○ 原因の切り分け、影響範囲の調査などの対応
Slide 29
Slide 29 text
データの外形監視 ● 定期的に転送前後のデータセットの⽐較を⾏う ○ テーブルごとに完全性、適時性、⼀意性が満たされているか検査する ■ 満たさない場合はアラートを受け取る ○ データソースの新規テーブルやカラムの検知も⾏う ● 具体例 ○ 転送元: プロダクトの RDB ○ 転送先: BigQuery ○ 検査内容: ⾏数が⼀致するか / MAX(updated_at) が条件を満たすか
Slide 30
Slide 30 text
dbt によるメタデータ整備とテスト ● dbt で宣⾔的に BigQuery 内のデータの変換を⾏う ○ タイミーでは変換内容に応じて、下図のようにレイヤリングしている ○ 各レイヤーでモデル(テーブルやビュー)が実体化される https://tech.timee.co.jp/entry/2023/10/23/143322
Slide 31
Slide 31 text
dbt によるメタデータ整備とテスト ● モデルは Jinja で拡張された SQL で定義される ● モデルごとにメタデータを YAML で定義できる ○ カラムの型や説明 ○ ⾃動テスト https://docs.getdbt.com/docs/build/documentation
Slide 32
Slide 32 text
dbt によるメタデータ整備とテスト ● データテスト ○ 実データに対して汎⽤的な テストを実施できる ■ unique ■ not_null ■ … ● ユニットテスト ○ ⽤意したテストデータに 対して期待する出⼒となるか https://docs.getdbt.com/docs/build/data-tests
Slide 33
Slide 33 text
4 今後の展望
Slide 34
Slide 34 text
タイミーのデータ基盤が抱える課題 ● データソースの変更による下流への影響 ● ⼿⼊⼒データの品質保証 ● ストリーミングデータにおける完全性の担保
Slide 35
Slide 35 text
データソースの変更による下流への影響
Slide 36
Slide 36 text
知らない間に転送元のテーブルの列が削除されたら ● 途中のデータ変換で列指定されていたら? ○ ワークフローが停⽌してしまい、適時性が損なわれる ● downstream でダッシュボードの表⽰に使われていたら? ○ 古いデータのまま表⽰したり、そもそも表⽰できなかったりする ○ 適切な意思決定ができない ● 機械学習で使われていたら? ○ 古いデータをそのまま利⽤したり、機械学習パイプラインが停⽌したりする ○ 予測精度の低下、機会損失を招く
Slide 37
Slide 37 text
データソースの意図しない変更をどう防ぐか ● モニタリングやテストにより、ある程度対処できている ○ ただし対処であって、予防ではない ● データコントラクトによって事前に防げないか模索中
Slide 38
Slide 38 text
データコントラクトとは ● 契約プログラミングの概念をデータに持ち込んだもの ○ データ版 OpenAPI のようなもの ○ 破壊的な変更を避けて改善活動が実施できる https://datacontract.com/
Slide 39
Slide 39 text
データコントラクトとは ● データがどのような形式で供給されるかを定義した⽂書 ● いくつかの標準がある ○ Open Data Contract Standard (ODCS) ○ Data Contract CLI ● データの所有者、形式などの記載ができる ● データ品質、サービスレベルの記載も⾏える ● YAML でマシンリーダブルに表現される ○ CLI で実データを参照して、 データ品質の検証ができる https://datacontract.com/
Slide 40
Slide 40 text
データコントラクトの運⽤を⽬指す ● データ供給元と利⽤先のチーム間で、データの形式について合意を取るようにしたい ○ いくつかのプロジェクトで試験的に導⼊ ● プロダクトの CI に組み込むと? ○ 「このテーブルの型を変えようとしているけど、社内のダッシュボードで使われているのでダメです⚠」 https://datacontract.com/
Slide 41
Slide 41 text
5 まとめ
Slide 42
Slide 42 text
まとめ ● DRE とは SRE のプラクティスをデータに適⽤する試みのこと ● 社内の多様なチームと連携しながら、データの供給から活⽤までを⽀えている ● 扱うデータの理解は重要だが、組織とその業務プロセスへの理解も不可⽋である ● DRE のプラクティスとして、ワークフローやデータそのもののモニタリングを通し て、信頼性の低下にいち早く対処している ● データ基盤と組織に新しい概念を持ち込むことで、信頼性の向上を⽬指している
Slide 43
Slide 43 text
https://hrmos.co/pages/timee/jobs/1682251404118319115 積極的に採⽤中です!! データ基盤を通して、プロダクトと組織の成⻑を⼀緒に⽀えましょう!