Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
行動トラッキングデータベースリプレイスの道のり
Search
ば
January 15, 2019
Programming
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
行動トラッキングデータベースリプレイスの道のり
http://www.techscore.com/blog/2019/01/15/replacing_behavior_tracking_database%F0%9F%90%AF/
ば
January 15, 2019
Other Decks in Programming
See All in Programming
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
180
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
440
ChromeでローカルLLM
ryu1013
0
140
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
Agents on Rails - Rails at Scale 2026
irinanazarova
0
570
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
180
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
800
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
New Earth Scene 8
popppiees
4
2.7k
Balancing Empowerment & Direction
lara
6
1.3k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
Site-Speed That Sticks
csswizardry
13
1.6k
How to build a perfect <img>
jonoalderson
1
6.1k
RailsConf 2023
tenderlove
30
1.6k
So, you think you're a good person
axbom
PRO
2
2.2k
A better future with KSS
kneath
240
18k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Transcript
行動トラッキング データベース リプレースの道のり シナジーマーケティング 馬場 彩子
アジェンダ • 行動トラッキング データベース リプレースの目的 • リプレース後のデータベース構成 • そこにいたる道のり •
教訓
行動トラッキングデータベース リプレースの目的
行動トラッキングデータベースとは • Synergy!(*1)の行動トラッキングデータを保存するデータベース • 行動トラッキングデータを利用している機能 ◦ レポート ◦ 行動ターゲティングによるメッセージ配信 *1
Synergy! : TECHSCORE運営会社のシナジーマーケティング が運用しているCRMクラウドサービス
行動トラッキングデータベース リプレースの動機 • 行動トラッキング対象の変化 メールクリック・アプリプッシュ開封などのメッセージ配信系の行動か らWebパーツ閲覧などのWeb系行動へ • データ量の急増 • データの性質の変化によりパフォーマンスが劣化
→ レポート・行動ターゲティング配信の両機能をストレスなく提供する
リプレース前のテーブルの状況 • Postgresql に格納 • データは全アカウント同じテーブルに格納 • 重複した情報を1行に保持 • 週次でテーブルをパーティショニング
課題はなにか • レポート表示のための集計が遅い • 行動ターゲティングのための問い合わせが遅い
リプレースの目的は何か • 「大量データ」を「高速にさばく」トラッキングデータベースをつくる ◦ レポート表示のための集計処理が速い ◦ 行動ターゲティングのための問い合わせが速い
リプレースの手段 • 利用用途ごとに最適なテーブル設計を採用する • トラッキングデータを利用する機能の精査を行い、参照頻度が少な い過去データを移行する
忘れてはいけない大事な点 • データベースリプレースに際して、データの損失・ダウンタイムは許 されない • 既存のサービスを動かしながら、裏側でデータベースを切り替える 必要がある
リプレース後のデータベース構成
リプレースの方向性 • フェーズ1 : 暫定対応 アプリケーションを変更せずにデータベース移設 • フェーズ2:恒久対応 テーブルの構成をベストに変更・アプリケーションも変更 •
いずれも2段階で無停止リプレース a. データを新旧両方のテーブルに登録 b. 参照系アプリの切り替え
データベース構成概要(Before) Postgresql Old App Old Log Parser
データベース構成概要(暫定対応移行期) Postgresql Old App Old Log Parser Old Tables Postgresql
New
データベース構成概要(暫定対応After) Postgresql Old App Old Log Parser Postgresql New Old
Tables
データベース構成概要(恒久対応移行期) App Old Log Parser Postgresql New Old Tables New
Tables
Postgresql New データベース構成概要(恒久対応After) Log Parser New Tables App New
テーブル構成概要 • 行動トラッキング用のテーブルの再構築 ◦ クライアントごと・行動種類ごとのテーブル ◦ 月次でパーティショニング • レポート参照用のテーブルを新設
テーブルを用途ごとに分割した理由 • アクセスパターンが違う 行動ターゲティングではIDを指定して条件に合致する行動がある かみる / レポートでは一定期間のユニーク行動者数などをみる → 各クエリに最適なテーブル構成 /
インデックス設計 • IOがボトルネック 必要な項目が違う。不要な項目の取得が多くIOを圧迫 → 必要な情報のみ取得できるようテーブルを分割
リプレースの道のり
2017年6月 • 2015年稼働のシステム。パフォーマンス課題が顕在化 • Webパーツ機能リリース ◦ レポート表示のためのクエリが遅く表示前にブラウザタイムア ウト ◦ 「ほぼ障害」(→
アプリ改修でのりきる) • リターゲティングメール配信遅延 ◦ 探索条件が特別な場合、配信開始に1時間かかる場合も
2017年7月 ー9月 (暫定対応) • 方針「アプリ改修せず、半年もつDBに」 • 方式検討 ◦ 改修後のシステムと移行方式、両方の検討が必要 ◦
テクニカルエキスパート 2名が素案作成 ◦ パフォーマンス検証と移行リハーサルを繰り返す • 方式決定 ◦ パーティション変更 / 現状と同じビューを用意 / insert trigger ◦ 直近 データは fdw による double insert 、過去データはRedshift 経由の移行 によりテーブル構成を変換しながら copy
2017年10月 • 1ヶ月かけて、過去データ移行 • 深夜作業で最終同期と切り替えを実施
2017年11−12月 • PVが多いサイトにトラッキングタグが設置され、行動トラッキング データの流量が3倍に • アプリケーションの変更も視野にいれて「3年もつシステム」に • 技術検討開始 http://d.hatena.ne.jp/yohei-a/20170910/1505060875 Lamda
? Kappa ? Redshift ? Athena? • 方式決定:RDS + 仕様変更
2018年1月ー6月 • プロダクト企画チームに閉鎖する機能の利用状況説明、営業調整 を依頼 • データ移行開始 • 各チームにアプリ改修依頼 設計方針とマイルストーンの共有 •
実装 • 機能テストおよびパフォーマンステスト • アプリ切り替え
そして今にいたる • とてもはやくなった • 機能一部閉鎖による問い合わせ、(おそらく)ゼロ
教訓
範囲を絞る • 汎用性と無能は表裏一体。どんな利用方法にも対応できるDBが いつしか、どの問い合わせにも許容できないほど反応が遅いDBに • 未来はわからない。将来のために作り込んだ機能が、現状の拡張 やパフォーマンスの邪魔をする • 10年20年運用し続けたいなら、2-3 年ごとにシステムを更新する
覚悟をもち、「3年後まで現機能が元気に動くシステムを素早くリ リース」することにフォーカスする
技術力は行動の源泉 • 自信があるから変えようと行動できる 「サービス止めずに2テラのデータベース移設する」一歩をふみだ せるか • 自信を形作るもの=技術力 • 技術力は知識とその応用力 •
武器を増やす。たとえ今使わなくても
実際に手を動かす • 動かしてみると初めてわかること 大規模のシステムではチュートリアルにあるようなシンプルな方法 だとシステム要件満たさない マニュアルに書いてあっても見過ごす細かい仕様が設計を左右す る(fdw の トランザクションレベルとか) •
新技術採用などの設計時から実際の稼働に近い形で検証すること で骨や肉になる知見が得られる ◦ AWS RDS の スナップショットの利用が可能だったのは楽だった ◦ リプレースだと非機能要件の見積もりが(比較的)容易
プロジェクト全体を俯瞰する • マイクロサービス構成に合わせた機能ごとのチーム編成になった ため、横断的にもれなく矛盾なくサービスを構成することが難しく なっていることを自覚する • 取り組み1: 全体の設計は1チーム・各機能の実現方法は各チームに任せる • 取り組み2:
結合のタイミングをめちゃくちゃ早く設定 → 最終リリース日時を変更することなく、テーブル設計の変更をす ることができた
解決方法は技術以外にもある • 当初は現行仕様を一切変更せずに実現する方法を考えていた • ただしリソースは有限 ◦ Lambda Architecture などは実装コスト高い ◦
トラッキングデータを無期限で保存するのは運用コスト高い ◦ それで実現できるのが「3年前のメールクリック行動でターゲティング可能」 ◦ 仕様の矛盾なども • その機能・サービスは必要か? ◦ 実装しない ≠ 力不足、負け ◦ この機能を維持するリソースで、他の価値あるものができないか?
このプレゼンテンプレがすばらしい • 「目的」「システム構成」「流れ」「教訓」とプロジェクトで得た知見を 網羅できる • みんな、やったらいいよ • もちろん内容もすばらしいのでみて*1 ZOZOTOWN システムリプレイスの道のり
https://speakerdeck.com/labor/zozotown-geng-huan-yun-xi-ton g-zhi-dao *1 現在は公開されていません
おしまい