Slide 1

Slide 1 text

© Unipos Inc. All Rights Reserved. データ基盤 今に⾄るまで Unipos株式会社 ゲンシュン 0

Slide 2

Slide 2 text

© Unipos Inc. All Rights Reserved. unipos株式会社プロダクト部プロダクト戦略室のゲンシュンと申します。 ⾃ ⼰ 紹 介 1 2016年 2018年 2019年 2021年 2020年 フロントエンド エンジニア 新卒エンジニア 採⽤責任者 QAエンジニア PM

Slide 3

Slide 3 text

© Unipos Inc. All Rights Reserved. 2 2021年6⽉上旬 3時間後 データを使った分析の基盤が 整ってないから作って uniposの○○チームで 開発してくれ 来週からよろしくね 押忍!!!!!!! (久しぶりの開発だぜ) すまん、⾊々あって プロダクト戦略室配属 になった 押忍!!!!!!! (データ基盤って何w?) 開発部 MGR MGR プロダ クト部

Slide 4

Slide 4 text

© Unipos Inc. All Rights Reserved. unipos株式会社プロダクト部プロダクト戦略室のゲンシュンと申します。 ⾃ ⼰ 紹 介 3 2016年 2018年 2019年 2021年 2020年 フロントエンド エンジニア 新卒エンジニア 採⽤責任者 QAエンジニア PM データエンジニア イマココ!!

Slide 5

Slide 5 text

© Unipos Inc. All Rights Reserved. 最強とはなにか?ではなく 最強に⾄るまでの変化を中⼼にお話します 4

Slide 6

Slide 6 text

© Unipos Inc. All Rights Reserved. 本 ⽇ の お 品 書 き 5 luniposについて紹介 l現状のアーキテクチャ l超初期フェーズ lterraform移⾏フェーズ ldbt移⾏フェーズ l品質担保フェーズ lまとめ 本⽇のお品書き

Slide 7

Slide 7 text

© Unipos Inc. All Rights Reserved. uniposについて紹介 6

Slide 8

Slide 8 text

© Unipos Inc. All Rights Reserved. 7

Slide 9

Slide 9 text

© Unipos Inc. All Rights Reserved. 8 良い⾏動への称賛 × 少額のインセンティブ (ポイント) オープンに送り合うため 良い⾏動が組織全体へ

Slide 10

Slide 10 text

© Unipos Inc. All Rights Reserved. 現状のアーキテクチャ 9

Slide 11

Slide 11 text

© Unipos Inc. All Rights Reserved. これが現時点での答えだ! 現 状 の ア ー キ テ ク チ ャ 10 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート

Slide 12

Slide 12 text

© Unipos Inc. All Rights Reserved. データレイクの概要。とりあえずBQにエクスポートされている状態を作る。 現 状 の ア ー キ テ ク チ ャ 11 database ⾏動ログ マイクロ サービス群 cloud logging すべてのデータを BQへ集約 GA to BQ export データレイク BQ export

Slide 13

Slide 13 text

© Unipos Inc. All Rights Reserved. データウェアハウスとデータマート概要。DWHはすべてdbtで実装。 プロダクトサイド都合はdbt、bizサイド(分析)都合はLookerという責務で分離 現 状 の ア ー キ テ ク チ ャ 12 fctテーブル dimテーブル 集計テーブル すべてのデータを BQへ集約 データレイク データウェアハウス データマート

Slide 14

Slide 14 text

© Unipos Inc. All Rights Reserved. 超初期フェーズ 13

Slide 15

Slide 15 text

© Unipos Inc. All Rights Reserved. 現状のアーキテクチャに対して、約1年前のアーキテクチャは・・・? 超 初 期 フ ェ ー ズ 14 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート

Slide 16

Slide 16 text

© Unipos Inc. All Rights Reserved. 超シンプル。スケジュールクエリでBQからBQへ分析したいテーブルを作るだけ。 Lookerも無い。 超 初 期 フ ェ ー ズ 15 すべてのデータを ここへ集約 分析したい情報.sqlを量産 データレイク データマート

Slide 17

Slide 17 text

