Save 37% off PRO during our Black Friday Sale! »

小売DXプロダクトを2ヶ月で立ち上げるデータエンジニアリング

 小売DXプロダクトを2ヶ月で立ち上げるデータエンジニアリング

オレシカナイトVol16登壇スライド

登壇動画:
https://www.youtube.com/watch?v=T-2ImdFLqT8

イベント詳細:
https://cyberagent.connpass.com/event/227271/

Dd228ece3eac622c0b1b5f71f54b29ea?s=128

Chisato Nakamura

November 18, 2021
Tweet

Transcript

  1. 小売DXプロダクトを2ヶ月で立ち 上げるデータエンジニアリング AI事業本部 DX本部 バックエンドエンジニア 中村親里 1

  2. 中村 親里 (なかむら ちさと) 2017年新卒入社 AI事業本部DX本部 バックエンドエンジニア #絢瀬絵里推しのラブライバー #リアル脱出ゲーム #ポケモン

  3. アジェンダ 1. DX本部について 2. 2ヶ月でDMPを立ち上げるデータエンジニアリング a. DSとSEのコラボレーション b. DMP基盤の実装 3.

    DX本部が目指す未来
  4. 1. DX本部について 4

  5. None
  6. None
  7. None
  8. None
  9. 2. 2ヶ月でDMPを立ち上げる データエンジニアリング 9

  10. 2.1. DSとSEのコラボレーション 10

  11. DMP (Data Management Platform)とは データを価値あるもの (使用できる状態) にする     https://boxil.jp/mag/a2798/

  12. 当時の状況 • 人員 ◦ ソフトウェアエンジニア(SE): 2人 (うち1人がPdM兼) ◦ データサイエンティスト(DS): 2人

    • DMP完成までの期限: 2ヶ月 • 肝心のデータは来ていないものもたくさん... 圧倒的に人と時間が足りない!!

  13. SE2人で作るのは無理... データサイエンティストと一緒に作れないか? データサイエンティストとソフトウェア エンジニアが得意なことを生かして相乗 効果を生み出せないか

  14. データ基盤の整備ですべきこと • インフラの整備 • 各所に散らばったデータの結合のための設計・実装 • サービスログの設計・収集のための実装 • データ生成過程への介入

  15. データ基盤の整備ですべきこと • インフラの整備 • 各所に散らばったデータの結合のための設計・実装 • サービスログの設計・収集のための実装 • データ生成過程への介入 データサイエンティストを巻き込める部分

  16. DSと一緒に設計しよう! • 最終的にデータ基盤を一番使うのはDS • 理想形を持っているはず • 理想形とその実装コストのバランスを議論しながら設計する ◦ 理想形はどう実装すれば実現可能なのか? ◦

    どういうポイントは妥協できる / できないのか?
  17. データ基盤実装のDSとSEのコラボレーション DSとSEの実装における 相乗効果とは...? インフラ側の工夫次第で、 データエンジニアリングの実装ハードルを下げられる

  18. 実装のハードルを下げる為のインフラの工夫 例: • ETLを足すときに実装箇所や命名規則が 明確なコード設計 • Infrastructure as Code(IaC) ◦

    terraform, digdag ◦ コードで管理することで真似しやすくレビューしやすくする • すぐ壊せる ◦ s3, glue data catalog, redshift spectrum 誰が実装しても負債にならないこと
  19. 2.2. DMP基盤の実装 19

  20. クエリの自動生成機能 ビジネスの人が条件を入力、それを自動でクエリに https://plazma.red/user_engagement/howto/0005

  21. クエリ自動生成機能の要件 • 画面から条件を入力できる • 入力情報からクエリが生成できる • 条件が登録されたらクエリが即時走るように • 指定した期間でクエリが定期実行されるように •

    実行が失敗したらメールで通知できるように 状態(ステータス)を持つworkerの作成
  22. Workerの設計: ステータスフロー

  23. Workerの設計: JOBフロー akka streamsで実装 ※実装はイメージです

  24. クエリの自動生成 • 複数の演算子 ◦ 時間に関する演算子 (固定日時 / 変動日時) ◦ 複数の値が入りうる演算子

    ◦ 数値?日時?文字列? • 複数の結合条件 ◦ AND/OR/NOT • これらの条件をどうDBに保存する? どうオブジェクト指向として表現する? 演算子の例 equal (=) greater than (>) less than (<) greater than or equal to (>=) less than or equal to (<=) not equal to (!=) between is multiple is not multiple in the past of days in the past of months in between the past of days in between the past of manth
  25. みんなで協力できた • 時間が足りない ◦ => いろんな人にに助けてもらった • 誰も何も文句言わず、真摯に対応してくれた • 設計変更等があれば、すぐに共有

    => ZOOM 協力してくださった皆さんに感謝󰢛
  26. 実装を間に合わせるために • DSやPMを巻き込こんで何をやらないかの議論 ◦ 基本オーバースペックになりがち ◦ 限られた時間の中で最低限必要な機能のみの開発に集中する ▪ 全商品からの検索機能はサボった ▪

    DSチームにお願いして商品数を制限し、フロント側で検索できるように ▪ backupプランも用意
  27. それでも技術的チャレンジを • 複雑めなakka stream • React • GraphQL • クエリの自動生成

    • workerの作成
  28. 3. DX本部が目指す未来

  29. None
  30. None
  31. 採用強化中です! • 技術的チャレンジをもっとしたい方 • 社会をより良いものにしたい方 • 社会貢献に繋がる仕事をしたい方 • ユーザ体験をより良いものにしたい方

  32. 一緒に日本の小売を再発明し てくれる方! お待ちしております!!