Cat with big surprised eyes
Здавалося б, сервіси таргетованої реклами вже достатньо автоматизовані. Та наша команда Data-інженерів вирішила поглянути на деякі звичні технології під іншим кутом. Врешті ми знайшли нові дієві рішення для клієнта.
У цій статті я поділюся найцікавішими знахідками та опишу, що слід враховувати кожному, хто захоче повторити подібне.
Колись для розміщення банерів в інтернеті потрібно було домовлятися напряму з власниками рекламних ресурсів. Вони визначали вартість послуги, збирали інформацію про свою аудиторію, повідомляли кількість кліків тощо.
З часом всі ці кроки владося автоматизувати завдяки таким сервісам:
Що саме відбувається:
У контексті нашої теми варто згадати і такі терміни:
Наша команда мала вдосконалити систему таргетованої реклами, яка б модифікувала та оптимізувала 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-інформацію у месенджери. Це не так вже й традиційно у більшості проєктів, але від того й цікаво. І що важливо — таке рішення в рази підвищило мобільність бізнес-аналітиків.
Навіть якщо здається, що це неможливо — шукайте варіанти реалізації. Все реально. Ми в цьому впевнились на прикладі з хендлінгом деяких ексепшенів, який звільнив частину ресурсів наших фахівців.
Бажаю успіхів!
Днями я завзято нила про щось ChatGPT (експериментую між сеансами з живим терапевтом). І от…
«Крутіть колесо, щоб отримати знижку до 50%!» «Натисніть тут, щоб відкрити таємничу пропозицію!» «Зареєструйтесь зараз,…
Дуже хочеться робити якісь десктопні апки. Сумую за часами коли всі програми були offline-first, і…
Надсилаючи криптовалюту, багато новачків ставлять запитання: як працюють комісії та чому вони відрізняються в різних…
Нова афера набирає обертів — ось детальний розбір того, як фальшиві потенційні роботодавці намагаються вкрасти…
Соцмережа з можливістю вбудовувати повноцінні додатки прямо в пости — звучить як фантастика, але Farcaster…