SlideShare a Scribd company logo
1 of 54
Download to read offline
Построение системы аналитики
в условиях agile разработки
Кто я? Что делаю?
О чем поговорим
• Зачем строить свою дата платформу
• Архитектура «типового» решения для сбора и обработки данных
• Как построить систему аналитики без штата data-engineer
• Про наш опыт наращивания экспертизы и итеративного
внедрения
Какая задача стояла
• Сбор данных о действиях пользователей с «вечным» хранением
• Проводить детальный анализ результатов АБ-тестов
Какие решения существуют
• Google Analy+cs, Я.Метрика и т.д.
Какие решения существуют
• Google Analy+cs, Я.Метрика и т.д.
• Быстрый старт в продуктовой аналитике для проекта
• Семплирование, но можно бороться
• Сложно строить гибкие агрегации
• Сложность анализа доходности
• 5-10% данных терялось
Какие решения существуют
• Google Analy+cs, Я.Метрика и т.д.
• Платные SaaS решения
Google Analy+cs 360, Op+mizely, MixPanel, SnowPlow
• Писать в логи или RDBMS
• Платформа для обработки данных
Clickstream, Data-pipeline, Data lake и другие Data*
Чего не хватало
• Простоты работы с данными для аналитиков
• Надежная доставка данных
• Валидация
• Контроль потерь
• Анализ действий пользователей по каждой сессии
• Проводить аналитику АБ-тестов на «сырых» данных
• Источника данных для рекомендательной системы
Какие решения существуют
• Google Analy+cs, Я.Метрика и т.д.
• Платные SaaS решения
Google Analy+cs 360, Op+mizely, MixPanel, SnowPlow
• Писать в логи или RDBMS
• Платформа для обработки данных
Clickstream, Data-pipeline, Data lake и другие Data*
А как делают другие?
Типовая платформа для обработки данных
Или такая….
С чего начать?
Компоненты платформы обработки данных
Компоненты платформы обработки данных
• Data WareHouse (DWH)
• Долгосрочное хранилище данных
• Распределенность
• Масштабирование
• Низкие требования к скорости выборок
Примеры: Amazon S3, HDFS, HP Vertica
Компоненты платформы обработки данных
• Быстрый доступ к данным
• Гибкие условия выборок
• Источник данных для отчетов
• Доступно ограниченное окно
исторических данных
• Ненормализованные данные
Примеры: MySQL, PostgreSQL, Clickhouse и
пр.
Компоненты платформы обработки данных
• Extract, Transform, Load (ETL)
• Валидация
• Обогащение данных
• Сбор метрик о качестве данных
Пример: NiFi, Spark Streaming,
Gobblin и т.д.
Компоненты платформы обработки данных
• Высокие требования к скорости
записи
• Резервирование
• Подушка безопасности
Пример: Kafka, RabbitMQ, Redis
и другие *MQ
Компоненты платформы обработки данных
Клиентские библиотеки для отправки
данных в API платформы.
Пример: JS-код Яндекс.Метрики,
PHP-клиент для отправки данных в
REST API.
Без чего не может существовать система?
Без хранилища!
О данных
• Цепочки действий пользователей с привязкой к дате
• Вопрос на которые хотим получать ответы:
• Сколько действий совершили за период?
• Сколько уникальных пользователей совершило действие за период?
• Какая конверсия была в воронке продаж?
Дополнительные требования к хранилищу
• Получить наиболее универсальное решение
• Возможность получить все действия одного
пользователя или сегмента пользователей
(фасетный поиск)
• Запрос данных о прохождении пользователей по
воронке без выгрузки всех данных
• Простота внедрения и эксплуатации
Выбор хранилища
• MySQL или другие RDBMS - сложность в
построении real>me-отчетов, сложно
масштабировать
• Аналитические базы Ver>ca - хорошо, но дорого
• Clickhouse – еще был слишком мал
• Greenplum
• Elas>cSearch
Elas%cSearch
• Документно-ориентированное хранилище
• Near Real Time (NRT)
• Распределенное решения для полнотекстового поиска ... а еще
аналитическое хранилище
• Гибкие возможности для партиционирования
• Экосистема kibana, logstash и прочие
• Разработан на базе Lucene и написан на Java
• Free + Open source. Аналоги: Solr, Sphinx
Ограничения Elas/cSearch
• Нет транзакций
• Медленная консистентная запись
• Нет контроля связей
• Нет JOINов, в классическом понимании
Хранилище же уже есть, давайте писать!
Осторожно, прототип!
• Подготовка структуры в основном процессе
Осторожно, прототип!
• Подготовка структуры в основном процессе
Осторожно, прототип!
• Подготовка структуры в основном процессе
• … и тут пришли аналитики
Мы знаем что делать…нам нужна очередь!
• RabbitMQ
• Ka)a, *MQ
• Redis
Чем будем «грузить» данные?
• Logstash
• ETL-framework
• Решили задачу на PHP J
Первая тестовая эксплуатация
Начали получать пользу
Поработаем над надежностью?
Сделали хранилище надежнее
• Кластер из 3-ех нод
• Но есть проблемка…скорость записи упала
больше чем в 2 раза
Ускоряем запись
• Запись через Bulk API – возможны потери
• 3-и бекенда + pcntl_fork
Обновление данных
Частичное изменение документов через script в Update API
Надежность очереди
• НЕ использовали кластер
• Несколько попыток на подключение
Готовое решение
С какими проблемами столкнулись
• Redis уже не хватает, с появлением нескольких точек назначения
Организация очередей внутри redis
Организация очередей внутри redis
С какими проблемами столкнулись
• Redis уже не хватает, с появлением нескольких точек назначения
• Индекс «распух» и нам пришлось переиндексировать данные
Была такая структура данных
Как сделать правильно
С какими проблемами столкнулись
• Redis уже не хватает, с появлением нескольких точек назначения
• Индекс «распух» и нам пришлось переиндексировать данные
• Хранилище без гарантированного SLA, но должно пониматься
быстро
Что имеем сейчас
Наша система сбора данных для анализа (ClickStream):
• ~ 7.5TB данных
• 12 млрд. документов
• В среднем 20 т. записей в минуту, бывают пики до 40 т.
(23 млн. в месяц)
• Кластер с данными: 9 node, 8 CPU, 64 RAM, SSD 12 TB
Команда:
• 5 продуктовых команд
• 10+ аналитиков
• 2 data-инженера
К чему пришли
• Имеем рабочую платформу для сбора данных
• Прожили на такой платформе ~3 года
• Понимание наших потребностей по работе с данными
• Итеративный подход - работает!
• Любая инфраструктура временная
• Приступили к построению новой версии платформы…
weberdever
weberdever
sereda@tutu.ru
Илья Середа
Спасибо за внимание!
weberdever
weberdever

