Os relatórios de anúncios e os logs do bidder divergem por um de dois motivos: eventos se perdem no caminho até os relatórios, ou os dois lados os contam por regras diferentes. Uma única recontagem pelos IDs de leilão mostra qual é o caso. A resposta decide se vale corrigir o pipeline, migrar para um serviço gerenciado ou reconstruí-lo.
Quando os relatórios de anúncios nunca batem com os logs do bidder, dois problemas podem estar por trás da mesma diferença. Ou os registros de impressões e de cliques, chamados de eventos, se perdem no caminho até os relatórios, muitas vezes no pico de tráfego, ou cada lado os conta pelas próprias regras. Uma recontagem pelos IDs de leilão, os códigos que uma exchange atribui a cada leilão, separa um problema do outro. Faça essa recontagem antes de contratar alguém, porque um pipeline novo, sozinho, só resolve o primeiro problema.
A resposta curta: cruze os leilões que o seu bidder ganhou com as impressões dos seus relatórios pelo ID de leilão e compare as contagens hora a hora. Conte de novo um dia depois. Se a parcela de leilões ganhos que ainda faltam sobe nos horários de pico, o pipeline está perdendo eventos, e isso exige trabalho de engenharia. Se os eventos estão lá, mas caem em outra hora, aparecem duas vezes ou são filtrados, os dois lados contam de forma diferente. A solução, então, é um único conjunto de regras de contagem, por escrito, para os dois lados.
Leia também
Os logs do seu bidder registram cada leilão de que o seu bidder participou, cada lance que ele deu e cada leilão que ele ganhou. Os seus relatórios são montados a partir de eventos que chegam depois, como impressões e cliques vindos de navegadores e apps. A diferença entre os dois tem uma de duas causas, ou as duas:
De um jeito ou de outro, a diferença custa dinheiro. Se você fatura os anunciantes com base nos seus relatórios, cobra de menos pelas impressões perdidas e de mais pelas contadas em dobro, enquanto cada exchange normalmente cobra você pela própria contagem. Um bidder que aprende com esses eventos também define os lances com base em números errados.
Cruze os dois lados evento por evento. O OpenRTB, o protocolo do IAB Tech Lab para real-time bidding, dá a cada leilão um ID de bid request, atribuído pela exchange, e a cada impressão da requisição um ID próprio. O seu bidder pode pedir à exchange que escreva esses IDs na notificação que ela envia quando você ganha e no próprio anúncio. Assim, cada evento de impressão traz os mesmos IDs que os logs do seu bidder.
Nenhum dos dois IDs basta sozinho. No OpenRTB 2.6, cada exchange define os próprios IDs de requisição, então nada impede que duas exchanges usem o mesmo. Um ID de impressão só é único dentro da própria requisição e geralmente começa em 1. Por isso, cruze os dados por três valores juntos: a exchange, o ID da requisição e o ID da impressão.
Depois faça a recontagem:
Se os seus eventos não trazem IDs de leilão, acrescentá-los é a primeira correção, porque sem eles a recontagem só consegue comparar totais. O artigo técnico sobre medição de anúncios, com link acima, trata em detalhes dos timestamps e dos eventos atrasados.
Pense em um pipeline construído sobre Kafka e ClickHouse. Um coletor recebe cada evento do navegador ou do app e o grava no Kafka, uma fila de mensagens. Um processo de carga (loader) lê do Kafka e grava os eventos em lotes no ClickHouse, o banco de dados analítico por trás dos seus relatórios. Em um pico, os eventos podem sumir em cada etapa:
Peça aos seus engenheiros estes registros do horário de pico de um dia ruim:
O último registro faz a maior parte do trabalho. Se a contagem de uma etapa cai no pico enquanto a da etapa anterior se mantém, os eventos sumiram entre essas duas etapas.
Corrigir o pipeline atual:
Migrar para um serviço gerenciado, como o Amazon MSK para o Kafka ou o ClickHouse Cloud para o ClickHouse, em que o provedor opera os servidores:
Reconstruir o pipeline:
Dois tipos de empresa fazem esse trabalho, e este artigo não faz ranking de nenhum dos dois. Empresas de engenharia de ad tech constroem bidders, exchanges e ad servers, então sabem de onde vêm os IDs de leilão, mas pergunte se já operaram um pipeline de eventos no seu volume. Empresas de engenharia de dados constroem pipelines de eventos para muitos setores, mas nem sempre para ad tech. Pergunte a elas se já trabalharam com OpenRTB e se já conciliaram contagens com uma exchange.
Faça as mesmas cinco perguntas a todas as empresas da sua lista.
Como vocês removem duplicatas? Espere ouvir falar de um ID que cada evento recebe quando é criado, antes de qualquer nova tentativa, montado a partir dos IDs de leilão e do tipo de evento. O pipeline remove duplicatas duas vezes: uma quando armazena os eventos e outra quando os relatórios os leem. A segunda passada importa porque o ClickHouse remove duplicatas em segundo plano, em momentos que você não consegue prever. A documentação dele diz que isso “não garante a ausência de duplicatas”.
Como vocês tratam eventos que chegam atrasados? Espere ouvir um período definido para cada tipo de evento durante o qual os números ainda podem mudar, e um momento a partir do qual eles passam a ser definitivos. Um evento que chega depois disso ainda deve ser contado e marcado como atrasado, e não jogado fora.
Como vocês conferem os seus números com os logs do nosso bidder e com os relatórios dos nossos parceiros? Procure uma recontagem diária pelos IDs de leilão e um motivo por escrito para cada diferença. Combinem o tamanho de diferença a partir do qual alguém leva a questão à exchange.
Como vocês vão testar acima do nosso pico? Peça que reproduzam um dia movimentado gravado em um ritmo maior que o do seu horário de pico. Durante a reprodução, eles desligam um coletor e um servidor de banco de dados. No fim, cada evento deve estar armazenado ou contado como descartado.
Quem vai ser o dono do código? A sua empresa, por escrito, com o código nos seus repositórios desde o primeiro dia. Tudo o que a empresa contratada guardar para si deve ser listado nome por nome, com uma licença para usar e alterar depois que o trabalho terminar.
Em AdTech, a amBrain trabalha com desenvolvimento de DSP, plataformas de real-time bidding e engenharia de ad exchange. Esse trabalho inclui o RTBBidder, uma demand-side platform que a amBrain construiu para um cliente.
A amBrain diagnostica sistemas lentos em trading e ad tech: a plataforma em funcionamento é medida de ponta a ponta, e o relatório aponta para onde vai o tempo.
A amBrain constrói software desde 2019. Ela trabalha em três formatos: entrega completa, time dedicado ou engenheiros embarcados no seu time. O cliente mantém a propriedade integral do produto e do código, exceto dos componentes reutilizáveis da amBrain.
Este artigo não é um estudo de caso. Ele não descreve o pipeline de eventos de nenhum cliente, e o RTBBidder é citado apenas como um DSP que a amBrain construiu. Kafka e ClickHouse servem aqui como exemplo de stack, não como descrição dos projetos da amBrain ou das ferramentas que ela usa. O artigo não traz preços nem prazos.
Se os seus relatórios e os logs do seu bidder divergem, faça a recontagem primeiro. Depois leve os resultados dela e as mesmas cinco perguntas a todas as empresas da sua lista, inclusive a amBrain.
Traga sua arquitetura atual e o modo de falha que preocupa você, e vamos analisá-lo juntos em meia hora.