Стек и технологии:
- 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. Доступ к статистике осуществляется по секретному ключу.
В целях сохранения коммерческой тайны и конфиденциальности заказчика были размыты чувствительные данные.