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
3
データ基盤 今に至るまで
2022/11/22に開催された「みんなの考えた最強のデータアーキテクチャ」の登壇資料です
https://datatech-jp.connpass.com/event/258157/
ゲンシュン
November 22, 2022
Tweet
Share
More Decks by ゲンシュン
See All by ゲンシュン
dbtで家計簿アプリ作ってみた
genshun9
1
53
再現性のある成果を出すデータエンジニアになりたい
genshun9
0
2
2023年のしくじりと学び
genshun9
0
2
Other Decks in Technology
See All in Technology
"TEAM"を導入したら最高のエンジニア"Team"を実現できた / Deploying "TEAM" and Building the Best Engineering "Team"
yuj1osm
1
210
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.9k
Amazon Q Developerの無料利用枠を使い倒してHello worldを表示させよう!
nrinetcom
PRO
2
120
設計を積み重ねてシステムを刷新する
sansantech
PRO
0
180
AI自体のOps 〜LLMアプリの運用、AWSサービスとOSSの使い分け〜
minorun365
PRO
7
520
生成AI “再”入門 2025年春@WIRED TUESDAY EDITOR'S LOUNGE
kajikent
0
140
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
490
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.7k
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
270
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
200
IoTシステム開発の複雑さを低減するための統合的アーキテクチャ
kentaro
1
120
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
280
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
KATA
mclloyd
29
14k
GitHub's CSS Performance
jonrohan
1030
460k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Docker and Python
trallard
44
3.3k
Practical Orchestrator
shlominoach
186
10k
What's in a price? How to price your products and services
michaelherold
244
12k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Documentation Writing (for coders)
carmenintech
67
4.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
1k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
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