Architecture

Découvrez l'architecture d'enchères des services d'enchères et de mise aux enchères.

Présentation

Les services d'enchères et de mise aux enchères (B&A) fournissent un ensemble de services pour les acheteurs et les vendeurs d'annonces qui s'exécutent dans un environnement d'exécution sécurisé (TEE) afin de faciliter les enchères Protected Audience (PA). Cette page décrit les différentes configurations d'enchères que B&A peut utiliser dans une enchère PA.

Définitions

Terme Description
Enchères Protected Audience Enchères publicitaires impliquant des données multisites
Enchères contextuelles Enchères publicitaires n'impliquant pas de données multisites. Cette mise aux enchères suit le processus existant des enchères en temps réel (RTB).
Demande d'enchères unifiées Requête envoyée par le code JavaScript du marchand depuis le navigateur, qui inclut la charge utile pour l'enchère Protected Audience et l'enchère contextuelle.
Seller Ad Service (SAS) Service chargé de traiter la demande d'enchères unifiées du navigateur. Il peut s'agir du serveur publicitaire RTB existant d'un vendeur. Le SAS est responsable de l'orchestration des enchères contextuelles et Protected Audience.
Service publicitaire pour les acheteurs Service chargé d'envoyer une enchère pour une mise aux enchères contextuelle. Il peut s'agir de l'ad server ORTB existant d'un acheteur.

Services pour les acheteurs et les vendeurs

Les services d'enchères et de mise aux enchères se composent de quatre services pour les acheteurs et les vendeurs :

  • Pour les acheteurs, les services d'enchères et Buyer Front-End (BFE) sont disponibles.
  • Pour les vendeurs, les services d'enchères et Seller Front-End (SFE) sont disponibles.
Participant Service Description
Revendeur Service Buyer Front-End (BFE) Le service gère la requête GetBids d'un SFE de vendeur. Il est chargé de déchiffrer la charge utile, d'extraire les signaux K/V et d'appeler GenerateBids du service d'enchères.
Service d'enchères Le service gère la requête GenerateBids de BFE. Il est chargé d'exécuter la logique d'enchères de l'acheteur et de générer une enchère.
Vendeur Service Seller Front-End (SFE) Le service gère la requête SelectAd du service publicitaire du vendeur. Il est chargé de déchiffrer la charge utile, d'appeler l'opération GetBids de BFE, de récupérer les signaux K/V, d'appeler l'opération ScoreAd du service d'enchères, puis de renvoyer le résultat chiffré des enchères B&A à SAS.

Lorsque le service fait partie de la pile du vendeur de premier niveau dans une enchère multiseller orchestrée par le serveur, il gère également la requête GetComponentAuctionCiphertexts provenant de SAS.

Service d'enchères Le service gère la requête ScoreAd de SFE. Il est chargé d'exécuter la logique d'évaluation du vendeur et de fournir le score de désirabilité d'une enchère.

Architecture d'une enchère PA B&A pour le Web

Le schéma suivant décrit les enchères Protected Audience de base avec les services B&A, avec un seul vendeur et un seul acheteur. Les cadres rouges épais représentent les services exécutés dans un TEE :

