Об этом проекте
Это serverless-конструкция AWS CDK для веб-аналитики, которая разворачивает полнофункциональное решение «всё в одном» на AWS. Она создаёт фронтенд-дашборд, бэкенд-API и конвейеры приёма данных для отслеживания трафика и взаимодействия пользователей с сайтом. Предназначена для сайтов с низкой и средней нагрузкой (до 10 млн просмотров страниц в день) и делает акцент на минимальной стоимости, конфиденциальности (не хранятся персональные данные) и простоте развёртывания.
Возможности включают отслеживание просмотров страниц с измерением времени на странице, трекинг событий, обнаружение аномалий с оповещениями, поддержку пользовательских доменов и три варианта аутентификации (отсутствие, базовая аутентификация, AWS Cognito). Отслеживаются рефереры, географическое положение по стране и городу, тип устройства, параметры UTM и параметры запроса. Встроена детекция ботов.
Архитектура состоит из фронтенда на Vue 3, размещённого на S3/CloudFront; бэкенда на TypeScript, использующего Lambda Function URLs и tRPC; и API приёма, который буферизует события через Kinesis Firehose и записывает их в партиционированные Parquet-файлы в S3. Для запросов к данным используется Athena. Геолокационные данные получаются из MaxMind GeoLite2 без хранения IP-адресов.
Для развёртывания требуются aws-cdk и aws-cdk-lib версии выше 2.79.1. После установки npm-пакета разработчик определяет конструкцию в своём CDK-стеке, настраивая сайты, источники, аутентификацию, домен, наблюдаемость и обнаружение аномалий. На стороне клиента необходимо добавить тег скрипта или инициализировать SDK в приложении.
Предоставлены оценки стоимости для различных уровней трафика; проектные значения worst-case значительно превышают фактические расходы из-за ежедневных процессов очистки данных. Переход с v0 на v1 включает breaking changes, связанные с партиционированием и ID DNS-записей.
Документация включает решения по архитектуре, правила участия в разработке и подробные сметы расходов. Доступен живой демо-проект.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.