アーキテクチャ

入札およびオークション サービスのオークション アーキテクチャについて学習する

概要

入札とオークション(B&A)サービスは、高信頼実行環境(TEE)で実行され、Protected Audience(PA)オークションを促進する広告の購入者と販売者向けのサービス セットです。このページでは、PA オークションで B&A を使用できるさまざまなオークション構成について説明します。

定義

用語 説明
Protected Audience オークション クロスサイト データを使用する広告オークション
コンテキスト オークション クロスサイト データが関与しない広告オークション。このオークションは、既存のリアルタイム ビッダー(RTB)オークション パスに沿って行われます。
統合オークション リクエスト 販売者の JavaScript コードによってブラウザから送信されるリクエスト。Protected Audience オークションとコンテキスト オークションの両方のペイロードが含まれます。
販売者広告サービス(SAS) ブラウザからの統合オークション リクエストを処理するサービス。これは、販売者の既存の RTB 広告サーバーである場合があります。SAS は、コンテキストに基づくオークションと Protected Audience オークションの両方をオーケストレートします。
購入者の広告サービス コンテキストに基づくオークションの入札単価の送信を担当するサービス。購入者の既存の ORTB 広告サーバーを使用できます。

購入者と販売者向けのサービス

B&A サービスは、購入者と販売者向けの次の 4 つのサービスで構成されています。

  • 購入者は、入札サービス購入者フロントエンド(BFE)サービスを使用できます。
  • 販売者は、オークション サービス販売者フロントエンド(SFE)サービスを使用できます。
参加者 サービス 説明
購入者 購入者フロントエンド(BFE)サービス このサービスは、販売者の SFE からの GetBids リクエストを処理します。ペイロードの復号、K/V シグナルの取得、入札サービスGenerateBids の呼び出しを行います。
入札サービス サービスは、BFE からの GenerateBids リクエストを処理します。購入者の入札ロジックを実行し、入札単価を生成します。
販売者 販売者フロントエンド(SFE)サービス このサービスは、販売者の広告サービスからの SelectAd リクエストを処理します。ペイロードの復号、BFEGetBids オペレーションの呼び出し、K/V シグナルの取得、オークション サービスScoreAd オペレーションの呼び出し、暗号化された B&A オークション結果の SAS への返信を行います。

サービスがサーバー オーケストレートされたマルチ販売者オークションのトップレベルの販売者のスタックに含まれている場合、サービスは SAS からの GetComponentAuctionCiphertexts リクエストも処理します。

オークション サービス このサービスは、SFE からの ScoreAd リクエストを処理します。販売者のスコアリング ロジックを実行し、入札単価の優先度スコアを提供する役割を担います。

ウェブ向けの PA B&A オークションのアーキテクチャ

次の図は、1 人の販売者と 1 人の購入者がいる B&A サービスによる基本的な Protected Audience オークションを示しています。赤い太い枠線のボックスは、TEE で実行されているサービスを表します。

クライアントサイドの JavaScript コードが、統一オークション リクエストを SSP に送信します。SAS が SFE にリクエストを送信し、SFE が BFE に入札リクエストを送信します。

フルサイズの図

  1. パブリッシャー ページの SSP の JavaScript コードは、navigator.getInterestGroupAdAuctionData() を呼び出して暗号化された B&A 広告オークション データを生成します。
    • この暗号化されたペイロードには購入者のデータが含まれており、TEE 内の SFE 内でのみ復号できます。
  2. SSP JavaScript コードが、統一オークション リクエストを販売者の広告サービスに送信します。
    • 統合オークション リクエストには、ORTB コンテキスト オークションのプレーンテキスト ペイロードと、暗号化された B&A オークション ペイロードの両方が含まれます。
    • 販売者の広告サービスは既存の広告サーバーであり、TEE で実行されません。
  3. 販売者の広告サービスは DSP の RTB サービスを呼び出して、コンテキスト オークションの入札単価と、その後の PA オークションに渡す購入者シグナルをリクエストします。
    • これは、購入者が PA オークションへの参加の意向を示すステップです。
  4. コンテキスト オークションが完了すると、SAS は SelectAd リクエストを SFE サービスに送信します。
    • コンテキスト オークションの落札入札と購入者シグナルが SelectAd リクエスト ペイロードに追加されます。
  5. SSP の SFE サービスは、GetBids リクエストを使用して DSP の BFE サービスを呼び出します。
  6. DSP の BFE は、GenerateBids リクエストを使用して入札サービスを呼び出します。
  7. 入札が SFE に受信されると、オークション サービスに ScoreAd 呼び出しが実行されます。
    • 最も高い好ましさスコアを持つ入札単価が SAS に返され、ページ上の JavaScript コードに転送されます。
  8. 暗号化された B&A オークションの結果を navigator.runAdAuction() 呼び出しに渡すことで、ブラウザでオークションが終了します。

