Обратный звонок
DevopsJavaAdTech

Рекламная SSP-платформа

Задача

Разработать систему отчетности по бизнес и системным показателям, подготовить систему к запуску новых сервисов.

Результат

Проведена оптимизация производительности системы для запуска новых сервисов и повышения нагрузки, разработанная система мониторинга и отчетности позволяет отслеживать как технические показатели системы, так и экономические.

Бизнес заказчика

Платформа предлагает уникальное предложение для издателей

Выходящее за рамки традиционных издательских услуг, путем встраивания интерактивных рекламных блоков в качестве дополнения к стандартной видео- и медийной рекламе в виде викторин, опросов и избранного контента. Эта стратегия доказала, что увеличивает вовлеченность посетителей и ценность рекламного пространства для издателей.

Платформа начала с подхода, основанного только на торгах header-bidding

Основываясь на успехе, начала создавать собственную SSP с целью иметь возможность тонко настраивать назначение ставок и доступ к широкому кругу ведущих рекламодателей.

Инструменты и решения

Для трекера и биржи.

Для сбора отчетов о расхождениях.

Для сбора отчетов.

Для пересылки сообщений электронной почты с отчетами о расхождениях в обработку.

Для хранения необработанных отчетов и AWS Athena для выполнения специальных запросов поверх них.

Для визуализации метрик.

Технологический стек

Aerospike
Postgres
Node.js
Kubernetes / EKS
Terraform
Serverless
AWS Lambda
AWS Glue
AWS Athena
RDS

Почему это интересно?

Несоответствие между отчетами

Одна из самых неопределенных, трудноустранимых и распространенных проблем в AdTech. Для успешной интеграции с DSP необходимо учитывать несоответствие количества показов рекламы и их стоимости между отчетами SSP и DSP. Это несоответствие не должно превышать 5%.

Масштабирование и контроль

На старте работы, под мониторингом было только 2 интеграции и 3-4 сайта, что позволяло собирать данные о расхождениях в ручном режиме. По мере масштабирования системы количество поступающих отчетов от партнеров увеличилось и появилась необходимость в разработке автоматизированной системы по их сбору и визулизации.

Нагрузка

Добавления каждого нового партнера увеличивала нагрузку на систему! Чтобы сохранить стабильную работу, наша команда занималась профилированием и поиском "узких" мест в системе для последующего их устранения.

Какие трудности преодолели?

Проблема

На нескольких сайтах есть расхождения, это вообще проблема?

Когда начали расследование расхождений, у нас было ~10 интегрированных издателей. У нескольких из них (2-3) расхождение поднималось выше 5%, но остальные были в порядке. Потратили несколько месяцев на то, чтобы исправить несоответствие для конкретного веб-мастера, и за это время клиент подумал, что система полностью нефункциональна, и мы недостаточно компетентны, чтобы исправить это.
Решение

В AdTech встречаются расхождения, отслеживайте их влияние на бизнес, а не их абсолютные значения

С точки зрения бизнеса, наша система дала общее расхождение менее 5%, и 7 из 10 веб-сайтов работали должным образом. Это соответствует отраслевым стандартам для систем AdTech и считается хорошим результатом. Изначально заказчик настаивал на расследовании конкретных случаев с проблемными веб-сайтами, но, увидев общую перспективу, понял, что влияние на бизнес незначительно. Они смогут получать доход от системы и платить издателям, имея разницу в отчетах < 5%. Это разблокировало запуск проекта.
Проблема

Все работает нормально, но мы видим несоответствие, что дальше?

Первоначальная оценка трекера показала, что в процессе отслеживания показов ошибок не бывает, а преобразованные данные отчетов соответствуют сырым данным о показах. Было неясно, что можно сделать, если ничего не выходит из строя, поэтому было весьма заманчиво проигнорировать проблему.
Решение

Ежедневно отслеживайте данные и систематически оценивайте гипотезы

Прежде всего, мы создали электронную таблицу для отслеживания расхождений, в которую ежедневно собирали данные. Это был основной инструмент, который позволил нам оценивать все последующие эксперименты.
Проблема

Ежедневно требуется час для сбора данных о расхождениях

Первоначально собирали данные о расхождениях вручную, отфильтровывая необработанные отчеты по электронной почте от партнерских интеграций для конкретных сайтов, которые нам нужны. Это работало, когда мониторили 2-3 интеграции и 3-4 сайта. Когда мы начали масштабировать платформу, мы ежедневно тратили около 1 часа на сбор необходимой статистики.
Решение

Автоматизировать мониторинг расхождений

Создали процесс, который автоматически извлекает отчеты из почтового ящика по мере их поступления, обрабатывает их и сохраняет сводную статистику в базе данных SQL. Позже данные можно было легко визуализировать в Grafana или проанализировать в любом редакторе SQL. Это позволило нам сделать данные доступными в одном централизованном месте с другими бизнес-метриками платформы и масштабировать мониторинг до 150+ веб-сайтов.
Проблема

Простой вопрос о данных требует часов программиро-вания электронных таблиц

Поскольку мы полагались либо на электронные таблицы, либо на автоматизированные скрипты, было сложно ответить на такие вопросы, как «какова разбивка показов по устройствам за последние 30 дней». Приходилось либо создавать огромные электронные таблицы, либо изменять код, чтобы получить такие результаты, и на это уходили часы работы.
Решение

Сделали необработанные данные доступными для специальных запросов через 
Athena

