Рекламные отчёты и логи биддера расходятся по одной из двух причин: события теряются по пути в отчёты или две стороны считают их по разным правилам. Какая из двух — покажет один пересчёт по идентификаторам аукционов. От ответа зависит, чинить пайплайн, переходить на управляемый сервис или перестраивать его.
Когда рекламные отчёты никак не сходятся с логами биддера, за одним и тем же разрывом могут стоять две разные проблемы. Либо записи о показах и кликах, которые называют событиями, теряются по пути в отчёты — часто на пике трафика, — либо каждая сторона считает их по своим правилам. Отличить одно от другого позволяет пересчёт по идентификаторам аукционов — кодам, которые биржа присваивает каждому аукциону. Проведите его, прежде чем кого-то нанимать: новый пайплайн сам по себе исправляет только первую проблему.
Короткий ответ: сопоставьте аукционы, которые выиграл ваш биддер, с показами в отчётах по идентификатору аукциона и сравните цифры по часам. Через день посчитайте снова. Если доля выигрышей, которых всё ещё не хватает, растёт в самые загруженные часы, пайплайн теряет события, и это работа для инженеров. Если события на месте, но попадают в другой час, появляются дважды или отфильтровываются, стороны считают по-разному. Тогда решение — один письменный свод правил подсчёта для обеих сторон.
Дальше по теме
Логи биддера фиксируют каждый аукцион, в котором участвовал ваш биддер, каждую сделанную им ставку и каждый выигранный аукцион. Отчёты строятся из событий, которые приходят позже, — например показов и кликов из браузеров и приложений. У разрыва между ними одна из двух причин или обе сразу:
В любом случае разрыв стоит денег. Если вы выставляете счета рекламодателям по своим отчётам, то за потерянные показы берёте слишком мало, а за задвоенные — слишком много, тогда как каждая биржа обычно выставляет счёт вам по собственному подсчёту. А биддер, который учится на этих событиях, ещё и назначает ставки по неверным цифрам.
Сопоставьте две стороны событие за событием. OpenRTB, протокол IAB Tech Lab для real-time bidding, даёт каждому аукциону идентификатор запроса на ставку (bid request ID), который присваивает биржа, а каждому показу в запросе — собственный идентификатор. Ваш биддер может попросить биржу подставлять эти идентификаторы в уведомление, которое она отправляет при вашем выигрыше, и в саму рекламу. Тогда каждое событие показа несёт те же идентификаторы, что и ваши логи биддера.
Ни одного из этих идентификаторов по отдельности недостаточно. По OpenRTB 2.6 каждая биржа задаёт идентификаторы запросов сама, поэтому ничто не мешает двум биржам использовать один и тот же. Идентификатор показа уникален только внутри своего запроса и обычно начинается с 1. Поэтому сопоставляйте по трём значениям сразу: биржа, идентификатор запроса и идентификатор показа.
Затем проведите пересчёт:
Если в ваших событиях нет идентификаторов аукционов, первым исправлением будет их добавить: без них пересчёт может сравнить только итоговые суммы. Отметки времени и опоздавшие события подробно разобраны в технической статье об измерении рекламы, ссылка на которую есть выше.
Возьмём пайплайн на Kafka и ClickHouse. Коллектор принимает каждое событие из браузера или приложения и записывает его в Kafka — очередь сообщений. Загрузчик читает из Kafka и пакетами записывает события в ClickHouse — аналитическую базу данных, на которой построены ваши отчёты. На пике события могут пропадать на каждом шаге:
Попросите инженеров поднять такие записи за самый загруженный час неудачного дня:
Основную работу делает последняя запись. Если счёт на одном шаге на пике падает, а на предыдущем держится, события пропали между этими двумя шагами.
Починить текущий пайплайн:
Перейти на управляемый сервис, например Amazon MSK для Kafka или ClickHouse Cloud для ClickHouse, где серверы эксплуатирует провайдер:
Перестроить пайплайн:
Такую работу делают компании двух видов, и рейтинга ни тех, ни других эта статья не составляет. Инженерные компании в AdTech строят биддеры, биржи и ad-серверы, поэтому знают, откуда берутся идентификаторы аукционов, но спросите, эксплуатировали ли они пайплайн событий с вашими объёмами. Компании в области data engineering строят пайплайны событий для многих отраслей, хотя не всегда для AdTech. Спросите их, работали ли они с OpenRTB и сверяли ли цифры с биржей.
Задайте каждой компании из вашего списка одни и те же пять вопросов.
Как вы убираете дубли? В ответе должен прозвучать идентификатор, который каждое событие получает при создании, до любой повторной отправки, и который собран из идентификаторов аукциона и типа события. Пайплайн убирает дубли дважды: когда сохраняет события и ещё раз — когда их читают отчёты. Второй проход важен, потому что ClickHouse убирает дубли в фоне, в моменты, которые нельзя запланировать. В его документации сказано, что это «не гарантирует отсутствия дубликатов».
Что вы делаете с событиями, которые приходят с опозданием? В ответе должен прозвучать заданный для каждого типа событий период, пока цифры ещё могут меняться, и момент, после которого они становятся окончательными. Событие, пришедшее позже, всё равно нужно засчитать и пометить как опоздавшее, а не выбросить.
Как вы сверяете свои цифры с нашими логами биддера и отчётами наших партнёров? Ждите ежедневного пересчёта по идентификаторам аукционов и письменного объяснения каждого расхождения. Договоритесь о размере разрыва, при котором кто-то поднимает вопрос перед биржей.
Как вы проверите систему на нагрузке выше нашего пика? Попросите прогнать записанный загруженный день с более высокой частотой, чем в ваш самый загруженный час. Во время прогона они отключают коллектор и сервер базы данных. После этого каждое событие должно быть либо сохранено, либо учтено как отброшенное.
Кому будет принадлежать код? Вашей компании — письменно, и код с первого дня лежит в ваших репозиториях. Всё, что подрядчик оставляет за собой, должно быть перечислено поимённо, с лицензией, позволяющей использовать и изменять это после окончания работы.
В AdTech amBrain занимается разработкой DSP, платформ real-time bidding и рекламных бирж. В эту работу входит RTBBidder — demand-side платформа, которую amBrain построил для клиента.
amBrain диагностирует медленные системы в трейдинге и AdTech: работающую платформу замеряют от начала до конца, и в отчёте названо, куда уходит время.
amBrain делает софт с 2019 года. Компания работает в трёх форматах: полная разработка, выделенная команда или инженеры внутри вашей команды. Клиент сохраняет полное владение продуктом и кодом, кроме переиспользуемых компонентов amBrain.
Эта статья — не кейс. Она не описывает пайплайн событий ни одного клиента, а RTBBidder назван только как DSP, которую построил amBrain. Kafka и ClickHouse служат здесь примером стека, а не описанием проектов amBrain или инструментов, которыми он пользуется. Цен и сроков статья не приводит.
Если ваши отчёты и логи биддера расходятся, сначала проведите пересчёт. Затем приходите с его результатами и теми же пятью вопросами к каждой компании из вашего списка, в том числе к amBrain.
Принесите текущую архитектуру и тот сценарий отказа, который вас беспокоит, — разберём его вместе за полчаса.