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
pistaman
November 02, 2022
Programming
0
1.2k
ポイント管理システムの改善について
2022/10/13に行われたSTORESとMGReの共同勉強会で登壇した際の資料
https://hey.connpass.com/event/261576/
pistaman
November 02, 2022
Tweet
Share
Other Decks in Programming
See All in Programming
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
4
870
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
510
Developer Joy - The New Paradigm
hollycummins
1
260
株式会社 Sun terras カンパニーデック
sunterras
0
380
All About Angular's New Signal Forms
manfredsteyer
PRO
0
190
Introduce Hono CLI
yusukebe
6
2.9k
What's new in Spring Modulith?
olivergierke
1
160
なぜGoのジェネリクスはこの形なのか? - Featherweight Goが明かす設計の核心
qualiarts
0
170
Range on Rails ―「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ
rizap_tech
0
6.7k
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
260
CSC305 Lecture 05
javiergs
PRO
0
230
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
600
Featured
See All Featured
Producing Creativity
orderedlist
PRO
347
40k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Docker and Python
trallard
46
3.6k
Designing Experiences People Love
moore
142
24k
The Pragmatic Product Professional
lauravandoore
36
7k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
880
GraphQLとの向き合い方2022年版
quramy
49
14k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Transcript
テクノロジー部門CRM本部 バックエンドエンジニア 西川輝 ポイント管理システムの改善について
自己紹介 2 • 西川輝 • バックエンドエンジニア • STORES 株式会社 ◦
EC(2019/04 ~ 2019/11) ◦ レジ(2019/11 ~ 2022/05) ◦ ブランドアプリ(2022/05 ~) • STORES チョットワカル
目次 3 1. STORES ブランドアプリ の概要 2. 機能追加による負債の蓄積 3. ポイント管理の仕組みの改善について
4. まとめ
STORES ブランドアプリ について
STORES ブランドアプリ の概要 5 2021年12月、ショップフォース株式会社がヘイ株式会社にジョイン。 2022年7月7日、既存サービスを「STORES ブランドアプリ」としてリブランディングしリリース。
STORES ブランドアプリ の概要 6 STORES ブランドアプリ でできること - 顧客管理・利用分析 -
会員属性 - 性別、年齢、誕生日など - ポイント数 - 来店状況 - POSレジ、ECサイト連携 - マーケティングオートメーション - Push通知配信 - クーポン機能
アプリ画面 7 購入時にスタンプやポイントを貯めることが可能
管理画面 8 アプリ登録を起点に会員情報を生成
管理画面 9 POSレジ連携により、購買データと の紐付けも可能
管理画面 10 曜日別・時間帯別の利用状況が店舗 ごとに把握可能
度重なる改修による負債化
STORES ブランドアプリ の機能 12 STORES ブランドアプリ でできること - 顧客管理・利用分析 -
会員属性 - 性別、年齢、誕生日など - ポイント数 - 来店状況 - POSレジ、ECサイト連携 - マーケティングオートメーション - Push通知配信 - クーポン機能
STORES ブランドアプリ の機能 13 STORES ブランドアプリ でできること - 顧客管理・利用分析 -
会員属性 - 性別、年齢、誕生日など - ポイント数-> チェックイン - 来店状況-> チェックイン - POSレジ、ECサイト連携-> チェックイン - マーケティングオートメーション - Push通知配信 - クーポン機能-> チェックイン
チェックイン = ユーザー起因のイベント情報の全て チェックインとは 14
チェックインとは 元々は... - 来店情報 - 来店日 - 利用店舗 - 獲得スタンプ数
- 諸説あり 15
チェックインとは 機能追加後... - 来店情報 - 来店日 - 利用店舗 - 獲得スタンプ数
- ポイントシステムの導入 new - ポイントの取得、利用、失効などの管理が必要に - イベントログの保存 new - アプリダウンロード - SNS共有 - POSレジ、ECサイト連携 new - 購入金額 - 購入商品ID 16
チェックインとは チェックインの課題点 - イベントログや外部連携情報などが追加されたことにより、分析クエリが複雑化 - パフォーマンス悪化 - データ量も増大 - 各カラムの状態によってデータの意味が変わる
- キャッチアップコストが高い - 知らずに改修すると分析結果が変わってしまう - ポイントの履歴が追えない - チェックインテーブルにはポイント取得履歴しか残っていない 17
チェックインとは チェックインの課題点 - イベントログや外部連携情報などが追加されたことにより、検索条件が複雑化 - パフォーマンス悪化 - データ量も増大 - 各カラムの状態によってデータの意味が変わる
- キャッチアップコストが高い - 知らずに改修すると分析結果が変わってしまう - ポイントの履歴が追えない - チェックインテーブルにはポイント取得履歴しか残っていない 18
ポイントの履歴が追えない
ポイントの履歴が追えない 20 - ポイントの履歴とは - 取得 -> 購入、来店時のポイント付与 - 利用
-> クーポン利用時に1ポイント1円等で会計から割引 - 失効 -> 退会、期限切れ - チェックインテーブルにはポイント取得情報しか残っていない - アプリケーション上で複数テーブルの情報を組み合わせて履歴を算出 - 退会の場合は物理削除しているため履歴が残らない
ポイントの履歴が追えない 21 日付 ポイント 2022-10-01 14:00 5pt 2022-10-02 16:00 10pt
checkins(取得) 日付 ポイント 2022-10-09 18:00 10pt .. .. coupons(利用) 有効期間 7 .. shop_settings(失効)
ポイントの履歴が追えない 22 日付 ポイント 失効期限 2022-10-01 14:00 +5pt(取得) 2022-10-09 00:00
2022-10-02 16:00 +10pt(取得) 2022-10-10 00:00 2022-10-09 00:00 -5pt(失効) - 2022-10-09 18:00 -10pt(利用) - 日付 ポイント 2022-10-01 14:00 5pt 2022-10-02 16:00 10pt checkins(取得) 日付 ポイント 2022-10-09 18:00 10pt .. .. coupons(利用) 有効期間 7 .. shop_settings(失効) アプリケーション側で全データをソートして計算
ポイント管理の仕組みを改善
ポイント管理の仕組みを改善 24 - ポイント履歴用のテーブルを作成 - アプリケーションで作っていたデータをそのままDBへ - 取得、利用、失効イベントごとにレコードを追加 日付 ポイント
失効期限 2022-10-01 14:00 +5pt(取得) 2022-10-09 00:00 2022-10-02 16:00 +10pt(取得) 2022-10-10 00:00 2022-10-09 00:00 -5pt(失効) - 2022-10-09 18:00 -10pt(利用) - point_transactions
ポイント管理の仕組みを改善 25 改善の結果 - ポイントの履歴が残るように - パフォーマンスが向上 - DB側で有効ポイントの計算が可能に -
チェックインからポイントに関するユースケースを剥がせた - 責務が明確に - 可読性が向上
まとめ 26 - 目的の違うものを一つにまとめない - 機能追加をする際は立ち止まって考えてみる - アプリケーションの設計でもDB設計でも同じ - データ量を意識する
- 今後どのようなペースで増加するのか - マスターデータなのかトランザクションデータなのか - update より insert - 履歴が残らなくて問題ないか - 競合が発生しないか
27