Изменили процедуру сбора расхождений, чтобы поместить в S3 необработанные неагрегированные отчеты, полученные в результате интеграции с файлами CSV. Затем настроили Athena для создания таблиц из этих файлов и сделали данные доступными для запросов. Это позволило быстро оценить гипотезы, связанные с данными, и объединить несколько источников данных, чтобы ответить на сложные вопросы (например, какие запросы от вспомогательного трекера также были захвачены нашим трекером, если мы знаем, что креатив был отображен).

Гипотезы со стороны AdServer

Важно отличать данные SSP от встроенных адаптеров PreBid, установленных и участвующих в аукционе. 
Вот гипотезы, которые мы оценили:

подтверждено
01

Наши отчеты могут содержать данные о трафике, обслуживаемом с помощью различных механизмов.

Поняли, что Менеджер рекламы Google проводит собственный аукцион на котором наша система делает ставку. Иногда он выбирает другую ставку от конкурирующих серверов объявлений, поэтому пришлось отфильтровать этот трафик из наших отчетов (используя OrderName).

отклонено
02

AdServer может отслеживать показы креативов, которые не могут быть отображены

Хотя документация Google подтверждает, что GAM отслеживает показы после того, как клиент начинает загрузку креатива, общее количество их показов было ближе к нашим данным, чем что-либо еще (например, специальные показы «Начало рендеринга» от Google).

Гипотезы со стороны клиента

Основная проблема заключалась в том, чтобы понять, вызвано ли несоответствие блоком рекламы или сложностью самого веб-сайта издателя. 
Вот гипотезы, которые мы оценили:

подтверждено
01

Креативы из определенного DSP не могут отображаться при полностью включенном отслеживании

Внедрили код, который фиксирует все визуализированные креативы до того, как они будут добавлены на страницу. Код показал, что существуют креативы, для которых нельзя отследить показы с вероятностью > 60%. Такие креативы генерировали ~80% расхождений для конкретных сайтов. Хотя мы не внедрили решение для обнаружения и исключения таких креативов из рендеринга, оно позволило объяснить большое расхождение на некоторых веб-сайтах и отключить SSP, которые приводили к такому расхождению на них.

отклонено
02

Объявления могут не отслеживаться на определенных устройствах/ОС/браузерах

Сравнили необработанные данные с разбивкой по различным параметрам с соответствующими отчетами от партнеров и AdServer, и не обнаружили корреляции между расхождениями и устройствами, операционными системами и браузерами.

подтверждено
03

Веб-сайт инициирует множество одновременных запросов, которые заставляют некоторые запросы завершаться с тайм-аутом, ожидая очереди «max-6-requests» в браузере

Для некоторых веб-сайтов проверили вывод консоли во время их рендеринга и обнаружили сотни запросов с ошибками. Это создало впечатление, что проблема с отслеживанием распространена на веб-сайтах, и мы проверили ее, сравнив расхождения между менеджером рекламы и другими встроенными адаптерами prebid. Сайты с большим количеством ошибок имели высокие расхождения и для всех остальных адаптеров.

отклонено
04

Браузеры не загружают пиксель отслеживания показов для оптимизации элементов display:hidden

Несмотря на то, что оптимизация существует, мы не увидели заметного влияния на расхождение при использовании разных стилей отслеживания (XHR-запрос, прозрачный пиксель 1x1, скрытый пиксель 0x0 и т. д.).

подтверждено
05

Некоторые сайты имеют большие расхождения из-за неисправной версии адаптера PreBid

Поняли, что один из сайтов использовал старую версию PreBid, которая отличалась на 10 минорных версий от обычно используемой. После обновления версии расхождение значительно уменьшилось. Хотя пришлось иметь дело с кешированной неисправной версии в течение нескольких дней после релиза. Кроме того, мы поместили версию скрипта отслеживания в данные импрешена, чтобы отслеживать такие проблемы в будущем.

отклонено
06

Пиксель отслеживания показов кэшируется и поэтому не запрашивается

Все пиксели показов имели уникальные URL-адреса, поскольку они содержали хешированный параметр идентификатора показа.

Гипотезы со стороны трекера

Основным препятствием было объективно оценить, правильно ли работает наш код и отслеживает ли нужные данные. 
Вот гипотезы, которые мы оценили:

подтверждено
01

Несоответствие может быть вызвано ошибкой при дедупликации показов

Когда мы показывали несколько объявлений с разных бирж по одной и той же ставке, все объявления учитывались как один показ. Мы исправили процесс дедупликации, чтобы учитывать (dsp_name + Impression_id) для поиска повторяющихся показов.

отклонено
02

Балансировщик нагрузки может пропустить показы до того, как они попадут в наш трекер

Сравнили файлы журналов балансировщика нагрузки с необработанными данными о показах, они совпали.

подтверждено
03

Трекер теряет портирование входящих показов при обработке

Прежде всего, мы покрыли эндпоинт отслеживания процедурами мониторинга кодов состояния и сбора исключений. Никаких ошибок при обработке запросов они не показывали. Во-вторых, развернули дополнительный вспомогательный сторонний трекер (Snowplow), который вообще не был подключен к нашей инфраструктуре. Сравнили данные между этими трекерами, и они совпали.

Читать подробнее в PDF

Сообщение отправлено
отправить еще раз

Результат

01

Инфраструктура отслеживания операций, у которой нет проблем, вызывающих расхождения с партнерами.

02

Автоматический мониторинг расхождений, визуализированный с помощью информационных панелей Grafana.

03

Зеркальный сторонний трекер, который используется для оценки эффективности основного.

04

Сборщик аналитики со стороны PreBid, который фиксирует все рендеры рекламы.

Отправь заявку

подписаться на нашу рассылку

Сообщение отправлено
заполнить еще раз

позвоните мне