Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2023年のしくじりと学び

 2023年のしくじりと学び

2024/01/10に開催された「データマネジメント新年会 〜去年のしくじりを共有し、正月ボケを解消する〜」の登壇資料です
https://sansan.connpass.com/event/303723/

ゲンシュン

January 10, 2024
Tweet

More Decks by ゲンシュン

Other Decks in Technology

Transcript

  1. © Unipos Inc. All Rights Reserved. unipos株式会社コーポレート部CDP企画室のゲンシュンと申します。 ⾃ ⼰ 紹

    介 1 2016年 2018年 2019年 2021年 2020年 フロントエンド エンジニア 新卒エンジニア 採⽤責任者 QAエンジニア PM データエンジニア イマココ!! 2023年
  2. © Unipos Inc. All Rights Reserved. 4 良い⾏動への称賛 × 少額のインセンティブ

    (ポイント) オープンに送り合うため 良い⾏動が組織全体へ
  3. © Unipos Inc. All Rights Reserved. 本 ⽇ の お

    品 書 き 7 l現在のアーキテクチャ紹介 lしくじり紹介 n機械学習を使ったのに運⽤に乗らなかった解約予測 n⼈依存のまま運⽤が回っていると錯覚してた nビジネスプロセスに向き合わず⽬先の改修に専念 lまとめ 本⽇のお品書き
  4. © Unipos Inc. All Rights Reserved. 全てのマスターデータをBigQueryに集約、DWHはdbtとBigQueryで実装 BIツールと権限管理はLooker 現 状

    の ア ー キ テ ク チ ャ 9 stg層 mart層 すべてのデータを BQへ集約 データレイク データウェアハウス データマート
  5. © Unipos Inc. All Rights Reserved. データレイクの概要。とりあえずBQにエクスポートされている状態を作る。 現 状 の

    ア ー キ テ ク チ ャ 10 database ⾏動ログ マイクロ サービス群 cloud logging すべてのデータを BQへ集約 GA to BQ export データレイク BQ export
  6. © Unipos Inc. All Rights Reserved. データウェアハウスとデータマート概要。DWHはすべてdbtで実装。 プロダクトサイド都合はdbt、bizサイド(分析)都合はLookerという責務で分離 現 状

    の ア ー キ テ ク チ ャ 11 fctテーブル dimテーブル 集計テーブル すべてのデータを BQへ集約 データレイク データウェアハウス データマート
  7. © Unipos Inc. All Rights Reserved. 特に深い理由はないですが、github actions経由でdbt run実⾏してます dbt

    cloudは使ってないです(dbt-coreのみ) 現 在 の ア ー キ テ ク チ ャ 12 github action cloudbuild dbt run 実⾏ dbt test 実⾏ リリース完了! 押すだけ
  8. © Unipos Inc. All Rights Reserved. やったこと:従来のプロダクトデータのみを利⽤した解約予想の精度をあげた 機 械 学

    習 使 っ た の に 運 ⽤ に 乗 ら な か っ た 解 約 予 測 14 lSalesForce等のbizデータも利⽤し、機械学習させて精度検証した l予測精度はかなり改善、解約リスクある企業をpickupできる状態に
  9. © Unipos Inc. All Rights Reserved. しくじり:半年経過した結果ほぼCSに使われていないことが発覚 機 械 学

    習 使 っ た の に 運 ⽤ に 乗 ら な か っ た 解 約 予 測 15 l⽉に1度BQMLを⽤いて予想、結果をlooker経由でslack連携まで実施
  10. © Unipos Inc. All Rights Reserved. 反省:スコアを⾒てもCSが具体的なアクションに繋げづらかった 機 械 学

    習 使 っ た の に 運 ⽤ に 乗 ら な か っ た 解 約 予 測 16 l各特徴量が⾮常に細かくCSが何を⾒て何が出来るのか想起させられなかった l精度の⾼さを主に求めてしまった
  11. © Unipos Inc. All Rights Reserved. TRY:精度を捨て⾏動ドリブンで再スタート 機 械 学

    習 使 っ た の に 運 ⽤ に 乗 ら な か っ た 解 約 予 測 17 l精度よりも、指標とアクションをセットでサポート出来るように lカテゴリー毎の合算値を提供 n契約周り、お客様との関係性、現在の利⽤状況、オンボ期の状況
  12. © Unipos Inc. All Rights Reserved. 背景:システムのDB⼤型リファクタ移⾏がある ⼈ 依 存

    の ま ま 運 ⽤ が 回 っ て い る と 錯 覚 し て た 19 lscalaで動いてたサービスがgolangに移⾏される lそれに伴い、DBやログ出⼒の向き先も変わる dim_xxx fct_yyy システム 旧DB stg層 mart層 システム 新DB 旧 新
  13. © Unipos Inc. All Rights Reserved. やったこと:いつも通りシステムのDB移⾏への対応をやった ⼈ 依 存

    の ま ま 運 ⽤ が 回 っ て い る と 錯 覚 し て た 20 lなんやかんや、今までslackとか⽇常会話で変更を拾ってた lバグ0で移⾏対応完了します!!という⽬標で挑んだ
  14. © Unipos Inc. All Rights Reserved. しくじり:最後の移⾏イベントを⾒落とし、データ基盤に影響がでてしまった ⼈ 依 存

    の ま ま 運 ⽤ が 回 っ て い る と 錯 覚 し て た 21 l普通に⾒落として、1週間データ⽋損させてしまった nある指標の数値が0になったのをキャッチできたので即気づけたのは幸い
  15. © Unipos Inc. All Rights Reserved. 反省:結果的に今まで良かっただけでちゃんと仕組みでカバー出来ると安⼼だった ⼈ 依 存

    の ま ま 運 ⽤ が 回 っ て い る と 錯 覚 し て た 22 l仕組み化は必ず必要 nサーバーサイドエンジニアと何だかんだ連携してるつもりだった nDB変更にまつわる共有会を毎週ちゃんとやるようにした
  16. © Unipos Inc. All Rights Reserved. 反省:適切な定量⽬標を設けた⽅が良かった ⼈ 依 存

    の ま ま 運 ⽤ が 回 っ て い る と 錯 覚 し て た 23 l「バグ無しで対応やりきる、基盤影響無く進める」という⽬標だ と、どうアクションする? nヒューマンエラーは付き物なので、⾒落としが発⽣しうる l例えば「基盤影響発覚から2⽇以内に修正出来るように対応やる」 という⽬標なら? nすぐ発覚できるようにテストの網羅性を確認しよう nシステム側のリリース⽇はまず把握しよう
  17. © Unipos Inc. All Rights Reserved. 背景:プロダクトに登場する主要データ ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 25 lteam: 導⼊企業 member: 利⽤ユーザー lほぼ全てのテーブルにjoinされる主要な概念 team member
  18. © Unipos Inc. All Rights Reserved. 背景:memberのステータスは単体では判断できない ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 26 l解約したteamのmemberステータスそのままになってる l分析時は常にteamのステータスを⾒なければいけない 有効じゃない!!
  19. © Unipos Inc. All Rights Reserved. 背景:解約→復活(再開)のパターンがある ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 27 l再開⽇が開始⽇を上書きし、利⽤終了⽇が消滅する
  20. © Unipos Inc. All Rights Reserved. 背景:teamやmemberのテーブル設計 ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 28 lLooker側で常にteamテーブルとjoinさせるような設計になってた member 関連テーブル team 関連テーブル dim_member dim_team 集計テーブル 集計テーブル レポート システム DB stg層 mart層 集計層
  21. © Unipos Inc. All Rights Reserved. member 関連テーブル team 関連テーブル

    dim_member dim_team 集計テーブル 集計テーブル レポート システム DB stg層 mart層 集計層 やったこと:Looker頑張りすぎてたのでデータ基盤に寄せる改修をした ビ ジ ネ ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 29 lLookerで常にteamとjoinさせてたのをやめた
  22. © Unipos Inc. All Rights Reserved. member 関連テーブル team 関連テーブル

    dim_member dim_team 集計テーブル 集計テーブル レポート システム DB stg層 mart層 集計層 やったこと:解約→再開を考慮できてないケースがあったので改修した ビ ジ ネ ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 30 l個々テーブルで判断できないので⾊々引っ張らざるを得ない
  23. © Unipos Inc. All Rights Reserved. しくじり:すごく⾟い状況になってしまった ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 31 lteamテーブルって何を表す何のテーブルなんだっけ?がわからず member 関連テーブル team 関連テーブル dim_member dim_team 集計テーブル 集計テーブル レポート システム DB stg層 mart層 集計層
  24. © Unipos Inc. All Rights Reserved. 反省:ビジネスプロセスを⾒直せてなかった ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 32 l◯◯は特殊なレアケースだからあまり考えなくて良いと思ってた n実際はそこそこ有り得る通常フローだった lシステム側のDB設計が現状のビジネスプロセスを現せてない nデータモデリングでカバーしていく 気づき!!
  25. © Unipos Inc. All Rights Reserved. TRY:intermediate層導⼊した ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 33 lぐちゃぐちゃになってる⾚⾊の線を1箇所でやるように改修 member 関連テーブル team 関連テーブル dim_member dim_team 集計テーブル 集計テーブル レポート stg層 mart層 集計層
  26. © Unipos Inc. All Rights Reserved. TRY:intermediate層導⼊した ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 34 lISSUEが10個ぐらい解消できた! member 関連テーブル team 関連テーブル dim_member dim_team 集計テーブル 集計テーブル レポート stg層 mart層 集計層 intermediate層 teamとmemberに 関する事情のみ ここで集約
  27. © Unipos Inc. All Rights Reserved. TRY:intermediate層導⼊した ビ ジ ネ

    ス プ ロ セ ス に 向 き 合 わ ず ⽬ 先 の 改 修 に 専 念 35 l単に⾯倒な処理を1箇所にまとめた訳じゃない lビジネスプロセスを⾒返して、責務の⾔語化と理由が⽣まれた n売り⽅やお客様によってデータの状態がコロコロ変わる n⼀⽅システムDBはそれに追従できないことが多い n全テーブルに影響があるので、team/memberだけ特別に扱った⽅がいい
  28. © Unipos Inc. All Rights Reserved. ま と め 37

    l他者が⾏動伴えるサポートや⽀援を l今まで上⼿く出来たとしても、仕組み化を考える l追いやすい健全な⽬標を lビジネスプロセスに向き合うことを忘れない 2024年もたくさん失敗したくさん学びたい
  29. © Unipos Inc. All Rights Reserved. ま と め 39

    @gen_shun 趣味ブログ gen_shun gen_shun