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

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

tosametal
October 05, 2019

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

以下イベントの発表資料
https://camphor.connpass.com/event/146724/

tosametal

October 05, 2019
Tweet

More Decks by tosametal

Other Decks in Programming

Transcript

  1. マイクロアドの
    アドテクを支える技術
    2019/10/05 【マイクロアド】〜ネット広告を支える技術を知る〜
    #microad_CAMPHOR
    MicroAd, Inc.
    システム開発本部
    中野翔太

    View Slide

  2. #microad_CAMPHOR
    アジェンダ
    ● 基本の説明
    ● RTB
    ○ 概要
    ○ オーディエンス
    ○ 広告配信制御
    ○ 広告配信計測
    ● マイクロアドにおけるRTBの実現
    ○ データパイプライン
    ○ DSPの広告選択
    2

    View Slide

  3. 基本の説明
    3
    インターネット広告における

    View Slide

  4. #microad_CAMPHOR
    基本用語
    広告主: 広告を出すことで製品の認知度を上げたりブランドの形成を行いたい
    媒体主: 運営しているメディアに広告を掲載して利益を得たい
    インプレッション: 広告の表示のこと
    クリック: 広告のクリックのこと
    コンバージョン: 広告により成果を達成すること
    LP: Landing Pageのこと
    4
    サイトを表示すると広告のインプレッションが発生
    →ユーザはその広告をクリック
    →LPに遷移
    →LPから会員登録を行いコンバージョン

    View Slide

  5. #microad_CAMPHOR
    インターネット広告の種類
    ○○広告という言葉も様々
    ● リスティング広告
    ● 純広告
    ● ネイティブ広告
    ● 動画広告
    etc...
    5

    View Slide

  6. RTB
    6

    View Slide

  7. 概要
    7

    View Slide

  8. #microad_CAMPHOR
    RTBとは
    ● Real Time Biddingの略
    ● 広告枠が表示されるたびにオークションが行われ
    最も高い値段をつけられた広告が表示される
    8
    リーマンショックで金融系のエンジニアが広告業界に
    流れ込み、株取引の仕組みをインターネット広告に取
    り入れたと言われている

    View Slide

  9. #microad_CAMPHOR
    SSPとDSP
    RTBで誰がオークションを行うのか?
    SSP(Supply Side Platform): メディアの収益を最大化するプラットフォーム
    DSP(Demand Side Platform): 広告配信を最適化するプラットフォーム
    9
    SSP DSP
    出来るだけ収益を
    高くしたい
    出来るだけ安く効
    果的に配信したい
    メディア


    View Slide

  10. 10
    SSP
    DSP1
    DSP2
    DSP3
    サイトA
    広告枠
    STEP1
    サイトが表示されSSPにリクエストが送られる
    SSPは接続しているDSPにリクエストを送る
    RTBの処理フローのイメージ

    View Slide

  11. 11
    SSP
    DSP1
    DSP2
    DSP3
    サイトA
    転職広告
    10円
    50円
    30円
    車広告
    家広告
    広告枠
    STEP2
    DSPはそれぞれ入札する広告とその金額を決定する
    RTBの処理フローのイメージ

    View Slide

  12. 12
    SSP
    DSP1
    DSP2
    DSP3
    サイトA
    転職広告
    10円
    50円
    30円
    車広告
    家広告
    車広告
    STEP3
    DSPはSSPにレスポンスを返す
    SSPはその中から最も高い値段の付いた広告を選択し、
    表示する
    RTBの処理フローのイメージ

    View Slide

  13. #microad_CAMPHOR
    OpenRTB
    13
    SSP
    DSP1
    DSP2
    DSP3
    - RTBにおける標準的な仕様
    - SSP⇄DSPのプロトコル
    - オブジェクトの定義

    View Slide

  14. オーディエンス
    14

    View Slide

  15. #microad_CAMPHOR
    オーディエンス
    ● 個人の識別性の無いデータ
    ● 位置情報、購買履歴などの個人の行動や状態
    ● 代表的なものとしてCookie
    15

    View Slide

  16. #microad_CAMPHOR
    1st/3rd party cookie
    1st party: ユーザが訪問しているサイトのドメインから直接発行
    3rd party: ユーザが訪問しているサイトのドメイン以外から発行
    16
    abcdefg.com
    広告枠

    View Slide

  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のユーザ

    View Slide

  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

    View Slide

  19. 広告配信制御
    19

    View Slide

  20. #microad_CAMPHOR
    広告配信制御
    広告に設定された条件に従い配信を行う
    ● ターゲティング
    ● フリークエンシー
    ● リーセンシー
    ● アドベリフィケーション
    20

    View Slide

  21. #microad_CAMPHOR
    ターゲティング
    位置情報ターゲティング
    デモグラフィックターゲティング
    リターゲティング
    etc...
    21
    広告主のサイト
    DSPの
    サーバ
    ユーザのアクセス履歴を蓄積
    配信時に参照
    リターゲティングの例
    広告主のサイトを訪れたユーザを対象に広告配信

    View Slide

  22. #microad_CAMPHOR
    フリークエンシー
    広告とユーザの接触回数や接触頻度
    フリークエンシーブースト: 表示回数が増えるにつれ入札額を徐々に低くする
    22
    同じユーザに同じ広告は
    10回までにしたい
    KVS
    KEY VALUE
    AAA_1 5
    AAA_2 0
    BBB_1 10

    View Slide

  23. #microad_CAMPHOR
    リーセンシー
    広告とユーザの接触間隔や接触時間
    リーセンシーブースト: 最終接触から一定時間内の場合を入札額を上げる
    23
    最終接触から1分以内の
    ユーザには多少高くても広
    告を出したい
    KVS
    KEY VALUE
    AAA_1 1569832969
    AAA_2 1569832969
    BBB_1 1569832969

    View Slide

  24. #microad_CAMPHOR
    アドベリフィケーション
    広告主のブランドイメージを損なうようなメディアに広告を配信していないか
    アドベリフィケーションツールを使用
    24

    View Slide

  25. 広告配信計測
    25

    View Slide

  26. #microad_CAMPHOR
    Impression計測
    1×1pxの透過画像(impビーコン)を広告に埋め込み広告表示時にリクエストを計測
    サーバに送る
    26
    メディア
    広告
    Impression計測サーバ

    View Slide

  27. 27
    SSP
    DSP1
    DSP2
    DSP3
    サイトA
    転職広告
    10円
    50円
    30円
    車広告
    家広告
    車広告
    DSP2の
    Impression
    計測サーバ
    impビーコンからのリクエスト
    DSPが落札額を知るために
    SSPでマクロの置換を行う

    View Slide

  28. #microad_CAMPHOR
    Viewable Impression計測
    ● 広告が視認可能な範囲に入った場合のみ計測対象とする
    ● マイクロアドではIntersection Observer APIを利用した実装
    ● 広告全体の何%以上表示された時だけ計測する、というような制御も可能
    28

    View Slide

  29. 29
    メディア
    メディア
    広告
    Viewable Impression
    計測サーバ
    初期表示時
    広告は全体の20%
    だけ表示
    スクロールされ
    全体の50%以上が1
    秒以上表示された時
    計測サーバにリクエ
    スト
    下にスクロール
    閾値が50%の場合

    View Slide

  30. #microad_CAMPHOR
    Product Impression計測
    ダイナミック広告においては商品ごとの計測も可能
    30
    AD1 AD2 AD3 AD4 AD5 AD6
    右のボタン
    をクリック
    最初に表示される広告 ボタンクリック後に表示される広告

    View Slide

  31. #microad_CAMPHOR
    Click計測
    DSPやSSPのクリック計測サーバをリダイレクトし最終的にLPに到達する
    (クリック計測ツールを間に挟む場合もある)
    ※マイクロアドではImpressionから一定時間を超えたクリックは不正クリックと判定
    ※その他BOTなどによる不正なクリックの動作を検出するために別途機械学習を利用しています
    31
    広告
    SSP
    DSP
    LP
    リダイレクト
    リダイレクト

    View Slide

  32. #microad_CAMPHOR
    Conversion計測
    ● 広告主のサイトのコンバージョンポイントにコンバージョン計測用のタグを
    設置
    ● 直接/ビュースルー/クリックスルーなど
    ○ コンバージョンとみなされる期間は異なる
    ○ 後でAudienceIdでクリックとコンバージョンポイントへアクセスしたログを付き合わせてコ
    ンバージョンを判断
    32

    View Slide

  33. マイクロアドにおけるRTBの実現
    33
    データパイプラインとDSPにおける広告選択

    View Slide

  34. データパイプライン
    34

    View Slide

  35. #microad_CAMPHOR
    データパイプライン
    6TB/dayのデータを処理
    Bidリクエスト 150億件/day、Impression 30億件/day
    35

    View Slide

  36. 36
    log
    log
    log
    App
    App
    App
    データパイプライン全体像

    View Slide

  37. 37
    log
    log
    log
    App
    App
    App
    データパイプライン全体像
    ストリーム
    バッチ
    信頼性と性能のトレードオフ
    at least once
    ユニークIDによる重複排除

    View Slide

  38. 38
    log
    log
    log
    App
    App
    App
    データパイプライン全体像
    アプリケーションが
    ファイルに出力したログをリア
    ルタイムで処理する

    View Slide

  39. 39
    log
    log
    log
    App
    App
    App
    データパイプライン全体像
    全てのログは1度kafkaに集約される
    リアルタイムで複雑な加工処理が必要な場
    合はSparkStreamingを用いて加工し、
    kafkaに入れ直す

    View Slide

  40. 40
    log
    log
    log
    App
    App
    App
    データパイプライン全体像
    kafkaからhadoopもリアルタイムで
    データを処理
    hadoopに蓄積されたログに対して
    digdagを用いてETL処理を行う
    raw orc
    リアルタイムに転送され
    たデータはrawテーブル
    バッチでrawからorcに変
    換する際に重複排除

    View Slide

  41. #microad_CAMPHOR
    ワークフロー管理
    ワークフロー管理に求められる機能
    ● スケジュール実行
    ● タスク同士の依存を制御
    ● 実行履歴の保持
    マイクロアドではDigdagを使用
    - ワークフローをコードで管理
    - UIから再実行が可能
    https://speakerdeck.com/tosametal/digdagdeetlchu-li-wosuru
    41
    digdagのワークフロー定義ファイル例

    View Slide

  42. #microad_CAMPHOR
    ストリーム処理
    ● 断片的なアクセスデータでなく連続的な行動を追跡したい
    ● その瞬間にCVする確率の高いユーザに配信したい
    ● アクセスデータをマイクロアドの持つデータと組み合わせて価値の高い情報
    にした状態で配信に使用したい
    ● 2~5万QPS
    42
    トップ
    ページ
    購入
    ページ
    商品
    ページ
    12:00:00 12:00:05 12:00:10
    全体図のこの部分

    View Slide

  43. DSPの広告選択
    43

    View Slide

  44. #microad_CAMPHOR
    DSPの広告選択
    44
    SSP DSP
    サイト
    50円
    車広告
    車広告
    ここで何をしているの ?
    (1)リクエストが有効か判定...不正なフォーマット、不正なサイト、不正なユーザ
    (2)配信可能な広告を選択...広告の設定やSSPのリクエスト内容に応じた広告を入札候補にする
    (3)広告の値付け...候補となった広告全てに金額をつける
    (4)入札広告の選択...値段のついた広告のなかから最も高いものを選択

    View Slide

  45. 45
    デシリアライズ
    RTB
    リクエスト
    RTB
    レスポンス
    不正リクエスト除

    ●Bot
    ●不正Site/App
    など
    シリアライズ 最高値の広告を
    選択
    RequestAdapter GateKeeper Targeting
    ResponseAdapter Selector Filter
    1回のRTBリクエストごとに以下の処理を行う
    条件に一致しない
    広告を除外
    配信条件に合致
    する広告を選択

    View Slide

  46. #microad_CAMPHOR
    リアルタイムな広告の値付け
    46
    Hadoop
    配信アプリ
    機械学習基盤
    モデルRedis
    特徴量Redis
    配信アプリ(DSP)で定期的にモデルRedisを参照してモデルを更新
    RTBリクエストごとに特徴量Redisから分散表現を取得しモデルに適用することで
    確率を計算
    確率をベースに諸々計算して入札額を算出する

    View Slide