More Related Content

What's hot

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
it-people
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
Roman Zykov
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Ontico
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Ontico
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
2ГИС Технологии
 

What's hot (20)

Clickhouse
ClickhouseClickhouse
Clickhouse
 
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий КузьминClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
 
Анализируем данные с Clickhouse
Анализируем данные с  ClickhouseАнализируем данные с  Clickhouse
Анализируем данные с Clickhouse
 
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
Брокер сообщений Kafka в условиях повышенной нагрузки / Артём Выборнов (Rambl...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событийShadow Fight 2: архитектура системы аналитики для миллиарда событий
Shadow Fight 2: архитектура системы аналитики для миллиарда событий
 
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
Бигдата — как добывать золото из данных / Александр Сербул (1С-Битрикс)
 
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
Что нужно знать об архитектуре ClickHouse / Алексей Зателепин (Яндекс)
 
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
Применение в Enterprise-приложении графовой базы данных Neo4j - Антон Максимо...
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
«Дорожная сеть в графовой базе данных Neo4j» — Вадим Шашенко, 2ГИС
 
Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015Александр Киров — Acronis — ICBDA 2015
Александр Киров — Acronis — ICBDA 2015
 
Cергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИСCергей Коржнев, 2ГИС
Cергей Коржнев, 2ГИС
 
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
"OLAP с помощью Postgres (как мы строили BI)" Фефелов Андрей, Mastery.pro
 

Similar to Построение системы аналитики

Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
Andrey Korshikov
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Badoo Development
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
Ontico
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
Andrey Korshikov
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 

Similar to Построение системы аналитики (20)

Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
SQL Server Analysis Services 2014: табличная модель - альтернатива кубам?
 
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
Доклад Сергея Аверина на DevConf 2013. "Распространенные ошибки применения ба...
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Sivko
SivkoSivko
Sivko
 
Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)Виталий Гаврилов (Ленвендо)
Виталий Гаврилов (Ленвендо)
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данныхРаспространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
 
доклад на вмк 15.10.2015
доклад на вмк 15.10.2015доклад на вмк 15.10.2015
доклад на вмк 15.10.2015
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
 
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
 
как из трех стоек сделать две.
как из трех стоек сделать две.как из трех стоек сделать две.
как из трех стоек сделать две.
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 

Построение системы аналитики