Le code JavaScript côté client envoie la demande de mise aux enchères unifiée à la SSP. Le SAS envoie une demande au SFE, qui l'envoie au BFE pour une enchère.
(Diagramme en taille réelle)
  1. Le code JavaScript de la SSP sur la page de l'éditeur génère les données chiffrées des enchères publicitaires B&A en appelant navigator.getInterestGroupAdAuctionData().
    • Cette charge utile chiffrée contient les données de l'acheteur et ne peut être déchiffrée que dans un SFE au sein d'un TEE.
  2. Le code JavaScript de la SSP envoie une demande de mise aux enchères unifiée au service d'annonces du vendeur.
    • Une demande d'enchères unifiée contient à la fois la charge utile d'enchères contextuelles ORTB en texte brut et la charge utile d'enchères B&A chiffrée.
    • Le service publicitaire du vendeur est votre serveur publicitaire existant et ne s'exécute pas dans un TEE.
  3. Le service d'annonces du vendeur appelle le service RTB de la DSP pour demander l'enchère de l'enchère contextuelle et tous les signaux de l'acheteur à transmettre à l'enchère PA suivante.
    • Il peut s'agir d'une étape où un acheteur signale son intention de participer à l'enchère PA.
  4. Une fois l'enchère contextuelle terminée, SAS envoie la requête SelectAd au service SFE.
    • Les signaux de l'acheteur et de l'enchère gagnante contextuelle sont ajoutés à la charge utile de la demande SelectAd.
  5. Le service SFE de la SSP appelle le service BFE de la DSP avec la requête GetBids.
  6. Le BFE du DSP appelle le service d'enchères avec la requête GenerateBids.
  7. Une fois l'enchère reçue par SFE, l'appel ScoreAd est effectué au service d'enchères.
    • L'enchère ayant le score de désirabilité le plus élevé est renvoyée à SAS, puis transmise au code JavaScript sur la page.
  8. La mise aux enchères se termine dans le navigateur en transmettant le résultat chiffré des enchères et mises aux enchères à l'appel navigator.runAdAuction().

Configurations d'enchères

Vous pouvez configurer une enchère Protected Audience avec des services d'enchères et de mise aux enchères de différentes manières :

  • Enchères à un seul vendeur avec des acheteurs B&A
  • Enchères en mode mixte avec des acheteurs sur l'appareil et des acheteurs B&A
  • Enchères multiseller pouvant être orchestrées par l'appareil ou le serveur

Participants

Pour décrire chaque configuration d'enchères, les participants suivants sont utilisés dans ce guide :

Participant Description
DSP-A Acheteur sur l'appareil
DSP-B Acheteur sur l'appareil
DSP-X Acheteur B&A
DSP-Y Acheteur B&A
SSP-TOP Vendeur de premier niveau
SSP-OD Vendeur sur l'appareil uniquement
SSP-BA Vendeur B&A uniquement
SSP-MIX Vendeur multimodal

Voici les quatre DSP :

  • DSP-A et DSP-B ne participent qu'aux enchères sur l'appareil
  • DSP-X et DSP-Y participent aux enchères sur l'appareil et aux enchères et mises aux enchères.

Il existe quatre SSP, et chaque vendeur exécute une configuration d'enchères différente :

  • SSP-OD exécute une enchère uniquement sur l'appareil
  • SSP-BA organise une enchère axée uniquement sur les achats et les enchères
  • SSP-MIX organise une vente aux enchères en mode mixte.
  • SSP-TOP exécute une enchère multivendeur :
    • SSP-OD/BA/MIX participer en tant que vendeurs de composants à l'enchère multivendeur de SSP-TOP

Enchères B&A à un seul vendeur

Dans une configuration à un seul vendeur, un vendeur organise une mise aux enchères à laquelle participent plusieurs acheteurs. Si le vendeur organise une enchère et une mise aux enchères, les acheteurs doivent exécuter la pile d'acheteur des services d'enchères et de mise aux enchères pour soumettre une enchère. Les acheteurs et les vendeurs n'ont pas besoin d'utiliser le même fournisseur de services cloud.

Architecture à un seul vendeur dans laquelle un SFE communique avec plusieurs BFE pour recevoir des enchères.
(Diagramme en taille réelle)

Dans la configuration précédente, SSP-BA exécute une enchère B&A à laquelle DSP-X et DSP-Y participent à l'aide de la pile d'acheteur des services B&A. Le service d'annonces du vendeur exécute d'abord une enchère contextuelle pour DSP-X et DSP-Y, puis une enchère Protected Audience en envoyant la requête SelectAd au service SFE du vendeur. L'enchère gagnante contextuelle et les signaux pour chaque acheteur sont transmis à l'appel SelectAd. Le service SFE envoie ensuite des requêtes GetBids aux BFE de DSP-X et DSP-Y, qui appellent leur service d'enchères pour générer une enchère.

Le résultat chiffré de l'enchère B&A est renvoyé au client et transmis à l'appel runAdAuction(). Voici à quoi ressemble une configuration d'enchères à un seul vendeur :

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
})

