Les rapports publicitaires et les logs du bidder divergent pour l'une des deux raisons suivantes : des événements se perdent en route vers les rapports, ou les deux côtés les comptent selon des règles différentes. Un seul recomptage sur les identifiants d'enchère dit laquelle. La réponse décide s'il faut corriger le pipeline, passer à un service managé ou le reconstruire.
Quand les rapports publicitaires ne concordent jamais avec les logs du bidder, deux problèmes peuvent se cacher derrière le même écart. Soit les enregistrements d'impressions et de clics, appelés événements, se perdent en route vers les rapports, souvent au pic de trafic, soit chaque côté les compte selon ses propres règles. Un recomptage sur les identifiants d'enchère, les codes qu'un ad exchange attribue à chaque enchère, permet de distinguer les deux. Faites-le avant d'engager qui que ce soit, car un nouveau pipeline ne règle à lui seul que le premier problème.
La réponse courte : rapprochez les enchères gagnées par votre bidder des impressions de vos rapports par identifiant d'enchère, et comparez les décomptes heure par heure. Recomptez un jour plus tard. Si la part des enchères gagnées toujours manquantes augmente aux heures les plus chargées, le pipeline perd des événements, et cela demande un travail d'ingénierie. Si les événements sont là mais tombent dans une autre heure, apparaissent deux fois ou sont filtrés, les deux côtés comptent différemment. La solution est alors un seul ensemble écrit de règles de comptage pour les deux côtés.
À lire aussi
Les logs de votre bidder enregistrent chaque enchère à laquelle il a participé, chaque offre qu'il a faite et chaque enchère qu'il a remportée. Vos rapports sont construits à partir d'événements qui arrivent plus tard, comme les impressions et les clics venant des navigateurs et des applications. L'écart entre les deux a l'une des deux causes suivantes, ou les deux à la fois :
Dans les deux cas, l'écart coûte de l'argent. Si vous facturez les annonceurs à partir de vos rapports, vous facturez trop peu pour les impressions perdues et trop pour celles comptées deux fois, alors que chaque ad exchange vous facture en général sur son propre décompte. Un bidder qui apprend de ces événements fixe aussi ses offres d'après de mauvais chiffres.
Rapprochez les deux côtés événement par événement. OpenRTB, le protocole de real-time bidding de l'IAB Tech Lab, donne à chaque enchère un identifiant de bid request, attribué par l'ad exchange, et à chaque impression de la requête son propre identifiant. Votre bidder peut demander à l'ad exchange d'inscrire ces identifiants dans la notification qu'il envoie quand vous gagnez, ainsi que dans la publicité elle-même. Chaque événement d'impression porte alors les mêmes identifiants que les logs de votre bidder.
Aucun de ces identifiants ne suffit seul. Selon OpenRTB 2.6, chaque ad exchange fixe ses propres identifiants de requête, donc rien n'empêche deux ad exchanges d'utiliser le même. Un identifiant d'impression n'est unique qu'à l'intérieur de sa requête et commence en général à 1. Rapprochez donc sur trois valeurs à la fois : l'ad exchange, l'identifiant de requête et l'identifiant d'impression.
Faites ensuite le recomptage :
Si vos événements ne portent pas d'identifiants d'enchère, les ajouter est la première correction, car sans eux le recomptage ne peut comparer que des totaux. L'article technique sur la mesure publicitaire, dont le lien figure plus haut, traite en détail des horodatages et des événements en retard.
Prenons un pipeline construit sur Kafka et ClickHouse. Un collecteur reçoit chaque événement du navigateur ou de l'application et l'écrit dans Kafka, une file de messages. Un chargeur lit dans Kafka et écrit les événements par lots dans ClickHouse, la base de données analytique derrière vos rapports. Lors d'un pic, des événements peuvent disparaître à chaque étape :
Demandez à vos ingénieurs ces relevés pour l'heure la plus chargée d'une mauvaise journée :
C'est le dernier relevé qui fait l'essentiel du travail. Si le décompte d'une étape chute au pic alors que celui de l'étape précédente tient, les événements ont disparu entre ces deux étapes.
Corriger le pipeline actuel :
Passer à un service managé, comme Amazon MSK pour Kafka ou ClickHouse Cloud pour ClickHouse, où le fournisseur exploite les serveurs :
Reconstruire le pipeline :
Deux types de sociétés font ce travail, et cet article ne classe ni l'un ni l'autre. Les sociétés d'ingénierie ad tech construisent des bidders, des ad exchanges et des ad servers : elles savent donc d'où viennent les identifiants d'enchère, mais demandez-leur si elles ont déjà exploité un pipeline d'événements à votre volume. Les sociétés d'ingénierie des données construisent des pipelines d'événements pour de nombreux secteurs, mais pas toujours pour l'ad tech. Demandez-leur si elles ont travaillé avec OpenRTB et rapproché des décomptes avec un ad exchange.
Posez les cinq mêmes questions à chaque société de votre liste.
Comment supprimez-vous les doublons ? Guettez un identifiant que chaque événement reçoit à sa création, avant toute nouvelle tentative, construit à partir des identifiants d'enchère et du type d'événement. Le pipeline supprime les doublons deux fois : une fois quand il stocke les événements, et de nouveau quand les rapports les lisent. Le second passage compte, parce que ClickHouse supprime les doublons en arrière-plan, à des moments que vous ne pouvez pas prévoir. Sa documentation indique que ce mécanisme « ne garantit pas l'absence de doublons ».
Comment traitez-vous les événements qui arrivent en retard ? Guettez une période fixée pour chaque type d'événement pendant laquelle les chiffres peuvent encore changer, et un moment après lequel ils sont définitifs. Un événement qui arrive plus tard doit quand même être compté et marqué comme tardif, pas jeté.
Comment vérifiez-vous vos chiffres par rapport aux logs de notre bidder et aux rapports de nos partenaires ? Cherchez un recomptage quotidien sur les identifiants d'enchère et une raison écrite pour chaque écart. Convenez d'un niveau d'écart à partir duquel quelqu'un soulève le problème auprès de l'ad exchange.
Comment allez-vous le tester au-delà de notre pic ? Demandez-leur de rejouer une journée chargée enregistrée à un débit supérieur à celui de votre heure la plus chargée. Pendant le rejeu, ils coupent un collecteur et un serveur de base de données. Ensuite, chaque événement doit être soit stocké, soit compté comme rejeté.
À qui appartiendra le code ? À votre entreprise, par écrit, avec le code dans vos dépôts dès le premier jour. Tout ce que la société conserve doit figurer sur une liste nominative, avec une licence pour l'utiliser et le modifier une fois le travail terminé.
En AdTech, amBrain travaille sur le développement de DSP, les plateformes d'enchères en temps réel et l'ingénierie d'ad exchange. Ce travail comprend RTBBidder, une demand-side platform qu'amBrain a construite pour un client.
amBrain diagnostique les systèmes lents dans le trading et l'ad tech : la plateforme en fonctionnement est mesurée de bout en bout, et le rapport indique où passe le temps.
amBrain développe des logiciels depuis 2019. Elle travaille en trois formats : la prestation complète, une équipe dédiée ou des ingénieurs intégrés à votre équipe. Le client conserve la pleine propriété du produit et du code, à l'exception des composants réutilisables d'amBrain.
Cet article n'est pas une étude de cas. Il ne décrit le pipeline d'événements d'aucun client, et RTBBidder n'est cité que comme un DSP qu'amBrain a construit. Kafka et ClickHouse servent ici d'exemple de stack, et non de description des projets d'amBrain ni des outils qu'elle utilise. L'article ne donne ni prix ni délais.
Si vos rapports et les logs de votre bidder divergent, faites d'abord le recomptage. Présentez ensuite ses résultats et les cinq mêmes questions à chaque société de votre liste, amBrain comprise.
Apportez votre architecture actuelle et le mode de défaillance qui vous inquiète : nous les passerons en revue ensemble en une demi-heure.