Arquitetura

Conheça a arquitetura de leilão dos serviços de lances e leilões

Visão geral

Os serviços de lances e leilões (B&A) oferecem um conjunto de serviços para compradores e vendedores de anúncios que são executados em um ambiente de execução confiável (TEE) para facilitar um leilão com Protected Audience (PA). Nesta página, descrevemos as várias configurações de leilão que podem ser usadas em um leilão de PA.

Definições

Termo Descrição
Leilão com Protected Audience Um leilão de publicidade que envolve dados entre sites
Leilão contextual Um leilão de anúncios que não envolve dados entre sites. Esse leilão segue o caminho dos leilões de lances em tempo real (RTB).
Solicitação de leilão unificado Uma solicitação enviada pelo código JavaScript do vendedor no navegador que inclui o payload para o leilão da Protected Audience e o leilão contextual.
Serviço de anúncios do vendedor (SAS) O serviço responsável por processar a solicitação de leilão unificado do navegador. Pode ser o servidor de anúncios RTB atual de um vendedor. O SAS é responsável por orquestrar os leilões contextuais e de público-alvo protegido.
Serviço de anúncios do comprador O serviço responsável por enviar um lance de leilão contextual. Pode ser um servidor de anúncios ORTB de um comprador.

Serviços para compradores e vendedores

Os serviços de B&A são compostos por quatro serviços para compradores e vendedores:

  • Para compradores, o Serviço de lances e o Serviço de front-end do comprador (BFE) estão disponíveis para uso.
  • Para vendedores, o Serviço de leilão e o Serviço de front-end do vendedor (SFE) estão disponíveis para uso.
Participante Serviço Descrição
Negociante Serviço de front-end do comprador (BFE) O serviço processa a solicitação GetBids de um SFE do vendedor. Ele é responsável por descriptografar o payload, buscar os indicadores K/V e chamar o GenerateBids do serviço de lances.
Serviço de lances O serviço processa a solicitação GenerateBids da BFE. Ele é responsável por executar a lógica de lances do comprador e gerar um lance.
Vendedor Serviço de front-end do vendedor (SFE) O serviço processa a solicitação SelectAd do serviço de publicidade do vendedor. Ele é responsável por descriptografar o payload, chamar a operação GetBids do BFE, buscar os indicadores K/V, chamar a operação ScoreAd do Serviço de leilão e retornar o resultado criptografado do leilão de B&A para o SAS.

Quando o serviço faz parte da pilha do vendedor de nível superior em um leilão de vários vendedores orquestrado pelo servidor, ele também processa a solicitação GetComponentAuctionCiphertexts da SAS.

Serviço de leilão O serviço processa a solicitação ScoreAd do SFE. Ele é responsável por executar a lógica de pontuação do vendedor e fornecer a pontuação de conveniência de um lance.

Arquitetura de um leilão de B&A de PA para a Web

O diagrama a seguir descreve o leilão básico de público-alvo protegido com serviços de B&A com um único vendedor e um único comprador. As caixas vermelhas com contorno grosso representam serviços em execução em um TEE:

O código JavaScript do lado do cliente envia a solicitação de leilão unificado para a SSP. O SAS envia uma solicitação ao SFE, que envia uma solicitação ao BFE para um lance.
(Diagrama em tamanho real)
  1. O código JavaScript da SSP na página do publisher gera os dados criptografados do leilão de anúncios de B&A chamando navigator.getInterestGroupAdAuctionData().
    • Esse payload criptografado contém dados do comprador e só pode ser descriptografado em um SFE em um TEE.
  2. O código JavaScript da SSP envia uma solicitação de leilão unificado ao serviço de publicidade do vendedor.
    • Uma solicitação de leilão unificado contém o payload de leilão contextual ORTB em texto simples e o payload de leilão criptografado de B&A.
    • O serviço de publicidade do vendedor é seu servidor de anúncios atual e não é executado em um TEE.
  3. O serviço de anúncios do vendedor chama o serviço de RTB da DSP para solicitar o lance do leilão contextual e os indicadores do comprador que serão transmitidos ao leilão de PA subsequente.
    • Essa pode ser uma etapa em que um comprador sinaliza a intenção de participar do leilão de PA.
  4. Depois que o leilão contextual é concluído, o SAS envia a solicitação SelectAd ao serviço SFE.
    • O lance vencedor do leilão contextual e os indicadores do comprador são adicionados ao payload da solicitação SelectAd.
  5. O serviço SFE da SSP chama o serviço BFE da DSP com a solicitação GetBids.
  6. O BFE da DSP chama o serviço de lances com a solicitação GenerateBids.
  7. Depois que o SFE recebe o lance, a chamada ScoreAd é feita para o serviço de leilão.
    • O lance com a maior pontuação de conveniência é retornado ao SAS e encaminhado ao código JavaScript na página.
  8. O leilão é concluído no navegador transmitindo o resultado criptografado do leilão de B&A para a chamada navigator.runAdAuction().

Configurações de leilão