オークションの設定

B&A サービスを使用する Protected Audience オークションは、次の方法で設定できます。

  • B&A 購入者を含む単一販売者のオークション
  • オンデバイス購入者と B&A 購入者による混合モード オークション
  • デバイス オーケストレーションまたはサーバー オーケストレーションが可能なマルチ販売者オークション

参加者

このガイドでは、各オークション構成を説明するために、次の参加者を使用します。

参加者 説明
DSP-A デバイス上の購入者
DSP-B デバイス上の購入者
DSP-X 企業買収の購入者
DSP-Y 買収・合併の購入者
SSP-TOP トップレベルの販売者
SSP-OD デバイス上の販売者のみ
SSP-BA B&A のみの販売者
SSP-MIX 混合モードの販売者

次の 4 つの DSP があります。

  • DSP-ADSP-B はオンデバイス オークションにのみ参加
  • DSP-XDSP-Y は、オンデバイス オークションと B&A オークションの両方に参加します。

SSP は 4 つあり、各販売者は異なるオークション構成を実行します。

  • SSP-OD はオンデバイス専用オークションを実行します。
  • SSP-BA は B&A のみのオークションを実施します
  • SSP-MIX は混合モードのオークションを実行します。
  • SSP-TOP はマルチセラー オークションを実施します。
    • SSP-OD/BA/MIX は、SSP-TOP の複数販売者オークションのコンポーネント販売者として参加します。

単一販売者の B&A オークション

単一販売者設定では、1 人の販売者がオークションを実施し、複数の購入者が参加します。販売者が B&A オークションを実施している場合、購入者がオークションに入札するには、B&A サービスの購入者スタックを実行している必要があります。購入者と販売者は同じクラウド プロバイダを使用する必要はありません。

1 つの SFE が複数の BFE と通信して入札を受け取る単一販売者アーキテクチャ

フルサイズの図

上記の設定では、SSP-BA が B&A オークションを実行し、DSP-XDSP-Y が B&A サービスの購入者スタックを使用して参加します。販売者の広告サービスは、まず DSP-XDSP-Y のコンテキスト オークションを実行し、次に SelectAd リクエストを販売者の SFE サービスに送信して Protected Audience オークションを実行します。コンテキスト オークションの落札入札単価と各購入者のシグナルが SelectAd 呼び出しに渡されます。次に、SFE サービスは DSP-XDSP-Y の BFE に GetBids リクエストを送信します。BFE は入札サービスを呼び出して入札を生成します。

暗号化された B&A オークションの結果がクライアントに返され、runAdAuction() 呼び出しに渡されます。単一販売者オークションの構成は次のようになります。

await navigator.runAdAuction({
  seller: 'https://ssp-ba.example',
  requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
  serverResponse: Uint8Array(560) [193, 120, 4, ] // Encrypted B&A auction result
})

requestId 値はクライアントの getInterestGroupAdAuctionData() 呼び出しから取得され、serverResponse データはサーバーサイドの B&A オークションから取得されます。

混合モード オークション

混合モードの構成では、購入者はデバイス上または B&A から販売者のオークションに参加できます。青い矢印はオンデバイス オークション パス、赤い矢印は B&A オークション パスを表しています。

購入者がデバイス上または B&A から入札を送信できる混合モードの販売者アーキテクチャ

フルサイズの図

この設定では、DSP-ADSP-B はデバイス上で入札を送信する購入者で、DSP-XDSP-Y は B&A を使用して入札を送信する購入者です。オンデバイス購入者はブラウザでオンデバイス PA オークションに参加します。B&A 購入者は、単一販売者オークションのセクションで説明されている B&A オークション設定に参加します。

