Развитие рекламной платформы для онлайн-сервиса доставки продуктов

Кейс под NDA

Главное о кейсе:

  • Реализация отказоустойчивости на микросервисной архитектуре, интеграция в кодовую базу,
  • Рефакторинг сервиса рекомендаций и оптимизация

О клиенте

Российский онлайн-сервис доставки продуктов и товаров с полок магазинов, который вышел на рынок в 2019.  В 2023 году – занял первое место с самой широкой географией в 83 региона и 14 млн заказов.

Задача

Одним из драйверов развития продукта клиента стала рекламная платформа. Она помогала поддерживать прибыльность бизнеса, но также требовала большого количества ресурсов. Команда нуждалась в десятках опытных специалистов, готовых сразу выдавать результат. Найм топ-перформеров в штат занял бы много времени и повлиял на скорость тестирования гипотез, на спринты. Поэтому команда клиента обратилась в Holyweb с запросом на усиление по Golang и Ruby разработке. 

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

Процесс

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

Этапы работы

Разработчики Holyweb подключились в 2021 году, в момент активного развития и продукта клиента, и рекламной платформы в частности. Срок работы одного из разработчиков на проекте составил 1 год и 3 месяца. За это время команда добилась значительных изменений, повлиявших на бизнес-показатели сервиса доставки.

Есть мнение, что внешние специалисты не заинтересованы в развитии проекта. Наш опыт работы и данные опровергают это:

  • На проекте есть разработчики, которые помогают закрывать задачи с 2021 года,
  • 75% разработчиков работают два года,
  • Специалисты Holyweb занимают ведущие роли в командах, участвуют в онбординге новых специалистов.

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

Скорость работы сервиса

База данных хранит все рекламные кампании. В момент загрузки страницы необходимо пройтись по всем рекламным креативам, достать нужные, провести аукционы – и дать ответ в рамках 200 мс. Это верхняя граница скорости ответа со стороны бэкенда, что влияло на пользовательский опыт: страница могла не прогружаться или делать это с сильной задержкой. А это в свою очередь могло приводить к снижению конверсии в заказ. 

Поэтому специалисты Holyweb вместе с продуктовой командой пришли к другому архитектурному решению. 

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

Такое решение помогло снизить скорость ответа до 20-50 мс на стороне бэкенда

Оптимизация справочников

В разных регионах, городах есть словари магазинов, которые также содержат информацию о представленных брендах. Когда в городе появляется магазин, он попадает в справочник. 

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

Чтобы автоматизировать этот процесс, придумали использовать систему очередей на Kafka. Все микросервисы, использующие словари, подписываются на изменения. Фоновый процесс Worker обращается в Kafka и получает сообщения об обновлении списков, делает копию в общую базу данных. Остальные микросервисы синхронно узнают о новой записи в течение 10 минут. 

Ещё один плюс решения – возможность отследить, откуда поступила запись, исправить её и автоматически дать знать об этом остальным подписчикам справочников. 

Рефакторинг сервиса рекомендаций

Сервис рекомендаций выдаёт пользователям подборки товаров. Изначально был написан на Ruby-монолите, но со временем потребовался перенос на микросервисы Go. 

Для пользователей такой переход остался незаметным и никак не сказался на использовании приложения. 

Трафик переключали постепенно с помощью маршрутизации API Gateway. Сначала старый сервис на Ruby, как и прежде, получал запросы и отвечал на них. Новый, на Golang, просто принимал запросы, чтобы команда могла отследить и настроить работу нового микросервиса. Долю трафика постепенно увеличивали, пока не пришли к полному переключению на новый сервис рекомендаций.

«‎На проекте было много интересных задач, в том числе с требованиями бизнеса: например, автоматическая отрисовка маркировки рекламы на бэкенде.  Но для команды было не менее важно наладить взаимодействие с другими продуктовыми командами, нивелировать пробелы при передаче знаний. 

Поэтому мы уделили внимание описанию терминов и процессов, сделав их понятными для всех участников: продактов, разработчиков, тестировщиков»‎‎ — Евгений, бэкенд-разработчик

Решение

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

На 150% больше показов рекламы

– благодаря новым рекламным местам и форматам.

В 4 раза меньше ресурсов требуется новому сервису для работы. 

Появился новый роутер, благодаря которому время ответа сократилось: с 200 мс (на верхней границе) до 20-50 мс на стороне бэкенда. 

х10 к устойчивости

– Старый сервис выдерживал 1500 запросов/сек, новый уже 15000 запросов/сек.

В 2023 году сервис доставки отметил рост оборотов рекламной платформы в 3 раза

Ответим в течение 60 минут в рабочее время

Глеб Корсунов,  Директор по развитию
Глеб Корсунов,
Директор по развитию
Мария Дорохина, Менеджер по развитию
Мария Дорохина,
Менеджер по развитию
Оставить заявку

Оставьте заявку
Остальное сделаем мы

Max file size 10MB.
Uploading...
fileuploaded.jpg
Upload failed. Max size for files is 10 MB.
Отправить заявку
Глеб Корсунов,
Директор по развитию
Мария Дорохина,
Менеджер по развитию
Успешно отправлено!
Отправить новую заявку
Что-то пошло не так. Свяжитесь с нами напрямую
×