エントリー済み

BigQuery と Bigtable で実現する、イベント駆動×マイクロバッチで実現する数千万ユーザーの状態管理

中級者 - Intermediate Platform Engineering

マーケティングオートメーション SaaS で、ユーザーの行動に沿ったシナリオ(ポップアップ → メール → プッシュ通知のような一連の接客フロー)を設計・実行する機能を開発している。数千万ユーザーが「今シナリオのどのステップにいるか」をリアルタイムに管理する必要がある。既存システムではイベント駆動によるユーザー状態の更新が中心だったが、「3日後にメールを送る」のような時間経過による状態変化は表現できなかった。

本セッションでは、イベントによるユーザー状態の変化(秒間13万件)とバッチによるユーザー状態の変化(5分間隔)を統合し、一貫した状態管理を実現したアーキテクチャを紹介する。

大量データと複雑な状態更新を両立するために、「user_id で瞬時に1人の状態を読み書きする(Point Lookup)」と「属性やイベント種類で条件に合うユーザーを横断的に抽出する(Range Scan)」という2つのアクセスパターンを、統合する設計を採用した。それぞれに適した特性を持つ2つのデータベースを組み合わせ、CAS 操作を軸にした競合制御で一貫性を保つ仕組みを解説する。

Speaker

Haruki Tosa

株式会社PLAID

CorePlatform Journey Team Tech Lead

株式会社PLAIDに2022年新卒入社。インターン時からリアルタイム解析基盤やサードパーティタグの開発に従事し、インフラからフロントエンド、ネイティブアプリまで幅広い技術を習得。KARTE for App TeamのDev Leaderを経て、CorePlatform Journey TeamでTechLead。