Um leilão da API Protected Audience com os serviços de B&A pode ser configurado das seguintes maneiras:

  • Leilão de vendedor único com compradores de B&A
  • Leilão de modo misto com compradores no dispositivo e de marca e publicidade
  • Leilão de vários vendedores que pode ser orquestrado por dispositivo ou servidor

Participantes

Para descrever cada configuração de leilão, os seguintes participantes são usados neste guia:

Participante Descrição
DSP-A Comprador no dispositivo
DSP-B Comprador no dispositivo
DSP-X Comprador de B&A
DSP-Y Comprador de B&A
SSP-TOP Vendedor de nível superior
SSP-OD Vendedor somente no dispositivo
SSP-BA Vendedor somente de B&A
SSP-MIX Vendedor de vários meios de transporte

Há quatro DSPs:

  • DSP-A e DSP-B participam apenas de leilões no dispositivo
  • DSP-X e DSP-Y participam de leilões no dispositivo e de B&A.

Há quatro SSPs, e cada vendedor executa uma configuração de leilão diferente:

  • O SSP-OD faz um leilão somente no dispositivo
  • SSP-BA faz um leilão somente de B&A
  • SSP-MIX faz um leilão de modo misto
  • SSP-TOP realiza um leilão de vários vendedores:
    • SSP-OD/BA/MIX participam como vendedores de componentes do leilão de vários vendedores da SSP-TOP

Leilão de B&A de vendedor único

Em uma configuração de vendedor único, um vendedor realiza um leilão em que vários compradores participam. Se o vendedor estiver fazendo um leilão de B&A, os compradores precisarão executar a pilha de serviços de B&A para enviar um lance ao leilão. Os compradores e vendedores não precisam usar o mesmo provedor de nuvem.

Uma arquitetura de vendedor único em que um SFE se comunica com vários BFEs para receber lances.
(Diagrama em tamanho real)

Na configuração anterior, o SSP-BA executa um leilão de B&A em que o DSP-X e o DSP-Y participam usando a pilha de comprador dos Serviços de B&A. O serviço de anúncios do vendedor primeiro faz um leilão contextual para DSP-X e DSP-Y e depois executa um leilão com Protected Audience enviando a solicitação SelectAd ao serviço SFE do vendedor. O lance vencedor do leilão contextual e os indicadores de cada comprador são transmitidos para a chamada SelectAd. Em seguida, o serviço SFE envia solicitações GetBids para o BFE de DSP-X e DSP-Y, que vai chamar o serviço de lances para gerar um lance.

O resultado criptografado do leilão de B&A é retornado ao cliente e transmitido para a chamada runAdAuction(). Uma configuração de leilão de um único vendedor é assim:

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

O valor requestId vem da chamada getInterestGroupAdAuctionData() no cliente, e os dados serverResponse vêm do leilão de B&A do lado do servidor.

Leilão de modo misto

Na configuração de modo misto, os compradores podem participar do leilão do vendedor no dispositivo ou no B&A. As setas azuis representam o caminho do leilão no dispositivo, e as setas vermelhas representam o caminho do leilão de B&A:

Uma arquitetura de vendedor de modo misto em que os compradores podem enviar lances no dispositivo ou em B&A.
(Diagrama em tamanho real)

Nessa configuração, DSP-A e DSP-B são compradores que enviam os lances no dispositivo, e DSP-X e DSP-Y são compradores que enviam os lances usando a B&A. Os compradores no dispositivo participam de um leilão de PA no dispositivo no navegador, e os compradores de B&A participam da configuração de leilão de B&A descrita na seção leilão de um único vendedor.

O leilão contextual é executado primeiro para todos os compradores com o objetivo de coletar o lance vencedor do leilão contextual e os indicadores do comprador. Em seguida, o leilão de B&A é executado, e os indicadores do comprador do leilão contextual são transmitidos para a solicitação SelectAd à SFE. O resultado criptografado do leilão de B&A retornado da SFE é encaminhado ao navegador. Depois do leilão de B&A, o resultado é inserido no leilão no dispositivo de que os compradores participam.

Uma configuração de leilão de modo misto de um único vendedor para a parte do leilão no dispositivo é semelhante a esta:

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

Paralelização de leilões no dispositivo e de B&A

Sem paralelização, os leilões são executados sequencialmente: primeiro o leilão contextual, depois o de B&A e, por fim, o no dispositivo. Com a paralelização implementada, o leilão contextual é executado primeiro novamente, mas o resultado e os indicadores são transmitidos de volta ao cliente para iniciar o leilão no dispositivo em paralelo antes que o leilão de B&A termine.

Um diagrama que descreve como o lance e os indicadores do leilão contextual e o resultado do SelectAd são transmitidos de volta ao código JavaScript do navegador
(Diagrama em tamanho real)