La valeur requestId provient de l'appel getInterestGroupAdAuctionData() sur le client, et les données serverResponse proviennent des enchères et des mises aux enchères côté serveur.

Enchères en mode mixte

Dans la configuration en mode mixte, les acheteurs peuvent participer aux enchères du vendeur depuis l'appareil ou depuis B&A. Les flèches bleues représentent le chemin d'enchères sur l'appareil, et les flèches rouges représentent le chemin d'enchères B&A :

Architecture de vendeur en mode mixte dans laquelle les acheteurs peuvent envoyer leurs enchères depuis l'appareil ou les enchères et les mises aux enchères.
(Diagramme en taille réelle)

Dans cette configuration, DSP-A et DSP-B sont des acheteurs qui envoient leurs enchères sur l'appareil, tandis que DSP-X et DSP-Y sont des acheteurs qui envoient leurs enchères à l'aide de B&A. Les acheteurs sur l'appareil participent à une enchère PA sur l'appareil dans le navigateur, et les acheteurs B&A participent à la configuration des enchères B&A décrite dans la section Enchères à un seul vendeur.

L'enchère contextuelle est exécutée en premier pour tous les acheteurs afin de collecter l'enchère gagnante et les signaux des acheteurs. L'enchère B&A est ensuite exécutée, et les signaux d'acheteur de l'enchère contextuelle sont transmis à la requête SelectAd envoyée à SFE. Le résultat chiffré des enchères sur les produits et les marques renvoyé par SFE est transmis au navigateur. Après l'enchère B&A, son résultat est transmis à l'enchère sur l'appareil à laquelle participent les acheteurs sur l'appareil.

Une configuration d'enchères multimodes à un seul vendeur pour la partie sur l'appareil des enchères ressemble à ce qui suit :

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',
    }
  ]
})

Parallélisation des enchères sur l'appareil et des services d'enchères et de mise aux enchères

Sans parallélisation, les enchères sont exécutées de manière séquentielle : les enchères contextuelles sont exécutées, puis les enchères B&A, et enfin les enchères sur l'appareil. Avec la parallélisation implémentée, les enchères contextuelles sont à nouveau exécutées en premier, mais leur résultat et leurs signaux sont renvoyés au client pour démarrer les enchères sur l'appareil en parallèle avant la fin des enchères et des mises aux enchères.

Diagramme décrivant comment l'enchère et les signaux d'enchères contextuelles, ainsi que le résultat SelectAd, sont renvoyés au code JavaScript du navigateur
(Diagramme en taille réelle)

Le code JavaScript du client envoie la demande d'enchères unifiées à SAS, qui lance les enchères contextuelles et les enchères PA B&A. Lorsque SAS reçoit une réponse du serveur RTB d'un acheteur, les signaux d'enchères sur l'appareil peuvent être renvoyés au navigateur, ainsi que le gagnant des enchères contextuelles une fois toutes les enchères reçues. Les signaux d'acheteur diffusés sont utilisés pour générer une enchère sur l'appareil, et le gagnant de l'enchère contextuelle est utilisé comme plancher d'enchères lors de l'évaluation des enchères.

Dans SAS, le vendeur génère un UUID UUID qui est défini dans l'en-tête de réponse Ad-Auction-Result-Nonce lors de la diffusion en streaming des données d'enchères contextuelles au navigateur. Le même nonce est utilisé dans l'appel SelectAd à SFE pour l'enchère B&A. Ce nonce est inclus dans la réponse SelectAd renvoyée par SFE. Lors de la phase d'enchères côté client, le navigateur vérifie que le nonce de l'en-tête de réponse Ad-Auction-Result-Nonce correspond à celui de la charge utile chiffrée du résultat de l'enchère.

Pour en savoir plus sur la parallélisation en mode mixte, consultez l'explication.

Enchères multivendeurs

Il existe deux façons d'exécuter une enchère multiseller PA avec B&A :

  1. Enchères orchestrées par l'appareil, où l'appel au service d'annonces de chaque vendeur de composants provient du navigateur
  2. Enchères orchestrées par le serveur, où l'appel au service d'annonces de chaque vendeur de composants provient du service d'annonces du vendeur de premier niveau

