R50 8a79169a10117b50a06494561d29a7de
Разработка IT продуктов

KnowCTR - Аналитика баннеров

Добавлено 10 мар 2022 в 17:04
Стек и технологии:
  • Node.js
  • Nginx
  • Fastify
  • Clickhouse
  • Redis
  • Yandex Message Queue
  • Yandex Cloud Functions
  • Docker
  • Typescript
  • Gatsby
  • React
  • SCSS
  • Адаптивная верстка
Было сделано:
  • Спроектировали архитектуру для выдерживания большого числа запросов
  • Разработали Backend и Frontend часть
  • Развернули на сервере и подключили домен
Для заказчика был разработан внутренний микросервис для отслеживания просмотров и кликов по своим баннерам. Баннеры размещаются на различных сайтах, с которыми сотрудничает заказчик напрямую, без использования рекламных систем (google adwords, yandex direct и т. д.).
Данный сервис оценивает CTR с помощью доверительного интервала и определяет статистически значимую разницу между CTR баннеров, чтобы определить наиболее эффективный. Сервис разрабатывался исключительно для внутреннего использования заказчиком, но также доступен и для всего мира.

Основной упор в работе делался на Backend, была разработана отказоустойчивая система.
Просмотры и клики сохраняются в БД Clickhouse, которая наилучшим образом подходит для данной задачи, так как способна перерабатывать терабайты данных, отвечать быстро на запросы и хранить в сжатом виде все клики и просмотры. Сервис способен выдерживать неограниченную нагрузку в плане просмотров и кликов. Используется очередь сообщений Yandex Message Queue. Все просмотры и клики сначала попадают в очередь, затем в фоновом режиме обрабатываются пачками и сохраняются в БД. Все баннеры в формате HTML5. Просмотры и клики баннеров отслеживаются собственным счетчиком, который вставляется в код баннера, в счетчике указывается его ID для разделения просмотров и кликов. Клиентская часть разработана на Gatsby.js. Доступ к статистике осуществляется по секретному ключу.

В целях сохранения коммерческой тайны и конфиденциальности заказчика были размыты чувствительные данные.
6ba6a21d4e 9017a150af 94197e1434 B0a08ddde0