Фоновое изображение
Как мы построили рекламную платформу с нуля

Каждая успешная рекламная кампания начинается с технологий, которые остаются за кадром. Но именно от них зависит, увидит ли целевой пользователь нужное объявление, сможет ли рекламодатель быстро настроить кампанию и получить точный отчет, и не сгорит ли его бюджет из-за мошенников или технических сбоев. Когда мы начинали проект AdWebs, нам нужно было создать платформу, которая справится с тремя ключевыми вызовами: высокая нагрузка, безопасность данных и безупречный пользовательский опыт. Вот как мы это сделали.

Архитектура, которая не боится нагрузок

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

Основная бизнес-задача рекламных платформ заключается в том, чтобы обеспечить бесперебойный показ рекламы даже при пиковых нагрузках в десятки тысяч запросов в секунду. Для AdWebs мы отказались от идеи монолита и построили систему из независимых микросервисов, где каждый отвечает за свою зону ответственности.

  • Go для скорости: Ядро системы, отвечающее за обработку рекламных запросов, написано на Go. Благодаря горутинам и FastHTTP один процесс обрабатывает 10-15 тысяч RPS, что в 2-3 раза быстрее стандартных решений.
  • Java для надежности: Основной бэкенд на Spring Boot управляет сложной бизнес-логикой, пользователями и финансами, обеспечивая транзакционность и целостность данных.
  • Stateless и Kubernetes: Каждый сервис не хранит состояние, что позволяет нам в автоматическом режиме масштабировать систему. Например, при резком росте нагрузки Horizontal Pod Autoscaler увеличил количество реплик с 3 до 12 за несколько минут без вмешательства человека.

Результат: Платформа автоматически адаптируется к скачкам трафика, а клиенты не сталкиваются с простоями из-за технических ограничений.

 

Таргетинг и аукцион за 20 миллисекунд

Чтобы реклама на площадке работала, а не просто откручивала бюджеты, нам нужно было наладить систему, которая сможет подобрать наиболее релевантное объявление из тысяч активных кампаний по 20+ параметрам быстрее, чем пользователь успеет моргнуть. Тогда мы превратили систему таргетинга в высокоскоростной конвейер, работающий в оперативной памяти.

  • Многоуровневое кэширование: Все активные кампании, таргетинги и балансы загружены в Redis, что обеспечивает доступ к данным за 1-2 мс.
  • Быстрая фильтрация: Использование Redis Sets и Sorted Sets позволяет моментально отфильтровать подходящие кампании по геолокации, устройству, интересам и другим параметрам.
  • In-memory аукцион: После фильтрации происходит молниеносная сортировка и выбор победителя на основе CPM-ставки. Весь цикл — от запроса до показа — укладывается в 15-25 мс.

Результат: Пользователи получают максимально релевантные показы, а рекламодатели — максимальный доход с каждого показа.

 

Бесшовная интеграция видеорекламы

В рамках работы над платформой нам было необходимо обеспечить бесшовное и масштабируемое подключение видеорекламы от любых поставщиков, избежав ручной настройки для каждого нового партнера или креатива. Чтобы решить эту задачу, мы построили работу с видеорекламой на общепринятых индустриальных стандартах VAST и VPAID, что превратило сложный процесс интеграции в унифицированный и прозрачный конвейер.

VAST — это универсальный язык видеорекламы. Представьте себе его как общепринятый шаблон-инструкцию в формате XML. Когда видеоплееру нужно показать рекламу, наш сервер отдает ему VAST-документ. В этом документе «зашита» вся необходимая информация: ссылка на видеофайл, его длительность, ссылка для перехода по клику, а главное — специальные URLs (трекеры) для отслеживания показов, кликов и других событий. Это избавило нас от необходимости вручную настраивать каждый ролик и позволило без проблем подключаться к любым рекламным сетям и DSP-платформам, которые тоже говорят на «языке» VAST.

Если VAST — это простое воспроизведение, то VPAID — это, по сути, мини-приложение внутри рекламного плеера. Этот стандарт открывает возможности для сложных интерактивных форматов: опросов, игр, выбора вариантов и многого другого. Хотя чаще всего он используется для более сложных видеокреативов с дополнительной логикой, его поддержка гарантирует, что мы готовы к любым требованиям рекламодателей.

Результат:

  • Масштабируемость: Мы можем в один клик подключить любого рекламодателя, использующего VAST, без разработки кастомных интеграций.
  • Прозрачность: Все участники процесса — наша платформа, рекламодатель и издатель — видят одни и те же данные о показах, собранные через единую систему трекеров.
  • Разнообразие форматов: Поддержка VPAID означает, что мы можем выполнять самые креативные и сложные запросы рекламодателей, предлагая им не просто показ, а вовлечение.
 

Аналитика в режиме реального времени

Насколько хорошо работает реклама, подскажет только аналитика. Нам было важно дать клиентам возможность видеть эффективность их кампаний почти в реальном времени, а не ждать отчетов до следующего утра. Для этого мы построили потоковый data pipeline на основе NATS JetStream и ClickHouse.

  • Потоковая обработка: События показов и кликов отправляются в очередь за микросекунды.
  • Мощная аналитика в ClickHouse: Колоночное хранение и сжатие данных 3:1 позволяют нам агрегировать миллиарды событий и отдавать отчеты за секунды.
  • Постоянная актуализация: Ключевые метрики (показы, клики, расход) предрассчитываются автоматически при поступлении новых данных.

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

 

Безопасность и надежность

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

  • Защита бюджетов: ACID-гарантии PostgreSQL для финансовых операций, атомарное списание средств в Redis, audit log всех изменений и система blacklist для защиты от мошенников.
  • Отказоустойчивость: Kubernetes автоматически перезапускает упавшие сервисы, а архитектура Graceful Degradation гарантирует, что даже при сбое одного компонента (например, ClickHouse) основная функция — показ рекламы — продолжает работать.
  • Безопасные обновления: CI/CD-пайплайн позволяет выпускать новые функции без простоя (zero-downtime deployments). Rolling Update и Canary-деплойments минимизируют риски.

Таким образом клиенты могут быть уверены, что их бюджеты в безопасности, а платформа работает стабильно 24/7.

 

Человекоцентричный интерфейс

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

  • Человеческий язык ошибок: Если пользователь видит сообщение об ошибке, он сразу понимает, что сломалось и что ему делать дальше. Это простое правило снизило количество обращений в поддержку на 25%.
  • Прогнозируемый интерфейс: Skeleton-экраны и умная валидация форм в реальном времени (через Zod) делают взаимодействие плавным.
  • Скорость и оптимизация: Серверная пагинация ускорила загрузку таблиц в 10 раз, а кэширование дашборда через React Query сделало повторные переходы мгновенными, что снизило bounce rate на 15%.

В итоге наши клиенты тратят меньше времени на рутину и больше — на стратегию, потому что интерфейс стал их помощником, а не препятствием.

Создание рекламной платформы с нуля стало для нас уроком о том, что правильные технологические решения — это не просто строка в резюме. Это то, что напрямую влияет на бизнес-показатели: увеличивает доходы рекламодателей, экономит время и нервы наших клиентов и строит фундамент доверия.

Мы не стремились использовать самые модные технологии, а выбирали те, что лучше всего решали конкретные бизнес-задачи. Go — для скорости, Java — для надежности, React/Next.js — для безупречного UX. Этот гибридный подход позволил нам построить не просто еще одну рекламную платформу, а масштабируемый, безопасный и удобный инструмент для роста бизнеса наших клиентов.

Загружаем ещё...