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
Scalable Customer Journey Orchestration (CJO)
Search
Kai Sasaki
April 24, 2024
Programming
0
420
Scalable Customer Journey Orchestration (CJO)
Kai Sasaki
April 24, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
670
PostmanでAPIの動作確認が楽になった話
h455h1
0
180
Ruby Function Composition
bkuhlmann
1
340
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
300
"config" ってなんだ? / What is "config"?
okashoi
0
290
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
200
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
480
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
27
8.5k
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
43
19k
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1k
Next.js App Router
quramy
11
1.8k
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
2
200
Featured
See All Featured
Unsuck your backbone
ammeep
663
57k
A designer walks into a library…
pauljervisheath
201
23k
RailsConf 2023
tenderlove
8
550
A Philosophy of Restraint
colly
197
16k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
KATA
mclloyd
16
12k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
26
2.3k
Product Roadmaps are Hard
iamctodd
45
9.7k
Web development in the modern age
philhawksworth
203
10k
From Idea to $5000 a Month in 5 Months
shpigford
378
45k
The Illustrated Children's Guide to Kubernetes
chrisshort
32
46k
The Language of Interfaces
destraynor
151
23k
Transcript
April 24th, 2024 Scalable Customer Journey Orchestration (CJO) Kai Sasaki
(Applications)
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 自己紹介 •
佐々木海 (ささきかい) • 2015年トレジャーデータ入社 • Hadoop, Prestoなど大規模データのための 分散システムの開発 • 現在はCDPを使ったデジタルマーケティング のためのアプリケーション開発に従事 2
© 2022 Treasure Data, Inc. Confidential—Internal Use Only トピック •
Customer Journey Orchestration (CJO)とは • CDPアプリに求められるスケーラビリティ • ソリューション • SQLを使った関係代数演算 • 集約演算を用いた状態遷移 • サンプリングベースの一貫性チェック • まとめ 3
カスタマージャーニー オーケストレーション (CJO)とは Customer Journey Orchestration
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
5
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
6
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
7 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
8 stage step goal exit criteria entry criteria Profile
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
9 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
10 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
11 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
12 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
13 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
14 stage step goal exit criteria entry criteria
© 2022 Treasure Data, Inc. Confidential—Internal Use Only Journey Builder
15 stage step goal exit criteria entry criteria
求められる スケーラビリティと 技術的選択肢 Technical Options
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 選択肢 1
: Relational Database 17 1 2 3 4 5 7 6 8 customer_id position e00f1d60 1 e408be80 5 e8572200 3
© 2022 Treasure Data, Inc. Confidential—Internal Use Only BtoB vs
BtoC 18
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 選択肢 2
: NoSQL (e.g. KVS) 19 e00f1d60 1 e408be80 4 e8572200 3 1 2 3 4 5 7 6 8
© 2022 Treasure Data, Inc. Confidential—Internal Use Only デジタルマーケターの望むもの 20
ペルソナ ターゲット
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 選択肢 3:
OLAP Database (Plazma) 1 2 3 4 5 7 6 8 customer_id time_1 time_2 time_3 e00f1d60 1213421 1413311 1413432 e408be80 1213421 1723421 NULL e8572200 1113421 NULL NULL
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 各選択肢の比較 RDMS
KVS OLAP (Plazma) 一貫性 ⭕ (部分的) ❌ ❌ リアルタイム性 ⭕ ⭕ ❌ スループット ❌ ❌ ⭕
© 2022 Treasure Data, Inc. Confidential—Internal Use Only ユースケースとの対応 RDMS
KVS OLAP (Plazma) 一貫性 ⭕ (部分的) ❌ ❌ リアルタイム性 ⭕ ⭕ ❌ スループット ❌ ❌ ⭕ RDMS KVS OLAP (Plazma) ユースケースの拡張 ⭕ ❌ ❌ 即時コミュニケーション ⭕ ⭕ ❌ 大規模データ ❌ ❌ ⭕
ソリューション How CJO works under the hood
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算 INTERSECT
(積集合) UNION (和集合) EXCEPT (差集合)
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
Goal Goal
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
Goal Goal Stage 1
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
Goal Goal Stage 1 Stage 2
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
Goal Goal Stage 1 Stage 2 Stage 3
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
Goal Goal Stage 1 Stage 2 Stage 3 exit exit
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Audience
Goal Goal Stage 1 Stage 2 Stage 3 exit exit exit exit
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Stage
1 Stage 2 Stage 3 exit exit Step 1
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Stage
1 Stage 2 Stage 3 exit exit Step 2 Step 1
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Stage
1 Stage 2 Stage 3 exit exit Step 3 Step 1 Step 2
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集合演算を使った状態遷移 Stage
1 Stage 2 Stage 3 exit exit Step 3 Step 1 Step 2 Step 4 Step 5
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 疎なテーブル Goal
Stage 1 Stage 2 Stage 3 exit exit exit exit customer_id stage1 stage1_exit_1 stage1_exit_2 stage2 … 1 t1 t1 NULL NULL 2 t1 t1 NULL NULL 3 t1 NULL NULL t2
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 疎なテーブル custom
er_id stage1 stage1_exit_1 stage1_step_1 stage_1_step_2 stage_1_step3 stage_1_step4 stage_1_step_5 … a t1 t1 a t1 t1 a t1 t1 a t1 a t1 t1 一時テーブルへの追加(append)で計算を続ける
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 集約演算を使った更新 Goal
Stage 1 Stage 2 Stage 3 exit exit exit exit SELECT min(...) FROM … GROUP BY customer_id
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 一貫性チェック Aggregation
GROUP BY customer_id SELECT COUNT(invalid) FROM journey_1 TABLESAMPLE BERNOULLI (50) WHERE <Invalid Condition>
© 2022 Treasure Data, Inc. Confidential—Internal Use Only リネームによる一括更新 Old
Journey State Table New Journey State Table
© 2022 Treasure Data, Inc. Confidential—Internal Use Only CJOを支えるスケーラビリティ -
集合演算を使った状態計算 - SQLで計算できる条件が利用可能 - SELECT, INSERTベースで計算できる - とり得る状態を全て含めた疎な状態管理 - 集約関数で更新可能 - 過去の履歴を含むのでOLAPデータベースの特性を生かした分析が可能 - 効率的な一貫性チェック - アプリケーションが要求する一貫性を担保 - サンプルテーブルを使うことで計算量を抑える
© 2022 Treasure Data, Inc. Confidential—Internal Use Only 43 Thank
you