Enchères multivendeurs orchestrées par l'appareil

Dans une enchère multiseller orchestrée par l'appareil, chaque vendeur de composants est libre d'exécuter son enchère dans la configuration de son choix. Les vendeurs sur appareil, les vendeurs axés sur la notoriété et l'acquisition, et les vendeurs en mode mixte peuvent tous participer aux enchères de premier niveau.

Diagramme décrivant comment plusieurs vendeurs exécutant différentes configurations d'enchères peuvent envoyer les résultats de leurs enchères au vendeur de premier niveau.
(Diagramme en taille réelle)
Dans cette configuration, `SSP-TOP`, qui est le vendeur de premier niveau, organise une enchère multiseller à laquelle participent `SSP-OD`, `SSP-BA` et `SSP-MIX` : * `SSP-OD`, qui organise une enchère PA sur l'appareil uniquement, envoie sa configuration d'enchère de composant sur l'appareil au vendeur de premier niveau. * `SSP-BA`, qui organise une enchère B&A, envoie une demande d'enchère unifiée à son service d'annonces de vendeur et exécute ses propres enchères contextuelles et B&A. Les résultats sont envoyés au vendeur de premier niveau. * `SSP-MIX`, qui exécute une enchère en mode mixte, exécute d'abord l'enchère B&A sur le serveur, puis envoie à la fois le résultat de l'enchère B&A et la configuration de l'enchère sur l'appareil. Le vendeur de premier niveau collecte les configurations d'enchères de composants auprès de chaque vendeur et crée une configuration d'enchères qui ressemble à ce qui suit : ```js 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', } ] }) ``` ### Enchères multiseller orchestrées par le serveur Dans une enchère multiseller orchestrée par le serveur, les appels aux services d'annonces du vendeur de composants sont effectués à partir du service d'annonces du vendeur de premier niveau. Dans cette configuration, les vendeurs de composants ne peuvent pas exécuter d'enchères sur l'appareil ni en mode mixte. Tous les vendeurs doivent utiliser B&A et tous les acheteurs doivent envoyer leurs enchères à l'aide de B&A.
La SSP de premier niveau envoie une demande de mise aux enchères unifiée à son service publicitaire du vendeur. Le service d'annonces du marchand appelle le SFE pour exécuter l'opération GetComponentAuctionCipherTexts. Les textes chiffrés renvoyés sont ensuite envoyés au service d'annonces de chaque vendeur de composants, qui organise ses propres enchères B&A.
(Diagramme en taille réelle)

Dans ce diagramme, SSP-TOP exécute une enchère multivendeur orchestrée par le serveur à laquelle participent SSP-BA-X et SSP-BA-Y.

Une seule demande d'enchères unifiée contenant la charge utile des enchères contextuelles et des enchères PA pour tous les participants est envoyée du navigateur au service d'annonces du vendeur de premier niveau. Ensuite, SAS effectue un appel GetComponentAuctionCiphertexts à SFE avec la charge utile. SFE déchiffrera la charge utile, la séparera pour chaque vendeur de composants et renverra les charges utiles rechiffrées au SAS du vendeur de premier niveau.

Voici les définitions du fichier .proto pour la requête et la réponse GetComponentAuctionCiphertexts :

// 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;
}

Avec la charge utile de chaque vendeur de composants, le SAS du vendeur de premier niveau appelle le SAS des vendeurs de composants, et chaque SAS de composants exécute sa mise aux enchères de composants B&A. Les résultats des enchères de composants sont ensuite renvoyés à la SFE du vendeur de premier niveau, et les enchères de composants sont évaluées par le service d'enchères du vendeur de premier niveau. L'enchère ayant le score de désirabilité le plus élevé est renvoyée à SFE, et cette charge utile chiffrée est envoyée à SAS pour être renvoyée au client. Dans le navigateur, le vendeur de premier niveau termine l'enchère en appelant navigator.runAdAuction() et en fournissant la charge utile chiffrée du résultat de l'enchère sur le serveur.

Étapes suivantes

Après avoir lu ce guide, vous pouvez suivre les étapes suivantes :

En savoir plus

Vous avez des questions ?