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

月間180PBのストリーム処理されたイベントデータを使用した, KARTEのリアルタイムインタ...

Avatar for PLAID Tech PLAID Tech
February 27, 2025

月間180PBのストリーム処理されたイベントデータを使用した, KARTEのリアルタイムインタラクションマネジメント

DEIM2025 第17回データ工学と情報マネジメントに関するフォーラム(第23回日本データベース学会年次大会)
https://pub.confit.atlas.jp/ja/event/deim2025

【技術報告】月間180PBのストリーム処理されたイベントデータを使用した, KARTEのリアルタイムインタラクションマネジメント
https://pub.confit.atlas.jp/ja/event/deim2025/presentation/2F-05

Avatar for PLAID Tech

PLAID Tech

February 27, 2025
Tweet

More Decks by PLAID Tech

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 渡辺 健太郎 株式会社プレイド 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
  2. KARTEの全体像 6 KARTEでは, PB級のイベントデータをリアルタイム解析と⼤規模データ分析の2⽅向で活⽤している エンドユーザ イベントデータ タグ SDK Webブラウザ アプリ

    アクション ポップアップ バナー アンケート … (KARTE導⼊企業が持つユーザ) エンドユーザに向けた配信内容 イベント 顧客の⾏動や属性を意味 するデータ ⼤規模データ分析 リアルタイム解析 0.X 秒解析 ユーザの⾏動分析に活⽤ バッチ処理
  3. Stats of KARTE 7 データ規模も爆発的に増加 199 億UU 累計ユーザー数 ※1 0.x

    秒/解析 解析速度 134,000 over 秒間トラッキング数 ※2 180 PB ⽉間解析データ量 ※1 ローンチ〜2023年2⽉までのユニークユーザー数の実績 ※2 閲覧、クリック、購⼊などKARTEで計測しているユーザーの全イベントが 対象。ローンチ〜2023年3⽉までにおける最⼤値
  4. KARTEにおけるリアルタイム解析の難しさ 10 • リアルタイム解析の要求事項 ◦ エンドユーザの統計情報を読み取るタイミングで, 過去全てのイベントが反映されている ◦ 199億UU, 最⼤13万RPS

    でも処理できるスケーラビリティ ◦ 低レイテンシ • 分散処理における課題 ◦ 強整合性を保つことが難しい ▪ 複数 node 間において, あるデータをいつ read しても node 間で違いが⽣じないようにする https://tech.plaid.co.jp/blits_pre_aggregation 解析の擬似コード
  5. イベントデータの分析と課題 • ⽉間 180PB のストリーム処理されたイベントデータが BigQuery にストックされている ◦ PB級の⼤規模データを使って, エンドユーザの興味関⼼をより深く分析できる

    • PB級の⼤規模データを活⽤する際に⽣じる課題 ◦ ⼤規模データに対してクエリを実⾏すると, 応答時間が⻑くなる傾向にある ▪ KARTE 管理画⾯からクエリを実⾏した場合, レスポンスが遅くユーザ体験が下がる ◦ ⼤量のコンピュートリソースを消費するため, コストが上昇する • プレイドでは, 以下のような対策を実施している ◦ テーブル構造の最適化 ◦ クエリ最適化 14
  6. ユーザ構成⽐におけるテーブル構成 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 でクラスタ化
  7. … … … … 中間テーブルの構築 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
  8. … … … … 中間テーブルの構築 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)
  9. クエリ最適化 19 様々なアプローチでクエリを最適化し, ナイーブなクエリからは改善を図っている • スキャン範囲の最⼩化 ◦ ⽇付をテーブル名の suffix に付与

    • 集約の効率化 ◦ 中間テーブルを参照するように変更 • キャッシュの活⽤ ◦ 直近で同様のクエリの実⾏履歴がある場合はそれを活⽤ • 近似関数の使⽤  ◦ APPROX_TOP_COUNT などの活用 • など
  10. ユーザ構成⽐における今後の課題 21 • 各種設定を変更後, すぐに結果を確認することができない ◦ 今は集計完了まで数時間待つ必要がある ▪ 集計の仕組みを⼤きく⾒直す? •

    期間の柔軟性がない ◦ 但し, 柔軟性が向上すると中間テーブルが増える ▪ 中間テーブルを⼤量に作ると管理が複雑かつコストもかかる ▪ 途中で処理が⽌まってしまった場合, 原因の特定が難しい • session単位で処理しているので, 分位点の計算が難しい ◦ いくつかの統計値において厳密な計算ができない
  11. まとめ 24 • KARTEにおいて PB 級の⼤規模データをどう扱っているか ? ◦ リアルタイム解析処理 ▪

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

  13. 27