Social Jet (SocialJet) это платформа дистрибуции контента и нативной рекламы, через которую рекламные бюджеты автоматически превращаются в публикации у блогеров и в каналах. Когда в 2020 году к нам пришёл её инвестор, платформа уже работала и приносила деньги. Проблема была в другом: архитектура нигде не была описана, каждая новая функция давалась всё дороже, а остановить систему на переделку было нельзя, потому что через неё круглосуточно шли деньги рекламодателей.

Продукт делали сильные инженеры, но как стартап: все силы уходили на быстрый выпуск функций, проверку гипотез и первые продажи. Это нормально для старта. Когда ключевые функции, которые приносят выручку, стали известны, собственники начали вкладываться в качество, и стало видно, что без стандартных архитектурных практик и правил развёртывания проект идёт к эффекту ряби: правка в одном месте ломает другое, а в конце маячит переписывание всего с нуля.
Для кого платформа и что видно сразу
У Social Jet две стороны. Бренд или агентство, которое продаёт продукт, получает автоматический поиск площадок и размещение рекламы у блогеров и лидеров мнений. Автор, который зарабатывает на рекламе, перестаёт искать рекламодателей и вести продажи сам: заказы приходят через платформу. Тот, кто вёл инфлюенс-маркетинг вручную, знает, сколько времени съедают переписка, согласования и сверки. Здесь рутину берёт на себя система, человеку остаётся ввести данные.

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

База платформы содержит более 300 000 источников контента: по ней строят фильтры, подборки и запускают кампании. На экране возможностей для одного только Telegram заявлено более 100 000 каналов, проверка на накрутки, география подписчиков, автоматизация размещений и полная отчётность. При этом простой интерфейс сочетается с огромным числом настроек, а такое сочетание встречается редко.
Как устроено внутри
Ценообразование и жизненный цикл размещения
Самая сложная подсистема считает стоимость публикации по множеству факторов. Дальше система сама публикует рекламу у автора и сама же её удаляет, когда тариф предполагает временный пост. Всё это работает во всех популярных социальных сетях и мессенджерах, поэтому каждая интеграция живёт по своим правилам площадки, а платформа сводит их к единой модели кампании.

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

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

Дальше кампания проходит по цепочке, где на каждом шаге участвует своя подсистема:
- Рекламодатель выбирает тип продвижения, например пост, и пишет текст в редакторе с форматированием. Справа сразу видно, как публикация будет выглядеть в канале.
- Система подбирает площадки по фильтрам и считает цену размещения у каждой из них.
- В назначенное время пост выходит у автора, а если тариф временный, снимается автоматически.
- Показы, реакции и расход собираются в статистику, из которой рекламодатель выгружает отчёт.
Требования к надёжности
Система работает в реальном времени, круглосуточно и без перерывов. Регулярные обновления не должны её останавливать, ведь речь о бюджетах большого числа пользователей. Один маленький сбой означает ручные пересчёты, извинения перед рекламодателями и авторами и юридические риски для компании. Поэтому платформа должна выдерживать изменения и обновления, разделение на сервисы, рост посещаемости и нагрузки, падение сервера или отдельного сервиса.
Технически это сервисная архитектура со сложным легаси-ядром, собственным протоколом обмена между частями системы, реактивным фронтендом и интеграциями с соцсетями и мессенджерами.

Экран статистики показывает итог работы всей цепочки: число кампаний всего и активных, показы и реакции за месяц, средний ER, а по дням посты, показы, потраченную сумму, лайки, репосты, комментарии, CPC и CTR с выгрузкой отчёта.
Что сделали мы
У кода была долгая история. Часть авторов уже не работала на проекте, кто-то мог консультировать пару часов в неделю. Поэтому первым делом пришлось читать и понимать большие объёмы кода и складывать в единую картину внутреннее устройство подсистем.
Мы изучали систему, консультировали по дальнейшим изменениям с учётом современных стандартов и целей проекта, работали с командой, которая делала связанные модули, общались с одним из прежних разработчиков и держали регулярную связь с инвесторами, которых было несколько. Больше всего мы работали с Максимом, который выполнял роль продакт-овнера. Его оценка на старте: разобрались в процессах и архитектуре, внедрили ряд улучшений и уже работаем над плановыми задачами, параллельно обновляя структуру. То есть платформа развивалась без остановки и без переписывания с нуля.
Как мы подключаемся к такой системе у клиента
- Карта системы. Читаем код, собираем схему подсистем, потоков денег и данных, фиксируем её в документации. Подробнее в материале о документировании.
- Правила выпуска. Договариваемся, как обновления попадают в рабочую систему без простоя и как их откатить. Об этом этап деплоя и инфраструктуры.
- Улучшения по частям. Плановые задачи идут параллельно с обновлением структуры, без большого переписывания. Подход описан в статье о рефакторинге.
- Защита денежных сценариев. Расчёт цены, списания и публикации закрываем автотестами, чтобы правка не ломала то, что приносит выручку.
От клиента нужны доступ к коду и окружениям, продакт-овнер, который принимает решения, и хотя бы несколько часов времени людей, которые помнят историю системы. Честная граница: внутренние метрики и код Social Jet мы не публикуем, в кейсе только то, что видно в интерфейсе и согласовано для показа.
Где ещё это применимо
- рекламные и партнёрские сети, где цена размещения зависит от многих факторов и меняется в реальном времени;
- маркетплейсы с расчётами между сторонами, как в кейсе Sof Lex с партнёрской программой;
- операторские панели продвижения и контента, пример: витрина продвижения.
Если у Вас работающая платформа, которую страшно трогать, запишитесь на бесплатную консультацию с архитектором. Разберём, где система теряет скорость развития, и после консультации Вы получите расчёт цены и сроков по этапам.
Лестный отзыв от клиента о сотрудничестве можно посмотреть на нашем лендинге.