Slide 1

Slide 1 text

2025.02.27 |  DEIM 2025 ⽉間180PBのストリーム処理されたイベ ントデータを使⽤した, KARTEのリアル タイムインタラクションマネジメント 株式会社プレイド 渡辺 健太郎 1

Slide 2

Slide 2 text

⾃⼰紹介 渡辺 健太郎 株式会社プレイド twitter : @watana318 github : watana318 29 機械系の⼤学院を卒業しました 2020.03.31 機械設計の研究をしていました 製造業の領域でシステム開発をしていました 2020.04.01~2023.10.31 プレイドにジョイン 2023.11.01 2 KARTE Signals 広告配信最適化プロダクトのエンジニアとして KARTE Web 2024年11⽉からInsightチームにジョイン DEIM2025 で発表中です 2025.02.27

Slide 3

Slide 3 text

© PLAID, Inc. | Confidential 3 株式会社プレイドについて 株式会社プレイド 東京都中央区銀座6-10-1 GINZA SIX 10F 設⽴:2011年10⽉ 従業員:325名 ※2024年9⽉末時点

Slide 4

Slide 4 text

© PLAID, Inc. | Confidential 4 ⽶Googleからの資⾦調達を発表 2019年11⽉27⽇ https://press.plaid.co.jp/data/20191127/ © PLAID, Inc. | Confidential

Slide 5

Slide 5 text

KARTEについて 5 CX(顧客体験)プラットフォーム ⼀⼈ひとりに合わせた 顧客体験を提供 WebやAppの訪問者の⾏動を 顧客ごとにリアルタイムに解析

Slide 6

Slide 6 text

KARTEの全体像 6 KARTEでは, PB級のイベントデータをリアルタイム解析と⼤規模データ分析の2⽅向で活⽤している エンドユーザ イベントデータ タグ SDK Webブラウザ アプリ アクション ポップアップ バナー アンケート … (KARTE導⼊企業が持つユーザ) エンドユーザに向けた配信内容 イベント 顧客の⾏動や属性を意味 するデータ ⼤規模データ分析 リアルタイム解析 0.X 秒解析 ユーザの⾏動分析に活⽤ バッチ処理

Slide 7

Slide 7 text

Stats of KARTE 7 データ規模も爆発的に増加 199 億UU 累計ユーザー数 ※1 0.x 秒/解析 解析速度 134,000 over 秒間トラッキング数 ※2 180 PB ⽉間解析データ量 ※1 ローンチ〜2023年2⽉までのユニークユーザー数の実績 ※2 閲覧、クリック、購⼊などKARTEで計測しているユーザーの全イベントが 対象。ローンチ〜2023年3⽉までにおける最⼤値

Slide 8

Slide 8 text

本⽇のアジェンダ 1. KARTEのリアルタイムインタラクションの全貌 2. PB級の⼤規模データを処理するための⼯夫 3. まとめ 8

Slide 9

Slide 9 text

KARTE導⼊済みのとあるECサイトにおけるエンドユーザの体験 9 https://youtu.be/wt0OjOeX-JA?feature=shared エンドユーザのさまざまな⾏動をKARTEがリアルタイムで解析する ● 適切なユーザに適切なタイミングでアクションが提⽰される

Slide 10

Slide 10 text

KARTEにおけるリアルタイム解析の難しさ 10 ● リアルタイム解析の要求事項 ○ エンドユーザの統計情報を読み取るタイミングで, 過去全てのイベントが反映されている ○ 199億UU, 最⼤13万RPS でも処理できるスケーラビリティ ○ 低レイテンシ ● 分散処理における課題 ○ 強整合性を保つことが難しい ■ 複数 node 間において, あるデータをいつ read しても node 間で違いが⽣じないようにする https://tech.plaid.co.jp/blits_pre_aggregation 解析の擬似コード

Slide 11

Slide 11 text

Blitz 11 強整合かつ低レイテンシでユーザ情報を更新する, プレイド独⾃のリアルタイム解析エンジン ● ⾼スケーラビリティかつ低レイテンシの Cloud BigTable を活⽤ Blitz

Slide 12

Slide 12 text

Blitz 12 強整合かつ低レイテンシでユーザ情報を更新する, プレイド独⾃のリアルタイム解析エンジン ● ⾼スケーラビリティかつ低レイテンシの Cloud BigTable を活⽤ Blitz 詳しくは明⽇のセッションやブースにて!

Slide 13

Slide 13 text

本⽇のアジェンダ 1. KARTEのリアルタイムインタラクションの全貌 2. PB級の⼤規模データを処理するための⼯夫 3. まとめ 13

Slide 14

Slide 14 text

イベントデータの分析と課題 ● ⽉間 180PB のストリーム処理されたイベントデータが BigQuery にストックされている ○ PB級の⼤規模データを使って, エンドユーザの興味関⼼をより深く分析できる ● PB級の⼤規模データを活⽤する際に⽣じる課題 ○ ⼤規模データに対してクエリを実⾏すると, 応答時間が⻑くなる傾向にある ■ KARTE 管理画⾯からクエリを実⾏した場合, レスポンスが遅くユーザ体験が下がる ○ ⼤量のコンピュートリソースを消費するため, コストが上昇する ● プレイドでは, 以下のような対策を実施している ○ テーブル構造の最適化 ○ クエリ最適化 14

