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
ゲンシュン
November 22, 2022
Technology
0
20
データ基盤 今に至るまで
2022/11/22に開催された「みんなの考えた最強のデータアーキテクチャ」の登壇資料です
https://datatech-jp.connpass.com/event/258157/
ゲンシュン
November 22, 2022
Tweet
Share
More Decks by ゲンシュン
See All by ゲンシュン
みん強のこれまでとこれから
genshun9
1
620
本が全く読めなかった過去の自分へ
genshun9
0
1.3k
dbtで家計簿アプリ作ってみた
genshun9
1
200
再現性のある成果を出すデータエンジニアになりたい
genshun9
0
26
2023年のしくじりと学び
genshun9
0
20
Other Decks in Technology
See All in Technology
短期間でRAGシステムを実現 お客様と歩んだ生成AI内製化への道のり
taka0709
1
250
Snowflake Marketplaceには”PODB”という便利なオープンデータがあってAI Ready対応してるらしいよ/the-snowflake-marketplace-has-a-useful-open-data-source-called-PODB-that-is-apparently-AI-ready
shinyaa31
0
270
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
180
【Android】テキスト選択色の問題修正で心がけたこと
tonionagauzzi
0
130
次世代のメールプロトコルの斜め読み
hirachan
3
450
3年ぶりの re:Invent 今年の意気込みと前回の振り返り
kazzpapa3
0
190
CodexでもAgent Skillsを使いたい
gotalab555
8
3.8k
LLM APIを2年間本番運用して苦労した話
ivry_presentationmaterials
16
11k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
1
1k
Logik: A Free and Open-source FPGA Toolchain
omasanori
0
260
AIエージェントは「使う」だけじゃなくて「作る」時代! 〜最新フレームワークで楽しく開発入門しよう〜
minorun365
10
1.5k
最近読んで良かった本 / Yokohama North Meetup #10
mktakuya
0
1.3k
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
310
Facilitating Awesome Meetings
lara
57
6.6k
A Tale of Four Properties
chriscoyier
161
23k
Designing Experiences People Love
moore
142
24k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
The Invisible Side of Design
smashingmag
302
51k
Code Reviewing Like a Champion
maltzj
527
40k
Balancing Empowerment & Direction
lara
5
730
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
© Unipos Inc. All Rights Reserved. データ基盤 今に⾄るまで Unipos株式会社 ゲンシュン
0
© Unipos Inc. All Rights Reserved. unipos株式会社プロダクト部プロダクト戦略室のゲンシュンと申します。 ⾃ ⼰ 紹
介 1 2016年 2018年 2019年 2021年 2020年 フロントエンド エンジニア 新卒エンジニア 採⽤責任者 QAエンジニア PM
© Unipos Inc. All Rights Reserved. 2 2021年6⽉上旬 3時間後 データを使った分析の基盤が
整ってないから作って uniposの◦◦チームで 開発してくれ 来週からよろしくね 押忍!!!!!!! (久しぶりの開発だぜ) すまん、⾊々あって プロダクト戦略室配属 になった 押忍!!!!!!! (データ基盤って何w?) 開発部 MGR MGR プロダ クト部
© Unipos Inc. All Rights Reserved. unipos株式会社プロダクト部プロダクト戦略室のゲンシュンと申します。 ⾃ ⼰ 紹
介 3 2016年 2018年 2019年 2021年 2020年 フロントエンド エンジニア 新卒エンジニア 採⽤責任者 QAエンジニア PM データエンジニア イマココ!!
© Unipos Inc. All Rights Reserved. 最強とはなにか?ではなく 最強に⾄るまでの変化を中⼼にお話します 4
© Unipos Inc. All Rights Reserved. 本 ⽇ の お
品 書 き 5 luniposについて紹介 l現状のアーキテクチャ l超初期フェーズ lterraform移⾏フェーズ ldbt移⾏フェーズ l品質担保フェーズ lまとめ 本⽇のお品書き
© Unipos Inc. All Rights Reserved. uniposについて紹介 6
© Unipos Inc. All Rights Reserved. 7
© Unipos Inc. All Rights Reserved. 8 良い⾏動への称賛 × 少額のインセンティブ
(ポイント) オープンに送り合うため 良い⾏動が組織全体へ
© Unipos Inc. All Rights Reserved. 現状のアーキテクチャ 9
© Unipos Inc. All Rights Reserved. これが現時点での答えだ! 現 状 の
ア ー キ テ ク チ ャ 10 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート
© Unipos Inc. All Rights Reserved. データレイクの概要。とりあえずBQにエクスポートされている状態を作る。 現 状 の
ア ー キ テ ク チ ャ 11 database ⾏動ログ マイクロ サービス群 cloud logging すべてのデータを BQへ集約 GA to BQ export データレイク BQ export
© Unipos Inc. All Rights Reserved. データウェアハウスとデータマート概要。DWHはすべてdbtで実装。 プロダクトサイド都合はdbt、bizサイド(分析)都合はLookerという責務で分離 現 状
の ア ー キ テ ク チ ャ 12 fctテーブル dimテーブル 集計テーブル すべてのデータを BQへ集約 データレイク データウェアハウス データマート
© Unipos Inc. All Rights Reserved. 超初期フェーズ 13
© Unipos Inc. All Rights Reserved. 現状のアーキテクチャに対して、約1年前のアーキテクチャは・・・? 超 初 期
フ ェ ー ズ 14 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート
© Unipos Inc. All Rights Reserved. 超シンプル。スケジュールクエリでBQからBQへ分析したいテーブルを作るだけ。 Lookerも無い。 超 初
期 フ ェ ー ズ 15 すべてのデータを ここへ集約 分析したい情報.sqlを量産 データレイク データマート
© Unipos Inc. All Rights Reserved. 良かった点、課題感まとめ 超 初 期
フ ェ ー ズ 16 良かった点 冪等性担保してたので再実⾏しやすい 層が少なくミスったら作り直すでOKだった シンプルなのでシステム仕様を理解しながら実装出来た 作ってすぐ壊すサイクルが早かった 重要 課題 どうせ後でjoinするから、最初からカラム付与してよ〜 というお⾔葉に即yesしちゃった 後述しますが、システム対応で地獄を⾒ることに。。 分析のためにカラム付与が多くキメラ化 重要
© Unipos Inc. All Rights Reserved. 意識したこと、メリット、課題感。 超 初 期
フ ェ ー ズ 17 データレイク データマート 投稿テーブル 部署テーブル 部署マスターテーブル 投稿with部署テーブル
© Unipos Inc. All Rights Reserved. terraform移⾏フェーズ 18
© Unipos Inc. All Rights Reserved. スケジュールクエリはOWNER神権を限を貰って独⾃シェルで作られる そこにメスが⼊りました。 t e
r ra f o r m 移 ⾏ フ ェ ー ズ 19 OWNER権限 もらいます〜 ローカルで実⾏〜 cloudbuildコマンド〜 デプロイ完了! ある⽇ データ基盤、temporaryな⽅法 で実⾏してるじゃん? あれ困るんだよね〜 開発 部 そういうのterraformでやって るから、terraformで実⾏する ようにして MGR 押忍!!! (terraformって何???)
© Unipos Inc. All Rights Reserved. やっていることは変わりません。ただterraformで実装するようにしました。 各テーブル順番にterraform移⾏したので、ダウンタイムゼロで進⾏出来た t e
r ra f o r m 移 ⾏ フ ェ ー ズ mainマージ cloudbuildで トリガー実⾏ terraform apply実⾏ スケジュールクエリ再作成 リリース完了! 俺何も権限ないけど リリースできたぞい! 20 いい話 開発 部
© Unipos Inc. All Rights Reserved. 良かった点、課題感まとめ t e r
ra f o r m 移 ⾏ フ ェ ー ズ 21 良かった点 ⼈に権限を持たせずデプロイや実⾏ができる(ZTP思想) prod、stg、開発、各環境の差分をいい感じに吸収できた 権限最⼩且つ環境依存を解決出来た 重要 課題 分析側の都合でカラム設計したこと システム変更を吸収する層がないこと これらが原因で変更に弱い 俺がめっちゃ頑張らないといけない作りになっている システム変更の影響モロ受ける 重要 terraform applyの差分表⽰嬉しい 意図しない変更が⼊ってないか、⽬で⾒ることもできる!
© Unipos Inc. All Rights Reserved. ⼀部機能がDB移⾏することに。ダウンタイムゼロで乗り切るため地獄のテスト祭り t e r
ra f o r m 移 ⾏ フ ェ ー ズ 22 データレイク データマート 投稿テーブル (旧)部署 テーブル 部署マスターテーブル 投稿with部署テーブル (新)部署 テーブル 部署データ等のDBが datastoreからspannerへ
© Unipos Inc. All Rights Reserved. dbt移⾏フェーズ 23
© Unipos Inc. All Rights Reserved. DB等のシステム側への関⼼事と分析への関⼼事を分離したい dimensional modelingを取り⼊れたい Lookerの導⼊が決まった!(これがデカイ!!)
d b t 移 ⾏ フ ェ ー ズ 24 つらすぎて無理 同僚tenajimaさん dbtってやつ 良さそうですよ! 検証します! 押忍!!! (dbtってなんだ?)
© Unipos Inc. All Rights Reserved. DB等のシステム側への関⼼事と分析への関⼼事を分離したい dimensional modelingを取り⼊れたい Lookerの導⼊が決まった!(これがデカイ!!)
d b t 移 ⾏ フ ェ ー ズ 25 最⾼ つらすぎて無理
© Unipos Inc. All Rights Reserved. 特に深い理由はないですが、github actions経由でdbt run実⾏してます dbt
cloudは使ってないです(dbt-coreのみ) 将来的に使うのは全然アリだと思ってます d b t 移 ⾏ フ ェ ー ズ 26 github action cloudbuild dbt run 実⾏ dbt test 実⾏ リリース完了! 押すだけ
© Unipos Inc. All Rights Reserved. 良かった点、運⽤上意識したこと 超 初 期
フ ェ ー ズ 27 良かった点 システムの仕様変更や分析の都合で、たびたび作り直した 経験から「どうせ変わるっしょ」という気持ちが強かった とりあえず50点を作って後から80点に改善する気持ち 満点のアーキテクチャ⽬指さなかった 重要 運⽤上意識したこと Lookerで参照してるテーブルにバグがあったり形式が変な データが⼊ると、分析メンバーが困ってしまう。 dbt移⾏作業してからしばらく期間を設けて、データ的に問 題無さそう!と判断してからLookerの参照先を変えた。 既存の基盤と並⾛してダウンタイムゼロへ 重要 ⼀番難しいテーブルから検証した 検証完了後の別テーブルへの展開作業が楽になるので、 移⾏作業がスムーズだった
© Unipos Inc. All Rights Reserved. ダブルメンテ状態にはなるがLooker⽅⾯への影響を気にせずdbt開発出来たのは良 かった。ミスってもterraform由来のヤツがあるし! d b
t 移 ⾏ フ ェ ー ズ 28 すべてのデータを BQへ集約 データマート データレイク データウェアハウス データマート
© Unipos Inc. All Rights Reserved. 並⾏運⽤は実際やりやすかったので、結果的に⼤正解 d b t
移 ⾏ フ ェ ー ズ 29
© Unipos Inc. All Rights Reserved. 品質担保フェーズ 30
© Unipos Inc. All Rights Reserved. データ基盤の保守運⽤コストを減らし、新しい発⾒や本当に欲しい情報はなんなのか? を探求する時間を増やしたい 品 質
担 保 フ ェ ー ズ 31 daily実⾏ テストコケたら slackへ
© Unipos Inc. All Rights Reserved. 品 質 担 保
フ ェ ー ズ 32 良かった点、課題感まとめ 良かった点 意図していない謎の重複やNULLが発⾒出来た! 仕⽅ないものに関しては、testを緩くする まずはtest厳しめに⽤意した 重要 課題 システム側の当たり前(uniqueですよ等)をデータ基盤で も⾒る必要あるのか? とりあえずNULLチェックしてるけどカラムによって重要度 が違う。とりあえずテストでカバー状態。 データ基盤でカバーすべき内容が不明瞭
© Unipos Inc. All Rights Reserved. まとめ 33
© Unipos Inc. All Rights Reserved. これが現時点での答えだ! ま と め
34 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート
© Unipos Inc. All Rights Reserved. データレイクの概要。とりあえずBQにエクスポートされている状態を作る。 ま と め
35 database ⾏動ログ マイクロ サービス群 cloud logging すべてのデータを BQへ集約 GA to BQ export データレイク BQ export
© Unipos Inc. All Rights Reserved. データウェアハウスとデータマート概要。DWHはすべてdbtで実装。 プロダクトサイド都合はdbt、bizサイド(分析)都合はLookerという責務で分離 ま と
め 36 fctテーブル dimテーブル 集計テーブル すべてのデータを BQへ集約 データレイク データウェアハウス データマート
© Unipos Inc. All Rights Reserved. ま と め 37
github action cloudbuild dbt run 実⾏ dbt test 実⾏ テストコケたら slackへ
© Unipos Inc. All Rights Reserved. ま と め 38
lスピード重視時期は、⼩さく始めて後から改善する意識 l分析のためのデータ基盤なので、分析チームへの影響を最⼩限に l層を別けることで関⼼の分離が出来て保守コスト下がる 常に⼀番良い選択を続けたと思っている
© Unipos Inc. All Rights Reserved. ま と め 39
@gen_shun 趣味ブログ Meety Zenn (記事ないです)
© Unipos Inc. All Rights Reserved. +39pt Thank you! 40