Привет, Хабр! Меня зовут Андрей Алексеенко, я руководитель команды разработки МедиаСкаута от МТС. Мы — один из операторов рекламных данных (ОРД). Через нас и подобные нам сервисы проходит вся маркировка диджитал-рекламы. Это понятие появилось чуть больше двух лет назад с поправкой в Закон о рекламе (№347-ФЗ). Данные обо всей интернет-рекламе должны попадать в единый реестр (ЕРИР). Работает этот ЕРИР не со всем рынком, а с семью ОРД, которые оказываются «между молотом и наковальней».
С одной стороны — рекламодатели со своими желаниями и возможностями, а с другой — требования законодательства. В результате регулятор, ОРД и рекламодатели находятся в постоянном диалоге и на ходу выстраивают процессы взаимодействия и маркировки. Обычно эту ситуацию видят со стороны рекламодателей и пользователей, а в этом посте я расскажу, как это происходит на стороне провайдера: как мы взаимодействуем с клиентами, ЕРИР и на полном ходу адаптируем свой продукт.
Как работает маркировка в общих чертах
Предположим, рекламодатель хочет рассказать рынку о своих услугах и нанимает агентство. Оно создает креатив и идет в ОРД, куда сообщает параметры рекламы: кто заказал, на какой срок, что именно будет отображаться и на какой площадке. Каждому креативу ОРД присваивает ERID.
ERID — это уникальный токен из 8–10 символов BASE58, который позволяет проследить, кто и какой креатив разместил. ERID формируется на этапе создания рекламы и содержит информацию о выдавшем его ОРД + идентификатор самого креатива. Иногда ERID отображается непосредственно на объявлении. Данные о показах с присвоенными ERID должны попасть в ЕРИР — об этом заботиться ОРД, а подают отчетность либо рекламодатели, либо агентство, в зависимости от выбранной модели работы.
Отсутствие ERID — нарушение. Любой ERID можно проверить через личный кабинет в ЕРИР.
Требования к ОРД
Чтобы стать ОРД, нам нужно было выполнить ряд требований:
пройти аттестацию по 17 приказу ФСТЭК (он определяет безопасность серверов, используемых для хранения коммерческих и персональных данных),
обеспечить интеграцию своей платформы с инфраструктурой ЕРИР
обеспечить доступность системы и сервисов 24/7.
Этим требованиям могли удовлетворить только достаточно крупные компании, в том числе и мы.
Старт разработки
Разговоры о том, что будет создан некий единый реестр интернет-рекламы, начались в 2021 году. Имея собственное рекламное агентство и желая в первую очередь как-то упростить себе жизнь (а потом, возможно, предложить инструмент рынку), мы стали вникать в проблематику. Так что в начале 2022 — еще до принятия закона — наши аналитики взялись за работу.
1 сентября 2022 года мы уже продемонстрировали MVP. К этому моменту нам нужно было выкатить базовую функциональность, чтобы первые клиенты могли начать пользоваться личным кабинетом: зарегистрировать контрагентов, создать креатив и получить на него ERID, а потом отчитаться актами и загрузить договора.
С точки зрения законодательства на тот момент загрузка данных была необязательной (можно было ничего не грузить, не получая штрафов). Поэтому сервис мы предоставляли за условную фиксированную абонентскую плату, не зависящую от объема загрузок.
Тест и первые доработки
Первым пользователем стало наше собственное рекламное агентство МТС Стрим. Изначально мы реализовали только личный кабинет. На старте всю информацию клиенты заносили руками. Но уже тогда стало ясно, что нужна автоматизация, поэтому довольно быстро появился программный интерфейс. С его помощью агентства могут силами грузить нам по API большие объемы данных.
В качестве основного формата для такой загрузки решили взять что-то общепринятое и остановились на обычном человекочитаемом Excel. В личном кабинете можно скачать предзаполненный файл с добавленными вручную данными по показам. Полностью ручной ввод также оставили — оба варианта существуют в личном кабинете параллельно.
Плюсов у Excel масса: например, уже сейчас множество программ его понимает. Из минусов — в нем могут быть невалидные данные. Кто-то что-то откуда-то скопипастил, опечатался, поставил лишний пробел, ошибся с разделителем разрядов, в итоге 1000 рублей превратилось в 10 или 100000. Поскольку и тариф, и будущий налог с рекламных доходов напрямую зависят от общего рекламного оборота, такая ошибка может стоить дорого.
Чтобы клиенты их не допускали, мы построили систему валидации данных на основе Форматно-логического контроля (ФЛК) ЕРИР. Найденные ошибки отображаются в личном кабинете еще до того, как данные уйдут в реестр. Для сложных случаев у нас есть техподдержка, которая работает, в том числе и через чаты в Telegram. Мы мониторим ситуацию по ошибкам и если видим, что у какого-то клиента всплеск, реагируем практически сразу. И случаи бывают разные.
Например, у ЕРИР есть требование в конце текстового описания не ставить пробел. А при копипастинге текста такие пробелы могут вставляться автоматически. Подобные вещи мы подсвечиваем клиентам в личном кабинете, упоминая варианты решения. Второй этап — ручной контроль, когда мы практически в онлайне рассказываем людям о своих наблюдениях. Периодически мы также рассылаем письма с предложениями исправить данные. А на будущее мы работаем над моделями предиктивного взаимодействия, чтобы можно было заранее предупреждать клиентов, если они отклоняются от привычного процесса работы.
Дальнейшее развитие
Мы постепенно добавляем функциональность, упрощающую клиентам работу с рекламой. Например, постоянно дорабатываем ролевую модель, которая позволяет делегировать разные уровни доступа к личному кабинету компании сотрудникам с разным функционалом, обеспечиваем поддержку загрузки креативов архивами.
У нас предусмотрен тестовый личный кабинет, где пользователи могут научиться работать с ЕРИР в тестовом режиме, не передавая данные регулятору или вообще используя произвольные данные. А еще есть черновик акта: клиент может создать и проверить акт без отправки в реестр (чтобы не дожидаться, пока тот выдаст ошибку).
Начиная с четвертой версии ЕРИР требует посылать отдельно измененные или удаленные строки — ему нельзя просто загрузить заново огромный акт, где изменилась лишь часть строк. Поэтому при отправке акта в реестр мы разбираем его на эти составляющие — немного упрощаем жизнь пользователю.
Не все вопросы мы решили с первого раза. В некоторых случаях нам пришлось откатываться со своих решений. Например, сначала мы пытались сделать свой ERID устойчивым к перебору. У нас это получилось, правда, ERID стал слишком длинным — около 30 символов. Клиентам это не понравилось. Пришлось менять подход и возвращаться к обычному ERID как у коллег по рынку.
В целом есть три больших блока изменений в продукте:
Доработки по требованию ЕРИР.
Функции, которые запросили пользователи. У нас есть клиенты разного масштаба, плюс их интересы постоянно меняются, но мы стараемся обеспечить наиболее полный набор функций на рынкею. Считаем, что именно этим мы можем отстроиться от других ОРД.
Доработки, связанные с ростом системы.
По всем направлениям мы прошли довольно сложный путь — внедрили много серьезных нововведений. О части из них хочется рассказать подробнее.
Изменения API по требованию ЕРИР
Развивается не только наш продукт., но и API ЕРИР. Появляются новые справочники, отменяются лишние проверки и т.п. Эти изменения обусловлены тем, что на старте никому не было толком непонятно, как система будет функционировать. Сейчас у ЕРИР актуальна уже пятая версия API, а со следующего года скорее всего будет работать шестая.
Для любого ОРД каждая смена API требует изрядных усилий. С момента публикации изменений до вывода нового API в эксплуатацию (а это от одного до нескольких месяцев) вся команда приостанавливает работу над обновлением интерфейса и переключается на новые требования регулятора.
Самые глобальные изменения были, когда ЕРИР переходил с синхронного API на асинхронный. Вся логика работы перевернулась с ног на голову. Вероятно, когда отчетность стала обязательной для всех, нагрузка на реестр возросла, как и тайминги обработки запросов. Это и привело к переходу на новую концепцию. Теперь мы отправляем запрос в ЕРИР, получаем токен и по нему периодически проверяем, зарегистрирован ли креатив, принят ли акт. При таких глобальных изменениях оставаться на старой версии попросту нельзя — ее поддержку прекращают в обозначенные сроки.
Мы неплохо адаптировались к этой практике — на пятую версию перешли чуть ли не первыми (с 15 октября ЕРИР планировал закрыть поддержку предыдущей версии, но дедлайн продлили: другие игроки рынка не успели реализовать требуемую функциональность).
Адаптация под нагрузку
Со временем система становится все более высоконагруженной: количество клиентов растет, кратно увеличивается объем передаваемых данных. Как и другие ОРД, мы работаем с самыми разными типами контрагентов, в том числе, небольшими сайтами. И они генерят огромное количество записей.
Практика показала, что система используется несколько не так, как мы и, видимо сам ЕРИР, предполагали в самом начале. Например, мы думали, что один акт будет включать 10 договоров, 1000 креативов, а к ним 10 тыс. площадок (т.е. один креатив будет крутиться на нескольких площадках). В реальности оказалось, что агентства иногда создают разные креативы под разные площадки. В результате объемы импорта много больше, чем мы закладывали при проектировании системы. Грубо говоря, мы ожидали высокие нагрузки только по площадкам, но на практике они проявились и в статистике по креативам.
Самые пиковые нагрузки у нас с двадцатых чисел до окончания месяца. В минуту нам прилетает порядка 1 000 запросов на регистрацию элементов. Иногда нам приходят Excel-файлы почти с миллионом строк (это предел для формата). Это огромные объемы данных, которые надо как можно быстрее отдать в реестр. И в этот момент мы должны оставаться отказоустойчивыми.
Так что все это время (почти два года) мы, да и сам ЕРИР, стараемся оптимизировать работу — делаем сервера более мощными, рефакторим код и делаем другие улучшения.
Поддержка фидов
Как только ЕРИР объявил о работе с фидами товаров, мы добавили такую возможность. Например, это удобно крупным магазинам с огромной номенклатурой — позволяет присваивать каждому товару уникальный ERID, не создавая вручную отдельный креатив.
Хранения медиаданных
Реклама должна загружаться к нам как можно быстрее. Но она бывает разная. В самом простом случае — это текстовый креатив. А иногда к одной рекламе прилагается пара десятков картинок и аудио-файлов. Встречаются даже объемные видеоролики в 4К разрешении. Поэтому медиаданные мы вынесли в отдельное файловое хранилище.
Переход к распределенной архитектуре
Мы постепенно внедряем микросервисную модель, хотя этот процесс еще не завершен. По мере внесения изменений система распадается на отдельные сервисы, которые легко масштабируются горизонтально, позволяя нам увеличивать пропускную способность. Так мы повышаем отказоустойчивость. И этот процесс продолжается.
Изменения в обслуживании
Понятно, что рост нагрузки влияет и на наши рабочие процессы. На начальном этапе мы могли выпустить хотфикс утром, выключив на минуту сервера (так было удобнее разработчикам), сейчас клиентов так много, что изменения выкатываются не ранее 10 часов вечера. Если мы попытаемся выключить сервера днем, то через минуту простоя в нашу поддержку посыпятся сообщения о том, что вываливаются ошибки 500 или 404.
Как мы обеспечиваем диалог между регулятором и рекламодателями
В общих чертах работа ОРД выглядит не так уж сложно, но дьявол кроется в мелочах. Нюансы того, как вся эта система будет функционировать, на старте были непонятны никому. Решение многих возникающих проблем пришлось искать совместными усилиями.
Взаимодействуя с конечными клиентами, ОРД дает обратную связь от клиентов в ЕРИР. Подстраиваясь под реальность, он дорабатывает свой API — действительно идет навстречу рынку. Эти изменения поступают в ОРД в виде новой спецификации, которую мы реализуем в своих решениях и транслируем клиентам через обновления.
Иногда в ответ на планы ЕРИР рынок говорит, что не сможет удовлетворить новым требованиям. И тогда они смягчаются или отодвигаются сроки, когда нужно обеспечить соответствие. Изредка нововведения даже откатываются назад. Например, недавно появилось требование описывать в отчетах содержимое изображений на рекламном баннере. Через некоторое время ЕРИР отменил данное требование, поскольку не все игроки рынка смогли перестроиться. Мы, кстати, это реализовали и научили этим пользоваться наших пользователей!
Так идет постоянный диалог, в результате которого система становится удобнее и устойчивее.
А что в перспективе
Скорее всего нам и дальше придется переподковывать эту лошадь на ходу. Объемы рекламы на рынке будут расти, но пока сложно прогнозировать, с какой скоростью. Ходят разные слухи про регуляторные изменения, и под них нам тоже придется подстраиваться.
Кроме того, для своего сервиса мы хотели бы реализовать единую точку входа (SSO), использовав решение, уже сертифицированное ФСТЭК. Параллельно продолжим двигаться в сторону микросервисов.
В следующем году обновим интерфейс личного кабинета. В планах разработка упрощенной версии для небольших компаний, а также отдельные приложения под мобильные платформы. Следите за нашими новостями!
Комментарии (3)
mixsture
16.01.2025 13:58Если мы попытаемся выключить сервера днем, то через минуту простоя в нашу поддержку посыпятся сообщения о том, что вываливаются ошибки 500 или 404.
Во всем этом движе потерялся один важный вопрос: кто покрывает убытки рекламного агентства, если по каким-то причинам не удается "зарегистировать" рекламу? Будь то выкатка обновления у ОРД или еще чего - не важно. Вот клиент не смог вовремя заказать рекламу у агентства из-за невозможности ее регистрации, ушел к другим - кто теперь агентству оплатит убытки, поиск нового клиента?
VMGYRAL
А у меня вопрос, как у мтс работает блокировщик рекламы? Я могу его подключить к домашнему интернету?