© Unipos Inc. All Rights Reserved. 良かった点、課題感まとめ 超 初 期 フ ェ ー ズ 16 良かった点 冪等性担保してたので再実⾏しやすい 層が少なくミスったら作り直すでOKだった シンプルなのでシステム仕様を理解しながら実装出来た 作ってすぐ壊すサイクルが早かった 重要 課題 どうせ後でjoinするから、最初からカラム付与してよ〜 というお⾔葉に即yesしちゃった 後述しますが、システム対応で地獄を⾒ることに。。 分析のためにカラム付与が多くキメラ化 重要

Slide 18

Slide 18 text

© Unipos Inc. All Rights Reserved. 意識したこと、メリット、課題感。 超 初 期 フ ェ ー ズ 17 データレイク データマート 投稿テーブル 部署テーブル 部署マスターテーブル 投稿with部署テーブル

Slide 19

Slide 19 text

© Unipos Inc. All Rights Reserved. terraform移⾏フェーズ 18

Slide 20

Slide 20 text

© Unipos Inc. All Rights Reserved. スケジュールクエリはOWNER神権を限を貰って独⾃シェルで作られる そこにメスが⼊りました。 t e r ra f o r m 移 ⾏ フ ェ ー ズ 19 OWNER権限 もらいます〜 ローカルで実⾏〜 cloudbuildコマンド〜 デプロイ完了! ある⽇ データ基盤、temporaryな⽅法 で実⾏してるじゃん? あれ困るんだよね〜 開発 部 そういうのterraformでやって るから、terraformで実⾏する ようにして MGR 押忍!!! (terraformって何???)

Slide 21

Slide 21 text

© Unipos Inc. All Rights Reserved. やっていることは変わりません。ただterraformで実装するようにしました。 各テーブル順番にterraform移⾏したので、ダウンタイムゼロで進⾏出来た t e r ra f o r m 移 ⾏ フ ェ ー ズ mainマージ cloudbuildで トリガー実⾏ terraform apply実⾏ スケジュールクエリ再作成 リリース完了! 俺何も権限ないけど リリースできたぞい! 20 いい話 開発 部

Slide 22

Slide 22 text

© Unipos Inc. All Rights Reserved. 良かった点、課題感まとめ t e r ra f o r m 移 ⾏ フ ェ ー ズ 21 良かった点 ⼈に権限を持たせずデプロイや実⾏ができる(ZTP思想) prod、stg、開発、各環境の差分をいい感じに吸収できた 権限最⼩且つ環境依存を解決出来た 重要 課題 分析側の都合でカラム設計したこと システム変更を吸収する層がないこと これらが原因で変更に弱い 俺がめっちゃ頑張らないといけない作りになっている システム変更の影響モロ受ける 重要 terraform applyの差分表⽰嬉しい 意図しない変更が⼊ってないか、⽬で⾒ることもできる!

Slide 23

Slide 23 text

© Unipos Inc. All Rights Reserved. ⼀部機能がDB移⾏することに。ダウンタイムゼロで乗り切るため地獄のテスト祭り t e r ra f o r m 移 ⾏ フ ェ ー ズ 22 データレイク データマート 投稿テーブル (旧)部署 テーブル 部署マスターテーブル 投稿with部署テーブル (新)部署 テーブル 部署データ等のDBが datastoreからspannerへ

Slide 24

Slide 24 text

© Unipos Inc. All Rights Reserved. dbt移⾏フェーズ 23

Slide 25

Slide 25 text

© Unipos Inc. All Rights Reserved. DB等のシステム側への関⼼事と分析への関⼼事を分離したい dimensional modelingを取り⼊れたい Lookerの導⼊が決まった!(これがデカイ!!) d b t 移 ⾏ フ ェ ー ズ 24 つらすぎて無理 同僚tenajimaさん dbtってやつ 良さそうですよ! 検証します! 押忍!!! (dbtってなんだ?)

Slide 26

Slide 26 text

© Unipos Inc. All Rights Reserved. DB等のシステム側への関⼼事と分析への関⼼事を分離したい dimensional modelingを取り⼊れたい Lookerの導⼊が決まった!(これがデカイ!!) d b t 移 ⾏ フ ェ ー ズ 25 最⾼ つらすぎて無理

Slide 27

Slide 27 text

© Unipos Inc. All Rights Reserved. 特に深い理由はないですが、github actions経由でdbt run実⾏してます dbt cloudは使ってないです(dbt-coreのみ) 将来的に使うのは全然アリだと思ってます d b t 移 ⾏ フ ェ ー ズ 26 github action cloudbuild dbt run 実⾏ dbt test 実⾏ リリース完了! 押すだけ

