Arquitetura

Entenda 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 executados em um ambiente de execução confiável (TEE) para facilitar um leilão de público-alvo protegido (PA). Esta página descreve 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 da API Protected Audience Um leilão de anúncios 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 de leilão de lances em tempo real (RTB) atual.
Solicitação de leilão unificado Uma solicitação enviada pelo código JavaScript do vendedor do navegador que inclui o payload para o leilão da Protected Audience e o leilão contextual.
Serviço de publicidade 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 de um vendedor. O SAS é responsável por orquestrar leilões contextuais e da Protected Audience.
Serviço de anúncios do comprador O serviço responsável por enviar um lance de leilão contextual. Pode ser o 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 os compradores, o serviço de lances e o serviço de front-end do comprador (BFE) estão disponíveis para uso.
  • Para os 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. Ela é responsável por descriptografar o payload, buscar os sinais K/V e chamar o GenerateBids do serviço de lances.
Serviço de lances O serviço processa a solicitação GenerateBids do BFE. Ela é 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. Ela é responsável por descriptografar o payload, chamar a operação GetBids do BFE, buscar os sinais K/V, chamar a operação ScoreAd do Auction Service e retornar o resultado do leilão B&A criptografado 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 do SAS.

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

Arquitetura de um leilão de B&A de PA para 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 com contorno vermelho grosso representam serviços em execução em um TEE:

O código JavaScript do cliente envia a solicitação de leilão unificado para o SSP. O SAS envia uma solicitação para o SFE, e o SFE envia uma solicitação para o BFE para um lance

(diagrama em tamanho original)

  1. O código JavaScript do SSP na página do editor gera os dados criptografados do leilão de anúncios B&A chamando navigator.getInterestGroupAdAuctionData().
    • Esse payload criptografado contém os dados do comprador e só pode ser descriptografado em um SFE em um TEE.
  2. O código JavaScript do SSP envia uma solicitação de leilão unificado para o serviço de publicidade do vendedor.
    • Uma solicitação de leilão unificado contém o payload do leilão contextual ORTB em texto simples e o payload do leilão B&A criptografado.
    • 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 publicidade do vendedor chama o serviço de RTB do DSP para solicitar o lance do leilão contextual e qualquer indicador do comprador a ser transmitido para o 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 para o 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 do SSP chama o serviço BFE do DSP com a solicitação GetBids.
  6. O BFE do DSP chama o serviço de lances com a solicitação GenerateBids.
  7. Depois que o lance é recebido pelo SFE, a chamada ScoreAd é feita para o serviço de leilão.
    • O lance com a maior pontuação de atratividade é retornado ao SAS e encaminhado para o 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 de público-alvo protegido com serviços de B&A pode ser configurado das seguintes maneiras:

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

Participantes

Para descrever cada configuração de leilão, este guia usa os seguintes participantes:

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 do B&A
SSP-MIX Vendedor de modo misto

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 leilões de B&A

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

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

Leilão de B&A de um único vendedor

Em uma configuração de vendedor único, um vendedor realiza um leilão em que vários compradores participam. Se o vendedor estiver realizando um leilão de B&A, os compradores precisam estar executando o conjunto 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 uma SFE se comunica com várias BFEs para receber lances

(diagrama em tamanho original)

Na configuração anterior, SSP-BA executa um leilão de B&A em que DSP-X e DSP-Y participam usando o conjunto de serviços de B&A do comprador. O serviço de publicidade do vendedor executa primeiro um leilão contextual para DSP-X e DSP-Y e, em seguida, um leilão de público-alvo protegido 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 do leilão de B&A criptografado é retornado ao cliente e transmitido para a chamada runAdAuction(). Uma configuração de leilão de um único vendedor tem esta aparência:

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 na 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 em modo misto em que os compradores podem enviar lances no dispositivo ou na B&A

(diagrama em tamanho original)

