Cat with big surprised eyes
Казалось бы, услуги таргетированной рекламы уже достаточно автоматизированы. И наша команда дата-инженеров решила взглянуть на некоторые привычные технологии под другим углом. Наконец, мы нашли новые действенные решения для клиента.
В этой статье я поделюсь интересными находками и опишу, что нужно учитывать каждому, кто захочет повторить подобное.
Когда-то для размещения баннеров в интернете нужно было договариваться напрямую с владельцами рекламных ресурсов. Они определяли стоимость услуги, собирали информацию о своей аудитории, сообщали количество кликов.
Со временем все эти шаги удалось автоматизировать благодаря таким сервисам:
Что именно происходит:
В контексте нашей темы следует упомянуть и следующие термины:
Наша команда должна была усовершенствовать систему таргетированной рекламы, которая модифицировала и оптимизировала User Acquisition и ретаргетинг. Масштабы деятельности этой системы действительно поразительны. В среднем сервис обрабатывает почти миллион реквестов в секунду! К тому же трафик поступает из многих регионов: от США и Бразилии в Европу и Японию.
Сервис построен на многих модулях, поэтому стек технологий очень разнообразен:
Наверняка вы обратили внимание на использование одновременно Redis и Aerospike. Но ведь это NoSQL-базы со схожим функционалом. Почему бы тогда не оставить одну из них? Но нам нужны оба варианта (у нас это опенсорс-версии).
Здесь следует учитывать их отличия — критические для нашего проекта:
В проекте все модули по-своему интересны. И я бы выделил две наиболее нетипичные части. Первая — Reporting UI. Этот модуль отправляет репорты, но реализуемый механизм отличается от привычных методов. Обычно репорты с важной бизнес-информацией поступают на email или разные BA-инструменты.
В нашем случае репорты можно посылать еще в Slack. В этом мессенджере происходит вся коммуникация по проекту.
Мы добавили и другие функции:
Техническая реализация модуля не сложная. Сначала мы делаем запрос на Amazon Athena для получения нужной информации по бид-логам. Эти данные приводим в нужные для репортов форматы. Далее остается выбрать путь рассылки: на email, у Slack-канал или чат-бот (если есть соответствующая команда).
На иллюстрации ниже пример такого репорта. Здесь представлен график с данными о прибыли и некоторыми цифрами. Две линии обозначают данные сегодня и вчера.
В определенный момент количество клиентов сервиса резко возросло. Чтобы повысить гибкость конфигурации и скейлинга системы, появилась необходимость перейти на более модульную архитектуру. Но после апдейта в модулях возникали ошибки, что приводило к потерям денег.
Обычно зафиксировать эти проблемы просто, ведь у нас много аналитических данных и метрик. Нужно было остановить бидер и исправить баг. Тогда мы решили сделать высокоуровневый Exception Handler, наш Stopper. Его цель — автоматизировать идентификацию проблем и остановку хендлинга реквестов.
Реализация Stopper довольно проста:
Как правило, для отслеживания проблем мы смотрим на количество ивентов и лаг некоторых топиков на Kafka. Наш модуль либо смотрит на лаг, либо считывает количество ивентов, проходящих через топик.
Поскольку мы понимаем нормативные показатели, то можем выставлять минимальные и максимальные уровни для топиков и тайм задержки. При превышении или недостатке ивентов данные об этих проблемах отправляются в MySQL-таблицу. Там Stopper проверяет информацию и решает: останавливать хендлинг реквестов или нет.
Также на схеме вы могли заметить Redis. Это объясняется тем, что сейчас тестируем остановку реквестов еще и по этой базе данных. Если количество ключей станет критически большим или сильно уменьшится, система должна сделать все то же, что и для Kafka.
Как видите, одной NoSQL-базой дело не ограничились. Это позволило нам объединить все лучшее из Redis и Aerospike, увеличить возможности расширения системы и в конечном счете сэкономить деньги, что также ценит бизнес.
Мы попытались отправлять важную BA-информацию в мессенджеры. Это не так уж традиционно в большинстве проектов, но оттого и интересно. И что важно — такое решение в разы повысило мобильность бизнес-аналитиков.
Даже если кажется, что это невозможно — ищите варианты реализации. Все реально. Мы в этом убедились на примере с хендлингом некоторых эксэпшенов, который освободил часть ресурсов наших специалистов.
Успехов!
Читайте также: Зарплата $68 тыс. в год: как стать дата-инженером — дорожная карта
В благословенные офисные времена, когда не было большой войны и коронавируса, люди гораздо больше общались…
Вот две истории из собственного опыта, с тех пор, когда только начинал делать свою карьеру…
«Ты же программист». За свою жизнь я много раз слышал эту фразу. От всех. Кто…
Отличные новости! Если вы пропустили, GitHub Copilot — это уже не отдельный продукт, а набор…
Несколько месяцев назад мы с командой Promodo (агентство инвестировало в продукт более $100 000) запустили…
Пару дней назад прочитал сообщение о том, что хорошие курсы могут стать альтернативой классическому образованию.…