Slide 28

Slide 28 text

© Unipos Inc. All Rights Reserved. 良かった点、運⽤上意識したこと 超 初 期 フ ェ ー ズ 27 良かった点 システムの仕様変更や分析の都合で、たびたび作り直した 経験から「どうせ変わるっしょ」という気持ちが強かった とりあえず50点を作って後から80点に改善する気持ち 満点のアーキテクチャ⽬指さなかった 重要 運⽤上意識したこと Lookerで参照してるテーブルにバグがあったり形式が変な データが⼊ると、分析メンバーが困ってしまう。 dbt移⾏作業してからしばらく期間を設けて、データ的に問 題無さそう!と判断してからLookerの参照先を変えた。 既存の基盤と並⾛してダウンタイムゼロへ 重要 ⼀番難しいテーブルから検証した 検証完了後の別テーブルへの展開作業が楽になるので、 移⾏作業がスムーズだった

Slide 29

Slide 29 text

© Unipos Inc. All Rights Reserved. ダブルメンテ状態にはなるがLooker⽅⾯への影響を気にせずdbt開発出来たのは良 かった。ミスってもterraform由来のヤツがあるし! d b t 移 ⾏ フ ェ ー ズ 28 すべてのデータを BQへ集約 データマート データレイク データウェアハウス データマート

Slide 30

Slide 30 text

© Unipos Inc. All Rights Reserved. 並⾏運⽤は実際やりやすかったので、結果的に⼤正解 d b t 移 ⾏ フ ェ ー ズ 29

Slide 31

Slide 31 text

© Unipos Inc. All Rights Reserved. 品質担保フェーズ 30

Slide 32

Slide 32 text

© Unipos Inc. All Rights Reserved. データ基盤の保守運⽤コストを減らし、新しい発⾒や本当に欲しい情報はなんなのか? を探求する時間を増やしたい 品 質 担 保 フ ェ ー ズ 31 daily実⾏ テストコケたら slackへ

Slide 33

Slide 33 text

© Unipos Inc. All Rights Reserved. 品 質 担 保 フ ェ ー ズ 32 良かった点、課題感まとめ 良かった点 意図していない謎の重複やNULLが発⾒出来た! 仕⽅ないものに関しては、testを緩くする まずはtest厳しめに⽤意した 重要 課題 システム側の当たり前(uniqueですよ等)をデータ基盤で も⾒る必要あるのか? とりあえずNULLチェックしてるけどカラムによって重要度 が違う。とりあえずテストでカバー状態。 データ基盤でカバーすべき内容が不明瞭

Slide 34

Slide 34 text

© Unipos Inc. All Rights Reserved. まとめ 33

Slide 35

Slide 35 text

© Unipos Inc. All Rights Reserved. これが現時点での答えだ! ま と め 34 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート

Slide 36

Slide 36 text

© Unipos Inc. All Rights Reserved. データレイクの概要。とりあえずBQにエクスポートされている状態を作る。 ま と め 35 database ⾏動ログ マイクロ サービス群 cloud logging すべてのデータを BQへ集約 GA to BQ export データレイク BQ export

Slide 37

Slide 37 text

© Unipos Inc. All Rights Reserved. データウェアハウスとデータマート概要。DWHはすべてdbtで実装。 プロダクトサイド都合はdbt、bizサイド(分析)都合はLookerという責務で分離 ま と め 36 fctテーブル dimテーブル 集計テーブル すべてのデータを BQへ集約 データレイク データウェアハウス データマート

Slide 38

Slide 38 text

© Unipos Inc. All Rights Reserved. ま と め 37 github action cloudbuild dbt run 実⾏ dbt test 実⾏ テストコケたら slackへ

Slide 39

Slide 39 text

© Unipos Inc. All Rights Reserved. ま と め 38 lスピード重視時期は、⼩さく始めて後から改善する意識 l分析のためのデータ基盤なので、分析チームへの影響を最⼩限に l層を別けることで関⼼の分離が出来て保守コスト下がる 常に⼀番良い選択を続けたと思っている

Slide 40

Slide 40 text

© Unipos Inc. All Rights Reserved. ま と め 39 @gen_shun 趣味ブログ Meety Zenn (記事ないです)

Slide 41

Slide 41 text

© Unipos Inc. All Rights Reserved. +39pt Thank you! 40