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.

マイクロアドのアドテクを支える技術

615 views

Published on

「マイクロアドのアドテクを支える技術」
2019/10/05 【マイクロアド】〜ネット広告を支える技術を知る〜 #microad_CAMPHOR
https://camphor.connpass.com/event/146724/

Published in: Technology
  • Be the first to comment

マイクロアドのアドテクを支える技術

  1. 1. マイクロアドの アドテクを支える技術 2019/10/05 【マイクロアド】〜ネット広告を支える技術を知る〜 #microad_CAMPHOR MicroAd, Inc. システム開発本部 中野翔太
  2. 2. #microad_CAMPHOR アジェンダ ● 基本の説明 ● RTB ○ 概要 ○ オーディエンス ○ 広告配信制御 ○ 広告配信計測 ● マイクロアドにおけるRTBの実現 ○ データパイプライン ○ DSPの広告選択 2
  3. 3. 基本の説明 3 インターネット広告における
  4. 4. #microad_CAMPHOR 基本用語 広告主: 広告を出すことで製品の認知度を上げたりブランドの形成を行いたい 媒体主: 運営しているメディアに広告を掲載して利益を得たい インプレッション: 広告の表示のこと クリック: 広告のクリックのこと コンバージョン: 広告により成果を達成すること LP: Landing Pageのこと 4 サイトを表示すると広告のインプレッションが発生 →ユーザはその広告をクリック →LPに遷移 →LPから会員登録を行いコンバージョン
  5. 5. #microad_CAMPHOR インターネット広告の種類 ○○広告という言葉も様々 ● リスティング広告 ● 純広告 ● ネイティブ広告 ● 動画広告 etc... 5
  6. 6. RTB 6
  7. 7. 概要 7
  8. 8. #microad_CAMPHOR RTBとは ● Real Time Biddingの略 ● 広告枠が表示されるたびにオークションが行われ 最も高い値段をつけられた広告が表示される 8 リーマンショックで金融系のエンジニアが広告業界に 流れ込み、株取引の仕組みをインターネット広告に取 り入れたと言われている
  9. 9. #microad_CAMPHOR SSPとDSP RTBで誰がオークションを行うのか? SSP(Supply Side Platform): メディアの収益を最大化するプラットフォーム DSP(Demand Side Platform): 広告配信を最適化するプラットフォーム 9 SSP DSP 出来るだけ収益を 高くしたい 出来るだけ安く効 果的に配信したい メディア 広 告
  10. 10. 10 SSP DSP1 DSP2 DSP3 サイトA 広告枠 STEP1 サイトが表示されSSPにリクエストが送られる SSPは接続しているDSPにリクエストを送る RTBの処理フローのイメージ
  11. 11. 11 SSP DSP1 DSP2 DSP3 サイトA 転職広告 10円 50円 30円 車広告 家広告 広告枠 STEP2 DSPはそれぞれ入札する広告とその金額を決定する RTBの処理フローのイメージ
  12. 12. 12 SSP DSP1 DSP2 DSP3 サイトA 転職広告 10円 50円 30円 車広告 家広告 車広告 STEP3 DSPはSSPにレスポンスを返す SSPはその中から最も高い値段の付いた広告を選択し、 表示する RTBの処理フローのイメージ
  13. 13. #microad_CAMPHOR OpenRTB 13 SSP DSP1 DSP2 DSP3 - RTBにおける標準的な仕様 - SSP⇄DSPのプロトコル - オブジェクトの定義
  14. 14. オーディエンス 14
  15. 15. #microad_CAMPHOR オーディエンス ● 個人の識別性の無いデータ ● 位置情報、購買履歴などの個人の行動や状態 ● 代表的なものとしてCookie 15
  16. 16. #microad_CAMPHOR 1st/3rd party cookie 1st party: ユーザが訪問しているサイトのドメインから直接発行 3rd party: ユーザが訪問しているサイトのドメイン以外から発行 16 abcdefg.com 広告枠
  17. 17. #microad_CAMPHOR Cookie Sync 17 SSP Sync Table SSPとDSPという異なるシステム間でユーザを識別するために行わ れる RTBとは別のタイミングでクッキーシンクが行われている シンクされたIDをRTB時に使ってターゲティングなどに利用 DSP SSP DSP AAA XXX BBB YYY CCC ZZZ 広告主のサイト SSPでID=CCCのユーザ パラメータにIDを乗せ DSPにリダイレクト DSPでID=ZZZのユーザ
  18. 18. #microad_CAMPHOR Cookieの扱い ITP(Intelligent Tracking Prevention) Safariでクロスサイトトラッキングを制限。3rd party cookieは1日で削除。 SameSite ChromeにおけるCookieの扱いを改善し、サイトがどのようにCookieを使用して いるかの透明性を高める。 GDPR(General Data Protection Regulation) IPアドレスやCookieなどのオンライン上での識別子も個人情報として扱う。 18
  19. 19. 広告配信制御 19
  20. 20. #microad_CAMPHOR 広告配信制御 広告に設定された条件に従い配信を行う ● ターゲティング ● フリークエンシー ● リーセンシー ● アドベリフィケーション 20
  21. 21. #microad_CAMPHOR ターゲティング 位置情報ターゲティング デモグラフィックターゲティング リターゲティング etc... 21 広告主のサイト DSPの サーバ ユーザのアクセス履歴を蓄積 配信時に参照 リターゲティングの例 広告主のサイトを訪れたユーザを対象に広告配信
  22. 22. #microad_CAMPHOR フリークエンシー 広告とユーザの接触回数や接触頻度 フリークエンシーブースト: 表示回数が増えるにつれ入札額を徐々に低くする 22 同じユーザに同じ広告は 10回までにしたい KVS KEY VALUE AAA_1 5 AAA_2 0 BBB_1 10
  23. 23. #microad_CAMPHOR リーセンシー 広告とユーザの接触間隔や接触時間 リーセンシーブースト: 最終接触から一定時間内の場合を入札額を上げる 23 最終接触から1分以内の ユーザには多少高くても広 告を出したい KVS KEY VALUE AAA_1 1569832969 AAA_2 1569832969 BBB_1 1569832969
  24. 24. #microad_CAMPHOR アドベリフィケーション 広告主のブランドイメージを損なうようなメディアに広告を配信していないか アドベリフィケーションツールを使用 24
  25. 25. 広告配信計測 25
  26. 26. #microad_CAMPHOR Impression計測 1×1pxの透過画像(impビーコン)を広告に埋め込み広告表示時にリクエストを計測 サーバに送る 26 メディア 広告 Impression計測サーバ
  27. 27. 27 SSP DSP1 DSP2 DSP3 サイトA 転職広告 10円 50円 30円 車広告 家広告 車広告 DSP2の Impression 計測サーバimpビーコンからのリクエスト DSPが落札額を知るために SSPでマクロの置換を行う
  28. 28. #microad_CAMPHOR Viewable Impression計測 ● 広告が視認可能な範囲に入った場合のみ計測対象とする ● マイクロアドではIntersection Observer APIを利用した実装 ● 広告全体の何%以上表示された時だけ計測する、というような制御も可能 28
  29. 29. 29 メディア メディア 広告 Viewable Impression 計測サーバ 初期表示時 広告は全体の20% だけ表示 スクロールされ 全体の50%以上が1 秒以上表示された時 計測サーバにリクエ スト 下にスクロール 閾値が50%の場合
  30. 30. #microad_CAMPHOR Product Impression計測 ダイナミック広告においては商品ごとの計測も可能 30 AD1 AD2 AD3 AD4 AD5 AD6 右のボタン をクリック 最初に表示される広告 ボタンクリック後に表示される広告
  31. 31. #microad_CAMPHOR Click計測 DSPやSSPのクリック計測サーバをリダイレクトし最終的にLPに到達する (クリック計測ツールを間に挟む場合もある) ※マイクロアドではImpressionから一定時間を超えたクリックは不正クリックと判定 ※その他BOTなどによる不正なクリックの動作を検出するために別途機械学習を利用しています 31 広告 SSP DSP LP リダイレクト リダイレクト
  32. 32. #microad_CAMPHOR Conversion計測 ● 広告主のサイトのコンバージョンポイントにコンバージョン計測用のタグを 設置 ● 直接/ビュースルー/クリックスルーなど ○ コンバージョンとみなされる期間は異なる ○ 後でAudienceIdでクリックとコンバージョンポイントへアクセスしたログを付き合わせてコ ンバージョンを判断 32
  33. 33. マイクロアドにおけるRTBの実現 33 データパイプラインとDSPにおける広告選択
  34. 34. データパイプライン 34
  35. 35. #microad_CAMPHOR データパイプライン 6TB/dayのデータを処理 Bidリクエスト 150億件/day、Impression 30億件/day 35
  36. 36. 36 log log log App App App データパイプライン全体像
  37. 37. 37 log log log App App App データパイプライン全体像 ストリーム バッチ 信頼性と性能のトレードオフ at least once ユニークIDによる重複排除
  38. 38. 38 log log log App App App データパイプライン全体像 アプリケーションが ファイルに出力したログをリア ルタイムで処理する
  39. 39. 39 log log log App App App データパイプライン全体像 全てのログは1度kafkaに集約される リアルタイムで複雑な加工処理が必要な場 合はSparkStreamingを用いて加工し、 kafkaに入れ直す
  40. 40. 40 log log log App App App データパイプライン全体像 kafkaからhadoopもリアルタイムで データを処理 hadoopに蓄積されたログに対して digdagを用いてETL処理を行う raw orc リアルタイムに転送され たデータはrawテーブル バッチでrawからorcに変 換する際に重複排除
  41. 41. #microad_CAMPHOR ワークフロー管理 ワークフロー管理に求められる機能 ● スケジュール実行 ● タスク同士の依存を制御 ● 実行履歴の保持 マイクロアドではDigdagを使用 - ワークフローをコードで管理 - UIから再実行が可能 https://speakerdeck.com/tosametal/digdagdeetlchu-li-wosuru 41 digdagのワークフロー定義ファイル例
  42. 42. #microad_CAMPHOR ストリーム処理 ● 断片的なアクセスデータでなく連続的な行動を追跡したい ● その瞬間にCVする確率の高いユーザに配信したい ● アクセスデータをマイクロアドの持つデータと組み合わせて価値の高い情報 にした状態で配信に使用したい ● 2~5万QPS 42 トップ ページ 購入 ページ 商品 ページ 12:00:00 12:00:05 12:00:10 全体図のこの部分
  43. 43. DSPの広告選択 43
  44. 44. #microad_CAMPHOR DSPの広告選択 44 SSP DSP サイト 50円 車広告車広告 ここで何をしているの ? (1)リクエストが有効か判定...不正なフォーマット、不正なサイト、不正なユーザ (2)配信可能な広告を選択...広告の設定やSSPのリクエスト内容に応じた広告を入札候補にする (3)広告の値付け...候補となった広告全てに金額をつける (4)入札広告の選択...値段のついた広告のなかから最も高いものを選択
  45. 45. 45 デシリアライズ RTB リクエスト RTB レスポンス 不正リクエスト除 外 ●Bot ●不正Site/App など シリアライズ 最高値の広告を 選択 RequestAdapter GateKeeper Targeting ResponseAdapter Selector Filter 1回のRTBリクエストごとに以下の処理を行う 条件に一致しない 広告を除外 配信条件に合致 する広告を選択
  46. 46. #microad_CAMPHOR リアルタイムな広告の値付け 46 Hadoop 配信アプリ機械学習基盤 モデルRedis 特徴量Redis 配信アプリ(DSP)で定期的にモデルRedisを参照してモデルを更新 RTBリクエストごとに特徴量Redisから分散表現を取得しモデルに適用することで 確率を計算 確率をベースに諸々計算して入札額を算出する

×