Nessa configuração, DSP-A e DSP-B são compradores que enviam lances no dispositivo, e DSP-X e DSP-Y são compradores que enviam 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 de contexto é executado primeiro para todos os compradores para coletar o lance vencedor do leilão de contexto 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 do SFE. O resultado do leilão de B&A criptografado retornado do SFE é encaminhado para o navegador. Depois do leilão de B&A, o resultado é enviado para o leilão no dispositivo em que os compradores participam.

Uma configuração de leilão de um único vendedor em modo misto para a parte no dispositivo do leilão é 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 a paralelização, os leilões são executados sequencialmente, em que o leilão contextual é realizado, depois o leilão de lances e leilões e, por fim, o leilão no dispositivo. Com a implementação da paralelização, o leilão contextual é executado primeiro, mas o resultado e os indicadores são transmitidos de volta ao cliente para iniciar o leilão no dispositivo em paralelo antes do leilão de B&A terminar.

Um diagrama que descreve como o lance e os indicadores do leilão contextual e o resultado do SelectAd são transmitidos de volta para o código JavaScript do navegador

(diagrama em tamanho original)

O código JavaScript no cliente envia a solicitação de leilão unificado para o SAS, e o SAS inicia o leilão contextual e o leilão de B&A de PA. Quando o SAS recebe uma resposta do servidor RTB de um comprador, o comprador sinaliza que o leilão no dispositivo pode ser transmitido de volta ao navegador, junto com o vencedor do leilão contextual, depois que todos os lances forem recebidos. Os indicadores de compradores transmitidos são usados para gerar um lance no dispositivo, e o vencedor do leilão contextual é usado como lance mínimo 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 valor de uso único no cabeçalho de resposta Ad-Auction-Result-Nonce corresponde ao valor de uso único no payload do resultado do leilão criptografado.

Consulte o texto explicativo para saber mais sobre a paralelização no modo misto.

Leilão de vários vendedores

Há duas maneiras de realizar um leilão multivendedor de PA com B&A:

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

Leilão de vários vendedores orquestrado por dispositivo

Em um leilão de vários vendedores 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 usam diferentes configurações de leilão podem enviar o resultado do leilão ao vendedor de nível superior

(diagrama em tamanho original)

Nessa configuração, SSP-TOP, que é o vendedor de nível superior, realiza um leilão com vários vendedores em que SSP-OD, SSP-BA e SSP-MIX participam:

  • SSP-OD, que executa um leilão de PA somente no dispositivo, envia a configuração do leilão de componentes no dispositivo ao vendedor de nível superior.
  • SSP-BA, que realiza um leilão de B&A, envia uma solicitação de leilão unificado para o 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 realiza um leilão no modo misto, executa o leilão de B&A primeiro no servidor e, em seguida, 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 de leilão de componentes de cada vendedor e cria uma configuração de leilão semelhante a esta:

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 publicidade do vendedor do componente são feitas pelo serviço de publicidade do vendedor de nível superior. Nessa configuração, os vendedores de componentes não podem executar um leilão no dispositivo ou no modo misto. Todos os vendedores precisam usar o B&A, e todos os compradores precisam enviar lances usando o B&A.

A SSP de nível superior envia uma solicitação de leilão unificado para o serviço de publicidade do vendedor. O serviço de publicidade do vendedor chama o SFE para executar a operação GetComponentAuctionCipherTexts. Os textos criptografados retornados são enviados ao serviço de anúncios de cada vendedor de componentes que realiza os próprios leilões de B&A.

(diagrama em tamanho original)

Neste diagrama, o 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 anúncios programáticos 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 cada vendedor de componentes e retorna os payloads recriptografados para o SAS do vendedor de nível superior.

As definições de proto para a solicitação e a resposta 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 componente, 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 ao 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 atratividade é retornado ao SFE, e esse payload criptografado é enviado ao SAS para ser retornado ao cliente. No navegador, o vendedor de nível superior finaliza 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, siga estas etapas:

Saiba mais

Dúvidas?