Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

GMOプライベートDMPの仕組み

16,428 views

Published on

GMO Private DMP の仕組みの説明 - CDH5.2, Impala2.0, HBase0.98 をフル活用したアドテク&ビッグデータのシステム

Published in: Technology
  • Be the first to comment

GMOプライベートDMPの仕組み

  1. 1. GMOプライベートDMPで挑戦した アドテク&ビッグデータのシステム
  2. 2. 2 ●自己紹介片野道雄 ▪ GMOインターネット株式会社 ▪ 次世代システム研究室 • チーフアーキテクト ▪ 元はデータベースエンジニア • Oracle RAC, MySQL, PostgreSQL (with Slony-I), XtraDB (on Fusion-io), MySQL Cluster, MariaDB Galera Cluster • CDH (Hive, HBase, Impala) • 検証でCassandraとMongoDB
  3. 3. 3 ●目次 ▪ プライベートDMPとは? ▪ GMOプライベートDMP ▪ 1st Party Cookie Syncに挑戦 ▪ Hadoopと発火の工夫 ▪ システム設計のノウハウ
  4. 4. 4 プライベートDMPとは? DWHとの違い タグ発火と 広告配信 用語集 DMPの概要 リタゲ(DSP) との違い
  5. 5. 5 先ず、アドテクについて用語を整理
  6. 6. 6 アドテク用語 リスティング広告検索エンジンでの検索ワードに連動した広告。 Google、Yahoo。 ディスプレイ広告サイト上の広告。テキスト、バナー、動画の 広告など。 RTB (Real-Time Bidding) ディスプレイ広告におけるリアルタイム入札。 →後述 DSP (Demand-Side Platform) RTBの広告主側システム。→後述 SSP (Supply-Side Platform) RTBの広告掲載側システム。→後述
  7. 7. 7 アドテク用語 タグ サイトに仕込むimgタグやjavascriptタグ。 サーバーにリクエストが送られ、トラッキン グや効果測定などで利用。 発火タグを呼び出し、サーバーにリクエストが送 られること。 Cookie Sync ドメインが異なるCookieのIDをリダイレクト させて紐付けること。→後述 DMP (Data Management Platform) 様々なサイトの行動ログなどを蓄積し、広告 配信などに活用するプラットフォームのこと。 →後述
  8. 8. 8 アドテク用語 オーディエンスサイト来訪者のこと。 セグメントオーディエンスの属性や趣味嗜好、行動特性 で層を区分したもの。 ターゲティング特定のセグメントに狙いを絞って、広告を打 つこと。 リターゲティング (リタゲ) サイトに訪れた行動履歴などから、オーディ エンス(セグメント)を絞って、広告を打つこと。 →後述
  9. 9. 9 RTB でのオークションの流れ SSP / DSP
  10. 10. 10 RTB - DSP / SSP
  11. 11. 11 プライベートDMPとは? DWHとの違い タグ発火と 広告配信 用語集 DMPの概要 リタゲ(DSP) との違い
  12. 12. 12 DMP = Data Management Platform データをためて活用する「箱」 ▪ パブリックDMP ▪ プライベートDMP ※2種類のDMPがある
  13. 13. 13 パブリックDMPとプライベートDMP
  14. 14. 14 パブリックDMP ボリュームが多い インターネットユーザーをセグメント 化して、広告配信や調査に活用 提携する媒体からCookie IDを収集、 IDを統合して利用または販売
  15. 15. 15 プライベートDMP ボリュームが少ない サイトに来た人をセグメント化して、 広告・メール配信や顧客分析に活用 ロイヤリティ向上 サイトの会員属性・購買履歴・オフラ インデータなどを取り込んで利用
  16. 16. 16 DMP = Data Management Platform データをためて活用する「箱」 ▪ ターゲティング/リタゲ広告 ▪ CRM連携、メール配信、LPO ▪ 顧客分析
  17. 17. 17 プライベートDMPとは? DWHとの違い タグ発火と 広告配信 用語集 DMPの概要 リタゲ(DSP) との違い
  18. 18. 18 DSPのリタゲで十分では? DSPのリタゲができない・しないこと ▪ 会員属性、購買履歴などの取り込み ▪ 行動ログの蓄積、任意の集計 ▪ 詳細なセグメント作成 ▪ 広告配信以外へのセグメント活用
  19. 19. 19 プライベートDMPとは? DWHとの違い タグ発火と 広告配信 用語集 DMPの概要 リタゲ(DSP) との違い
  20. 20. 20 DWH = Data WareHouse 直訳「データの倉庫」 直訳したところの意味に、差はない DMP = Data Management Platform 直訳「データ管理基盤」
  21. 21. 21 導入した企業は、意思決定にデータを 活用する点で恐らく区別してない ▪ システムを歴史的に区分している印象 ▪ DWH はBI とセットでよく語られる ▪ プライベートDMP でもBI を行いたい
  22. 22. 22 DWH 企業側で構築 基幹システム(RDB)から、分析項目に そって抽出、構造化して時系列に格納 プライベートDMP 第三者のサービス システムは提供会社それぞれ。今のと ころ、アドテク業界での用語
  23. 23. 23 プライベートDMPとは? DWHとの違い タグ発火と 広告配信 用語集 DMPの概要 リタゲ(DSP) との違い
  24. 24. 24 DMPのセグメントにどうやって広告を 配信するのか? 基本的には、DSPのタグ(主にリタゲ用) を呼び出す= タグ発火 ※そこから先の広告配信はDSPが対応
  25. 25. 25 DSPのタグを呼び出すのには Piggy Back という方法を 用いるのが基本
  26. 26. 26 DSPタグのPiggyBack
  27. 27. 27 続いて、プライベートDMPに おけるタグ発火までの流れ (Piggy Back)
  28. 28. 28 プライベートDMPとタグ発火(PiggyBack)
  29. 29. 29 そして、GMOプライベートDMP
  30. 30. 30 GMOプライベートDMP 競合 特徴
  31. 31. 31 プライベートDMPの競合サービス MOTHER smarticA!DMP
  32. 32. 32 GMOプライベートDMP 競合 特徴
  33. 33. 33 GMOプライベートDMP 特徴 ここまでのプライベートDMPの機能 ▪ 画面操作で自由にセグメント作成できる ▪ セグメント作成から発火まで速い ▪ ページやCVごとに別々のタグがいらない ▪ 3rd Party Cookieは使用しない ▪ セグメント比較レポート
  34. 34. 34 セグメント作成画面サンプル
  35. 35. 35 購買条件サンプル
  36. 36. 36 次から、もっと詳細な技術の 話に移ります
  37. 37. 37 1st Party Cookie Syncに挑戦 広告主の複数の サイトに来訪 3rd Party Cookie タグの現状 1st Party Cookie アイデア
  38. 38. 38 広告主の複数のサイトに来訪 3rd Party Cookie のDMPタグの場合 プライベートDMP X のCookie X が同 じなので、同じユーザーとわかる。
  39. 39. 39 しかし、世の中は 3rd Party Cookie を 簡単に許可しない流れ
  40. 40. 40 1st Party Cookie Syncに挑戦 広告主の複数の サイトに来訪 3rd Party Cookie タグの現状 1st Party Cookie アイデア
  41. 41. 41 実は、iPhone はデフォルトで 3rd Party Cookieが利用できない ▪ iPhone / Mac のSafari は3rd Party Cookieを受け付けない ▪ 主要ブラウザは3rd Party Cookie 拒否の 設定がある
  42. 42. 42 1st Party Cookie Syncに挑戦 広告主の複数の サイトに来訪 3rd Party Cookie タグの現状 1st Party Cookie アイデア
  43. 43. 43 GMOプライベートDMPでは 3rd Party Cookie を使わず、 1st Party Cookie で 複数サイト対応に挑戦
  44. 44. 44 複数サイトでの1st Party Cookie Sync
  45. 45. 45 Hadoopと発火の工夫 タグ処理高速化 Impala + HBase オンライン条件 はリアルタイム
  46. 46. 46 タグ処理高速化JavaScript ▪ タグ出力処理は画面描画処理と分離 ▪ document.write を使用しているタグは、 iframe に書き出して画面描画処理に戻す ▪ 同一DSPは直列/別DSPは並列にタグ出力
  47. 47. 47 Hadoopと発火の工夫 タグ処理高速化 Impala + HBase オンライン条件 はリアルタイム
  48. 48. 48 GMOプライベートDMPのミドルウェア ▪ 大量のタグ発火リクエストをさばきたい NoSQL HBase ▪ 蓄積されたビッグデータを集計・解析したい MPP /SQL Impala ▪ 別々のシステムを行き来したくない NoSQL + MPP /SQL = ? CDH
  49. 49. 49 CDH = Cloudera のHadoop ディストリ ビューション ▪ Impala はCloudera が独自開発C++ ▪ CDH にはHadoop エコシステムがすべて 依存関係が解消されテストされた状態でま とまっている ▪ YARN、HBase、Hiveなど
  50. 50. ▪ Hive のテーブル定義を通して、Impalaクエリ からHBase テーブルに読み書きできる ▪ HBase テーブルを先に作り、Hive は外部テー ブルとして作るのがポイント 50 Impala + HBase Hive から通常のテーブルとして作るとHBase のテーブル もできて便利。だが、HBase のデータ項目が増えたとき Hive 側だけで柔軟に対応できなくなる
  51. 51. 51 HBase でテーブル作成 ① Hive 側でのデータベース名を接頭辞に create ‘gmo.hb_sample_master’, { NAME => 'configdata', VERSIONS => 1, TTL => -1, } ② カラムファミリー名
  52. 52. 52 Hive で外部テーブル作成 ① 外部オプション CREATE EXTERNAL TABLE hbase_sample_master( sample_id int ,created_datetime string ,modified_datetime string ,status_code int ) STORED BY ② 格納先をHbase に指定 ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ WITH SERDEPROPERTIES (“hbase.columns.mapping” = “:key, configdata:created_datetime, configdata:modified_datetime, configdata:status_code") ; ④ Key = PK ③ Hive でのカラム定義を HBase とマッピング
  53. 53. 53 Hadoopと発火の工夫 タグ処理高速化 Impala + HBase オンライン条件 はリアルタイム
  54. 54. 54 プライベートDMPとタグ発火 セグメント作成後、対象オーディエンス が次に来訪したときにタグ発火 (=広告配信)
  55. 55. ⑥で再来訪したときにDSPタグ発火(=広告配信) 55
  56. 56. 56 この場合の問題点 ▪ オーディエンスが次に来訪したとき、 セグメントの条件と大きくズレること がある • 特に「直近○日に○回」来訪といった条件
  57. 57. 57 ●ケース① ▪ 「直近7日以内に来訪」セグメント • セグメント作成時には条件に該当したが、次 の来訪が1か月後でも、タグ発火してしまう ●ケース② ▪ 「ある期間に2回来訪」セグメント • 条件に該当したオーディエンスが次に来訪し て発火するときには3回来訪していることに
  58. 58. 58 オンライン条件はリアルタイム ▪ オンライン(=URL)条件で次の工夫 • 「直近○日」来訪などの各種オンライン条件は APサーバーでリアルタイム処理 • 「ある期間に○回」といった来訪回数の条件は セグメント作成時に1回減らして、次に来訪し たときにAPサーバーで判断して発火
  59. 59. 59 システム設計のノウハウ システム設計 トランザクショ ン制御 TIPS
  60. 60. 60 システム全体
  61. 61. 61 Hadoopクラスタ(CDH)
  62. 62. 62 システム設計のノウハウ システム設計 トランザクショ ン制御 TIPS
  63. 63. 63 トランザクション制御 ▪ 3 フェイズコミット • try catchで表現すると、 try { 1. MariaDB を更新 -> commit ① 2. HBase を更新 -> commit ② ※RDB のトランザクションは、 commit してからHBase を更新す るか(①)、HBase 更新を待って からcommit(②)の使い分け。 3. Rabbit MQ にエンキュー } catch( e ) { // エラーのときは、rollback またはexit }
  64. 64. 64 システム設計のノウハウ システム設計 トランザクショ ン制御 TIPS
  65. 65. 65 TIPS ▪ HDFS のパーミッション • Hiveテーブルを利用する場合は、impala 以外の Hadoopサービスのユーザーに注意(特にFlume) ▪ クエリをcast 関数でバリデーション • integer 型のパーティションキーにURLエンコード した文字を間違って投入したらHiveメタ破壊 • cast 関数を使えば値の型がおかしくても守れる
  66. 66. 66 ご清聴ありがとうございました

×