コンテキスト オークションの落札入札単価と購入者シグナルを収集するために、まずすべての購入者に対してコンテキスト オークションが実行されます。その後、B&A オークションが実行され、コンテキスト オークションからの購入者シグナルが SFE への SelectAd リクエストに渡されます。SFE から返された暗号化された B&A オークションの結果がブラウザに転送されます。B&A オークションの後、その結果はオンデバイスの購入者が参加するオンデバイス オークションにフィードされます。

オークションのオンデバイス部分の混合モードの単一販売者オークションの構成は次のようになります。

await navigator.runAdAuction({
  seller: 'https://ssp-mix.example',
  decisionLogicURL: 'https://ssp-ba.example/score-ad.js',
  componentAuctions: [
    // B&A auction
    {
      seller: 'https://ssp-mix.example',
      requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
      serverResponse: Uint8Array(560) [133, 20, 14, ]
    },
    // On-device auction
    {
      seller: 'https://ssp-mix.example',
      interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
      decisionLogicURL: 'https://ssp-mix.example/on-device-score-ad.js',
    }
  ]
})

オンデバイス オークションと B&A オークションの並列化

並列化を行わない場合、オークションは順番に実行されます。まずコンテキスト オークションが実行され、次に B&A オークションが実行され、最後にデバイス上のオークションが実行されます。並列化を実装すると、コンテキスト オークションが最初に実行されますが、その結果とシグナルはクライアントにストリーミングされ、B&A オークションが終了する前にオンデバイス オークションを並行して開始します。

コンテキスト オークションの入札単価とシグナル、SelectAd の結果がブラウザの JavaScript コードにストリーミングされる仕組みを示す図

フルサイズの図

クライアントの JavaScript コードが統合オークション リクエストを SAS に送信し、SAS がコンテキスト オークションと PA B&A オークションを開始します。SAS が購入者の RTB サーバーからレスポンスを受信すると、購入者は、すべての入札が受信されたら、コンテキスト オークションの落札者とともに、オンデバイス オークションのシグナルをブラウザにストリーミングできます。ストリーミングされた購入者シグナルは、デバイス上で入札単価を生成するために使用され、コンテキスト オークションの落札者は、入札単価のスコアリング時に入札単価の下限として使用されます。

SAS では、販売者はコンテキスト オークション データをブラウザにストリーミングするときに、Ad-Auction-Result-Nonce レスポンス ヘッダーに設定される UUID ノンスを生成します。同じノンスが B&A オークションの SFE への SelectAd 呼び出しで使用され、そのノンスは SFE から返された SelectAd レスポンスに含まれます。クライアントサイド オークションのフェーズで、ブラウザは Ad-Auction-Result-Nonce レスポンス ヘッダーのノンスが、暗号化されたオークション結果ペイロードのノンスと一致することを検証します。

混合モードの並列化の詳細については、説明をご覧ください。

マルチセラー オークション

B&A で PA マルチセラー オークションを実施するには、次の 2 つの方法があります。

  1. デバイスがオーケストレートするオークション。各コンポーネント販売者の広告サービスへの呼び出しはブラウザから行われます。
  2. サーバー オーケストレート型オークション: 各コンポーネント販売者の広告サービスへの呼び出しが、最上位販売者の広告サービスから発信されます。

デバイスがオーケストレートするマルチセラー オークション

デバイスでオーケストレートされた複数販売者のオークションでは、各コンポーネント販売者は任意の構成でオークションを自由に実施できます。オンデバイス販売者、B&A 販売者、混合モード販売者はすべて、トップレベル オークションに参加できます。

異なるオークション構成を実行している複数の販売者が、オークションの結果をトップレベルの販売者に送信する方法を表す図

フルサイズの図