O código JavaScript no cliente envia a solicitação de leilão unificado para o SAS, que inicia o leilão contextual e o leilão de PA B&A. Quando o SAS recebe uma resposta do servidor RTB de um comprador, os indicadores do comprador para o leilão no dispositivo podem ser transmitidos de volta ao navegador, junto com o vencedor do leilão contextual, depois que todos os lances são recebidos. Os indicadores do comprador transmitidos são usados para gerar um lance no dispositivo, e o vencedor do leilão contextual é usado como um valor mínimo de lance ao pontuar os lances.

No SAS, o vendedor gera um UUID nonce que é definido no cabeçalho de resposta Ad-Auction-Result-Nonce ao transmitir os dados do leilão contextual para o navegador. O mesmo valor de uso único é usado na chamada SelectAd para o SFE no leilão de B&A, e esse valor é incluído na resposta SelectAd retornada do SFE. Durante a fase de leilão do lado do cliente, o navegador verifica se o nonce no cabeçalho de resposta Ad-Auction-Result-Nonce corresponde ao nonce no payload criptografado do resultado do leilão.

Consulte a explicação para saber mais sobre a paralelização de modo misto.

Leilão de vários vendedores

Há duas maneiras de fazer isso:

  1. Leilão orquestrado pelo dispositivo em que a chamada para o serviço de anúncios de cada vendedor de componentes se origina do navegador.
  2. Leilão orquestrado pelo servidor em que a chamada para o serviço de anúncios de cada vendedor de componentes se origina do serviço de anúncios do vendedor de nível superior.

Leilão multimarca orquestrado por dispositivo

Em um leilão multimarca orquestrado por dispositivo, cada vendedor de componentes pode realizar o leilão em uma configuração de sua escolha. Vendedores no dispositivo, de B&A e de modo misto podem participar do leilão de nível superior.

Um diagrama que descreve como vários vendedores que executam diferentes configurações de leilão podem enviar o resultado do leilão para o vendedor de nível superior.
(Diagrama em tamanho real)
Nessa configuração, a `SSP-TOP`, que é o vendedor de nível superior, realiza um leilão de vários vendedores em que a `SSP-OD`, a `SSP-BA` e a `SSP-MIX` participam: * A `SSP-OD`, que realiza um leilão de PA somente no dispositivo, envia a configuração do leilão de componentes no dispositivo para o vendedor de nível superior. * `SSP-BA`, que realiza um leilão de B&A, envia uma solicitação de leilão unificado ao serviço de publicidade do vendedor e realiza os próprios leilões contextuais e de B&A. Os resultados são enviados ao vendedor de nível superior. * `SSP-MIX`, que executa um leilão de modo misto, primeiro executa o leilão de B&A no servidor e depois envia o resultado do leilão de B&A e a configuração do leilão no dispositivo. O vendedor de nível superior coleta as configurações do leilão de componentes de cada vendedor e cria uma configuração de leilão semelhante a esta: ```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', } ] }) ``` ### Leilão de vários vendedores orquestrado pelo servidor Em um leilão de vários vendedores orquestrado pelo servidor, as chamadas para os serviços de anúncios do vendedor de componentes são feitas pelo serviço de anúncios do vendedor de nível superior. Nessa configuração, os vendedores de componentes não podem realizar um leilão no dispositivo ou em modo misto. Todos os vendedores precisam usar a B&A, e todos os compradores precisam enviar lances usando a B&A.
A SSP de nível superior envia uma solicitação de leilão unificado ao serviço de publicidade do vendedor. O serviço de publicidade do vendedor chama o SFE para executar a operação GetComponentAuctionCipherTexts. As cifras retornadas são enviadas ao serviço de anúncios de cada vendedor de componentes, que realiza os próprios leilões de B&A.
(Diagrama em tamanho real)

Neste diagrama, SSP-TOP executa um leilão de vários vendedores orquestrado pelo servidor em que SSP-BA-X e SSP-BA-Y participam.

Uma única solicitação de leilão unificado que contém o payload dos leilões contextuais e de PA para todos os participantes é enviada do navegador para o serviço de anúncios do vendedor de nível superior. Em seguida, o SAS faz uma chamada GetComponentAuctionCiphertexts para o SFE com o payload. O SFE descriptografa o payload, separa os payloads por vendedor de componentes e retorna os payloads recriptografados para o SAS do vendedor de nível superior.

As definições proto para solicitação e resposta de GetComponentAuctionCiphertexts são as seguintes:

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

Com o payload de cada vendedor de componentes, o SAS do vendedor de nível superior chama o SAS dos vendedores de componentes, e cada SAS de componente executa o leilão de B&A do componente. Em seguida, os resultados dos leilões de componentes são retornados à SFE do vendedor de nível superior, e os lances do leilão de componentes são pontuados pelo serviço de leilão do vendedor de nível superior. O lance com a maior pontuação de conveniência é retornado ao SFE, e esse payload criptografado é enviado ao SAS para ser retornado ao cliente. No navegador, o vendedor de nível superior conclui o leilão chamando navigator.runAdAuction() e fornecendo o payload criptografado do resultado do leilão do servidor.

Próximas etapas

Depois de ler este guia, você pode seguir estas etapas:

Saiba mais

Dúvidas?