Архитектуру системы можно представить в виде четырех основных компонентов.
Events (Schema Registry & Data Catalog). Инструмент декларирования и описания аналитики. Позволяет объявлять типы событий и атрибуты, которые будут отправляться в аналитику из клиентских приложений, следить за актуальностью аналитики, ответственными, качеством интеграций.
SDK (IOS, Android, Web). SDK позволяет реализовать сбор и отправку аналитических событий с клиентских приложений. Одна из особенностей SDK Statist — статическая типизированность. Для каждого типа события у нас есть необходимая сигнатура функции с типизированными атрибутами, а все SDK версионируются по Semver при изменении структуры событий. Это возможно благодаря инструменту декларирования и описания аналитики Events.
Collector & Event Processing & Analytics Storage. Часть системы, которая обеспечивает надежную доставку событий и метрик в хранилище данных с момента получения их из клиентских приложений. В процессе доставки обрабатываются события и телеметрия: их валидация, обогащение информацией о геопозиции и устройстве и запись в хранилище для последующего анализа.
Visualization Tools — собственный UI-инструмент для анализа данных, где можно без специальных знаний SQL и подключения BI-инструментов создать отчет ad-hoc. Дополнительно можно использовать другие инструменты, которые есть в компании, для более детального анализа и изучения данных клиентской аналитики. Например, Helicopter (аналог Zeppelin), ETL и BI-инструменты.
Основной сценарий выглядит так: на уровне сервиса администрирования событий определяются любые продуктовые события. Далее с помощью SDK настраивается сбор и отправка объявленных событий в клиентских приложениях. Все данные из приложения поступают в коллектор событий. На следующем этапе они обрабатываются: валидация, обогащение и роутинг данных. В итоге данные поступают в аналитическое хранилище. Доступ к данным есть напрямую через запросы к базе данных и через собственный UI-инструмент с удобной визуализацией.