Slide 15

Slide 15 text

⼤規模データ集計の活⽤例 (ユーザ構成⽐) 15

Slide 16

Slide 16 text

ユーザ構成⽐におけるテーブル構成 16 ● エンドユーザの統計値を⽇次のバッチ処理で計算 ● user_summary テーブルを構築し, 主にこの値を読み取って画⾯に表⽰ ○ session_summary という中間テーブルを作成 Event Data session_summary user_summary custom_session_summary custom_user_summary ‧イベント:view、buy など ‧流⼊元:web、app など ‧セッション情報 ‧ユーザid ‧local_date … date でパーティショニング api_key, user_id でクラスタ化

Slide 17

Slide 17 text

… … … … 中間テーブルの構築 17 event data event data event data event data … event data event data event data event data event data 2025/02/02 user_summary 直近30⽇の 来訪回数 直近30⽇の 平均購⼊⾦額 … … 2025/02/01 … … event data user_summary session_summary event data event data event data 直近30⽇の 来訪回数 直近30⽇の 平均購⼊⾦額 … 閲覧イベント数 … … … event data event data event data … 購⼊⾦額のセッ ション合計値 … 購⼊イベント数 閲覧イベント数 購⼊⾦額のセッ ション合計値 購⼊イベント数 C_eu C_es C_su

Slide 18

Slide 18 text

… … … … 中間テーブルの構築 18 event data event data event data event data … event data event data event data event data 2025/02/02 直近30⽇の 来訪回数 直近30⽇の 平均購⼊⾦額 … … 2025/02/01 … … event data user_summary session_summary event data event data event data 直近30⽇の 来訪回数 直近30⽇の 平均購⼊⾦額 … 閲覧イベント数 … … … event data event data event data … 購⼊⾦額のセッ ション合計値 … 購⼊イベント数 閲覧イベント数 購⼊⾦額のセッ ション合計値 購⼊イベント数 C_eu C_es C_su C_eu >> C_su なのでコスト削減に寄与する (* 30days) (* 30days)

Slide 19

Slide 19 text

クエリ最適化 19 様々なアプローチでクエリを最適化し, ナイーブなクエリからは改善を図っている ● スキャン範囲の最⼩化 ○ ⽇付をテーブル名の suffix に付与 ● 集約の効率化 ○ 中間テーブルを参照するように変更 ● キャッシュの活⽤ ○ 直近で同様のクエリの実⾏履歴がある場合はそれを活⽤ ● 近似関数の使⽤  ○ APPROX_TOP_COUNT などの活用 ● など

Slide 20

Slide 20 text

詳しくは PLAID Engineer Blog にて! 20 https://tech.plaid.co.jp/diving-of-the-distributed-pro cessing-mechanism-of-bigquery https://tech.plaid.co.jp/bigquery-slot-resource-opt mization

Slide 21

Slide 21 text

ユーザ構成⽐における今後の課題 21 ● 各種設定を変更後, すぐに結果を確認することができない ○ 今は集計完了まで数時間待つ必要がある ■ 集計の仕組みを⼤きく⾒直す? ● 期間の柔軟性がない ○ 但し, 柔軟性が向上すると中間テーブルが増える ■ 中間テーブルを⼤量に作ると管理が複雑かつコストもかかる ■ 途中で処理が⽌まってしまった場合, 原因の特定が難しい ● session単位で処理しているので, 分位点の計算が難しい ○ いくつかの統計値において厳密な計算ができない

Slide 22

Slide 22 text

KARTEの管理画⾯における, リアルタイム解析処理とバッチ処理の共存 22 クライアントは, バッチ処理による⼤規模データ分析からエンドユーザを考察‧理解する ● その結果を基にアクションを作成し, エンドユーザのサイト体験を向上させる エンドユーザ イベントデータ タグ SDK Webブラウザ アプリ アクション ポップアップ バナー アンケート … イベント ⼤規模データ分析 リアルタイム解析 クライアント

Slide 23

Slide 23 text

本⽇のアジェンダ 1. KARTEのリアルタイムインタラクションの全貌 2. PB級の⼤規模データを処理するための⼯夫 3. まとめ 23

Slide 24

Slide 24 text

まとめ 24 ● KARTEにおいて PB 級の⼤規模データをどう扱っているか ? ○ リアルタイム解析処理 ■ Blitz により強整合を保ったまま, 低レイテンシなユーザ解析処理を実現 ■ エンドユーザの動きをリアルタイムで把握し, それに応じたアクションを表⽰可能 ○ バッチ処理 ■ テーブル構造の最適化 ● 中間テーブルの構築, パーティショニング, クラスタ化 など ■ クエリ最適化 ● スキャン範囲の最⼩化, 集約の効率化, cache の活⽤, 近似関数の使⽤ など ● KARTEには⽉間180PBに及ぶ⼤量のイベントデータがあり, エンドユーザの⾏動を追うことができる ○ クライアントはこれらを活⽤し, エンドユーザの体験向上や事業促進を実現できる

Slide 25

Slide 25 text

We are hiring! ソフトウェアエンジニアを 募集しています! インターン⽣も募集してい ます!! 25 「プレイド エンジニアインターン」で検索 🔍

Slide 26

Slide 26 text

26

Slide 27

Slide 27 text

27