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
dbtとリバースETLでデータ連携の複雑さに立ち向かう
Search
Toru Morooka
May 13, 2025
Technology
4.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
dbtとリバースETLでデータ連携の複雑さに立ち向かう
【技術選定を突き詰める】Online Conference 2025
https://findy.connpass.com/event/349580/
Toru Morooka
May 13, 2025
More Decks by Toru Morooka
See All by Toru Morooka
AI時代のエンジニア ~Matz Keynoteに寄せて〜
morookacube
0
120
Other Decks in Technology
See All in Technology
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
12
8.4k
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
160
MIRU 2026 チュートリアル
keisuke198619
0
870
Digitization部 紹介資料
sansan33
PRO
2
7.7k
Pavlokで始める電撃駆動開発
sgrsn
0
180
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
200
20分でわかるセキュアAPI
nwiizo
1
190
JavaScript 研修 (2026)
recruitengineers
PRO
1
460
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.8k
サイバー捜査員研修(後半)
nomizone
1
810
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
1
200
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
108
250k
Why Our Code Smells
bkeepers
PRO
340
58k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Optimizing for Happiness
mojombo
378
71k
Technical Leadership for Architectural Decision Making
baasie
3
470
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
990
For a Future-Friendly Web
brad_frost
183
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
590
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
460
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
390
ラッコキーワード サービス紹介資料
rakko
1
4.3M
Transcript
dbtとリバース ETLで データ連携の複雑さに立ち向かう 2025.05.14 #技術選定con_findy エムスリーキャリア株式会社 諸岡 徹(@morooka_cube)
自己紹介 諸岡 徹(@morooka_cube, もろーか) エムスリーキャリア株式会社 Webアプリケーションエンジニア / チームリーダー 医療従事者・医療機関向け Webサービスの開発チームで
技術戦略や開発生産性の向上を担当
None
エムスリーキャリアのエンジニアリング 営業基幹システム (Salesforce) 医療従事者向け Webサービス (Ruby on Rails, etc.) ❗
システム間のデータ連携が 事業展開を支えるコア技術 となっている 医療機関・ 一般企業向け SaaS (Ruby on Rails, etc.)
複雑なデータ連携 📄 リソース型データ • 求人情報, 求職者情報など • マスタデータとして各システムで更新・参照 📅 イベント型データ
• 求職者からの求人問い合わせ , 選考の進捗状況など • 日々の業務活動で発生し、リアルタイムな連携が必要 本発表では リソース型データ の連携に焦点
従来の連携方法 …営業基幹システム→Webアプリケーションの場合 営業基幹システム (Salesforce) Webアプリケーション 連携バッチをRakeタスク(Ruby)で実装し、Cronでスケジュール実行 ⚙ データ抽出 →変換→格納 (Rakeタスク)
💾 アプリDB (MySQL, etc.)
組織横断した課題に 😣 個々の開発チームでペインが発生、 垣根を越えて改善の取り組みを始める ことに Web開発チーム 基幹システム開発チーム
抱えていたペイン (Webエンジニア視点) 営業基幹システムのドメイン知識が必要 • 複雑なデータ構造の理解、営業部門のプロセス理解が必要 🍝 Webアプリケーション用ロジックと営業基幹システム用ロジックの混在 • Webアプリのコードベースに
基幹システムのドメインが染み出し 、保守性が悪化 📃 手続き的なデータ変換ロジック • SQLで宣言的に書きたい
抱えていたペイン (基幹システムエンジニア視点) 🔀 データの参照関係が不明瞭 • 各データがWebアプリケーションでどのように参照されているかわからない • 項目・オブジェクトの変更削除による影響範囲の把握が困難 • 変更・クリーンアップが進まず
保守性が低下
データ基盤 データ基盤活用の機運 事業横断的なデータ分析を目的に データ基盤構築プ ロジェクトが立ち上がる 基幹システム内の主要データが BigQueryに蓄積され た状態に 参考:https://findy-tools.io/products/trocco/17/48 💡
データ基盤をシステム間データ連携のハブとし て活用できないだろうか? 営業基幹システム (Salesforce) ⚙ データ転送ツール (TROCCO) 💾 アプリDB (MySQL, etc.) データレイク (BigQuery)
データ基盤 新しい連携方法 …dbtとリバースETLの導入 TROCCOによるdbtジョブでデータ変換し、TROCCOのリバース ETLでアプリDBに転送 ⚙リバースETL TROCCO転送ジョブ 💾 アプリDB (MySQL,
etc.) ⚙データ変換 TROCCO dbtジョブ データマート (BigQuery) データレイク (BigQuery) 営業基幹システ ム (Salesforce)
新しい連携方法 …リバースETLとdbtの導入 ⚙ データ変換 (TROCCO dbtジョブ) • 生データをWebアプリでの活用に適した形式に変換 • dbtによってデータ変換ロジックを
SQLベースで実装 • TROCCOによってdbtによる変換処理を定期実行し、データマートを構築 ⚙データ変換 TROCCO dbtジョブ データレイク (BigQuery) データマート (BigQuery)
新しい連携方法 …リバースETLとdbtの導入 ⚙ データマート→アプリDBへの転送 (TROCCO転送ジョブ) • TROCCOの転送ジョブを利用 • dbtで作成したデータマートからアプリ DBへデータを転送
• 転送方式:要件に応じて全件洗い替え (Truncate & Insert) や差分更新 (Upsert) を選択 ⚙リバースETL ※ TROCCO転送ジョブ データマート (BigQuery) 💾 アプリDB (MySQL, etc.) ※業務システム →データ基盤のETL(Extract, Transform, Load)とは逆向きであることから
導入メリット①: dbtによる開発プロセス改善 🚀 モダンなデータ開発体験 • SQLベースの実装 により手続き的なスクリプト実装の苦しみから解放! • マクロ機能 で繰り返しロジックの共通化
• Gitによるバージョン管理運用 で、変更履歴の追跡やコードレビューが容易に 🧠 ドメイン知識の集約 • 基幹システムのドメイン由来の変換ルールを dbtに集約し、Webアプリから分離 • Webエンジニアは変換後データ構造の理解 に集中できるように
導入メリット②:データ変換の信頼性向上 🔀 データリネージュによる参照関係の可視化 • どのデータがどのように変換されどのテーブルに出力されるか • 基幹システム側のデータ項目変更時の 影響調査が容易に • dbtロジック修正の際も見通しよく開発・保守
できる
(今後の展望)チーム横断したデータ基盤作りの促進 dbtでの開発体験がとても良かったので、もっと広めていきたい! 🤝 データマート構築の役割分担 • 基幹エンジニア:全社共通データマート 構築を担当(ドメイン知識を集約) • Webエンジニア:アプリ専用データマート 構築を担当
(共通マートを活用) ⚙ dbtなら同じコードベース上で実現できる • 適切に役割分担しつつ、 チーム横断でのデータ活用を促進 していく 💪 挑戦はまだ始まったばかり!
まとめ 🔥 dbtとリバースETLでデータ連携の複雑さに立ち向かうことができた! • 複雑なデータ連携のペインと、データ基盤を用いた改善のアプローチ • dbtの素晴らしい開発体験と、それが拓くチーム横断の可能性 🍕 懇親会参加します •
データ連携, 基盤開発, 組織づくり…熱く語りましょう • お気軽にお声がけください 😊
Appendix リバースETLを使う際のデータ設計の注意点 主キーの同一性はデータ発生源または dbtで保証すること 全件洗い替え (Truncate & Insert) するテーブルの主キーが auto_incrementなInteger値だと…
• 外部キー制約の不整合 :参照先レコードが削除 →再挿入されると主キーが再採番され、既存 の外部キー参照が切れてしまう • INSERT順依存のバグ :リバースETL側でINSERT順が保証されているとは限らない