この設定では、トップレベル販売者の SSP-TOP が、SSP-ODSSP-BASSP-MIX が参加する複数販売者オークションを実施します。

  • SSP-OD は、デバイス上のみの PA オークションを実施し、デバイス上のコンポーネント オークション構成をトップレベルの販売者に送信します。
  • B&A オークションを実施する SSP-BA は、販売者の広告サービスに統合オークション リクエストを送信し、独自のコンテキスト オークションと B&A オークションを実施します。結果は最上位の販売者に送信されます。
  • 混合モード オークションを実行する SSP-MIX は、まずサーバー上で B&A オークションを実行し、次に B&A オークションの結果とオンデバイス オークションの構成の両方を送信します。

最上位の販売者は、各販売者からコンポーネント オークション構成を収集し、次のようなオークション構成を構築します。

await navigator.runAdAuction({
  seller: 'https://ssp-top.example',
  decisionLogicURL: 'https://ssp-top.example/score-ad.js',
  componentAuctions: [
    // SSP-BA's B&A-only auction
    {
      seller: 'https://ssp-ba.example',
      requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
      serverResponse: Uint8Array(560) [193, 120, 4, ] // Encrypted B&A auction result
    },
    // SSP-MIX's B&A auction of mixed-mode
    {
      seller: 'https://ssp-mix.example',
      requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
      serverResponse: Uint8Array(560) [133, 20, 4, ] // Encrypted B&A auction result
    }.
    // SSP-MIX's on-device auction of mixed-mode
    {
      seller: 'https://ssp-mix.example',
      interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
      decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
    }
    // SSP-OD's on-device auction
    {
      seller: 'https://ssp-od.example',
      interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
      decisionLogicURL: 'https://ssp-od.example/score-ad.js',
    }
  ]
})

サーバー オーケストレーションによるマルチセラー オークション

サーバー オーケストレート型の複数販売者オークションでは、コンポーネント販売者の広告サービスへの呼び出しは、最上位の販売者の広告サービスから行われます。この設定では、コンポーネント販売者はオンデバイス オークションや混合モード オークションを実施できません。すべての販売者は B&A を使用し、すべての購入者は B&A を使用して入札する必要があります。

最上位の SSP が、販売者の広告サービスに統一オークション リクエストを送信します。販売者の広告サービスは SFE を呼び出して GetComponentAuctionCipherTexts オペレーションを実行します。返された暗号テキストは、各コンポーネント販売者の広告サービスに送信され、独自の B&A オークションが実施されます。

フルサイズの図

この図では、SSP-TOP がサーバー オーケストレート型の複数販売者オークションを実行し、SSP-BA-XSSP-BA-Y が参加しています。

すべての参加者のコンテキスト オークションと PA オークションのペイロードを含む単一の統一オークション リクエストが、ブラウザから最上位の販売者の広告サービスに送信されます。その後、SAS はペイロードとともに SFE に GetComponentAuctionCiphertexts を呼び出します。SFE はペイロードを復号し、各コンポーネント セラーごとにペイロードを分離し、再暗号化されたペイロードを最上位セラーの SAS に返します。

GetComponentAuctionCiphertexts リクエストとレスポンスの proto 定義は次のとおりです。

// Request sent from the top-level seller's ad service to SFE
message GetComponentAuctionCiphertextsRequest {
  bytes protected_auction_ciphertext = 1; // Generated in the browser
  repeated string component_sellers = 2; // The list of all component sellers
}

// Response returned from SFE to the top-level seller's ad service
message GetComponentAuctionCiphertextsResponse {
  // A map of component sellers and their re-encrypted payloads
  map<string, bytes> seller_component_ciphertexts = 1;
}

各コンポーネント販売者のペイロードを使用して、最上位販売者の SAS がコンポーネント販売者の SAS を呼び出し、各コンポーネント SAS がコンポーネント B&A オークションを実行します。その後、コンポーネント オークションの結果が最上位の販売者の SFE に返され、コンポーネント オークションの入札単価が最上位の販売者のオークション サービスによってスコア付けされます。最も高い優先度スコアを持つ入札が SFE に返され、その暗号化されたペイロードが SAS に送信されてクライアントに返されます。ブラウザでは、最上位の販売者が navigator.runAdAuction() を呼び出して暗号化されたサーバー オークション結果ペイロードを指定することで、オークションを終了します。

次のステップ

このガイドを読んだら、次のステップに進みます。

その他の情報

ご不明な点がある場合