SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Как мы строили 
аналитическую платформу 
на несколько миллиардов 
событии в месяц 
Михаил Табунов 
Coub
Как мы строили аналитическую платформу на несколько миллиардов событии в месяц
Что такое Coub 
- Сервис про короткие зацикленные 
ролики 
- 50M MAU 
- 400M просмотров
Что такое Coub
Что такое события 
{ 
"type": "web_timeline_page_loaded", 
"timestamp": "2014-09-09T09:15:00Z", 
"ip": "91.203.67.55", 
"page_number": 1, 
"timeline_type": "profile" 
}
События 
- Нажал на кнопку - событие отправилось 
- У всех разная структура данных, трудно 
выделить какую-то четкую схему 
- Четыре основных клиента: Web сайт, Flash 
Player, iOS и Android.
Клиенты 
- Base64 транспорт 
- Batch отправка
Зачем это нужно 
- Самая честная статистика, с доступом к 
сырым данным 
- Для анализа и определения проблем 
компании 
- Для анализа поведения пользователей в 
продуктах
Готовые решения 
- Дорого на больших объемах (> 10K$) 
- Нет доверия к алгоритмам подсчета 
- Трудно работать с сырыми данными 
- Быстро и просто
Пишем свое 
- Непредсказуемый результат: вдруг 
не заработает 
- Неясные затраты 
- Покрывает абсолютно все 
возможные потребности в анализе 
данных
Требования 
- Сделать что-то быстро и просто 
- Иметь возможность делать простые счетчики: 
считать количество событий какого-то типа 
- Делать примитивную аналитику (фильтры, distinct) 
- Если ничего не выйдет - не страшно
Архитектура 
Log 
Collector 
NGINX 
Log 
Storage 
HTTP GET 
/rec.json?data=XXX 
ces.coub.com
Архитектура 
Log Storage 
ces.coub.com 
Postgres 
Ruby 
worker
Как хранятся данные 
CREATE TABLE events_2014_04_18 ( 
type character varying(255), 
datetime time without time zone, 
data hstore 
); 
CREATE INDEX index_events_2014_04_18_on_type 
ON events_2014_04_18 USING btree (type);
Старт эксплуатации 
- От первой строчки до старта в 
продакшн - 2 недели 
- Идея рабочая, пользоваться можно 
- Наконец появились требования и 
понимание что не так
Проблемы 
- Медленная аналитика (120-180 
секунд на запрос) 
- Ненадежно (одна машина, 
ненадежный storage) 
- Не масштабируемо (502, tcpconns, 
etc)
Требования v2 
- Данные важны - потерять нельзя ни в коем 
случае 
- Latency системы - не более 5 минут 
- Анализировать так быстро, как можем 
- Строить сложные группировки и нетипичные 
отчеты
Запись и 
хранение 
логов
Frontends 
Log Collector & 
Log Uploader 
NGINX 
HTTP GET 
/rec.json?data=XXX 
AWS S3 
f01.ces.coub.com; f02.ces.coub.com; f03.ces.coub.com
Log Fetching 
AWS S3 
Log 
Fetcher 
Analysis 
DB 
Solution 
Web 
Frontend 
Пользователи 
(Аналитики)
Чуть-чуть про node.js
Frontend логика 
- Добавляем ip, страну и всю meta 
через GeoIP (MaxMind) 
- Ставим куки 
- ces_session_last_visit 
- ces_session_visit_num 
- ces_session_visit_page 
- ces_seswion_total_pageviews
Анализ 
логов
Что рассматривали 
- HADOOP (+ Hive) 
- AWS Redshift 
- HP Vertica 
- Druid 
- Mongo 
- PG + hStore
Как выбирали 
- Скорость работы 
- Простота эксплуатации: 
- Просто поддерживать (комьюнити, 
узнаваемость) 
- Понятно хранит данные на диске
Простота Скорость Сумма 
Hadoop, Hive 1 2 3 
Redshift 3 5 8 
Vertica 2 5 7 
Druid 1 5 6 
PG 4 5 9 
Mongo 5 5 10
MongoDB 
- Простая и понятная архитектура 
- Сильное комьюнити, на любой вопрос 
есть ответ 
- Большой инструментарий для аналитики 
- Не навязывает какую-то определенную 
структуру данных
MongoDB: структура хранения 
[ 
{ 
"type": "web_timeline_page_loaded", 
"timestamp": "2014-09-09T09:15:00Z", 
}, 
{ 
"type": “fp_player_started”, 
"timestamp": "2014-09-10T09:15:00Z", 
}, 
{ 
"type": "fp_player_finished", 
"timestamp": "2014-09-10T09:15:00Z", 
} 
] 
- Тормозит 
пропорционально 
количеству событий 
- Каждый запрос - 
аггрегация
MongoDB: структура хранения 
{ 
"_id": {"$oid": "5408881ef7ca2f7995415b36"}, 
"event_type": "ios_editor_music_choosed", 
"is_full": false, 
"timestamp_minute": "2014-09-04T15:00:00Z", 
"events": [{…},{…}], 
“events_count": 2 
}
MongoDB 
- 101 тысяча документов за день. 
- 3 млн в месяц 
- Поминутное хранение событий 
- Быстро делает примитивные 
агрегаты 
- upsert для загрузки
Железо, нагрузки 
- Xeon E5 6 cores 
- 128GB RAM 
- 4TB RAID 
- 9 mongo nodes на 
машину 
2X
Железо, нагрузки 
- 40 млн событий в день, 1.2 млрд в месяц 
- 750-1250 новых событий в секунду 
- ~8 млн объектов в коллекции 
- 1 месяц ~ 600ГБ данных в Mongo
Веб фронтэнд
Лучшая аналитика - Excel
Юзкейсы и скорость работы 
- Сколько у нас загрузок плеера в украине вчера? 
- Интеграция аналитики в продукт 
- Куда пошли пользователи из фейсбука, 
попавшие на страницу коба? 
- Как часто в неделю люди пользуются лентой?
Что плохо 
- Когда данные не в памяти, все очень очень 
медленно 
- Не для всех отчетов такая структура данных 
годится 
- Mongo не может делать большие агрегаты в 
памяти (16MB limit)
Команда и цена 
- Backend: один я парттайм 
- Разработчики клиентов (Android, iOS) 
- 1100$ железо, трафик 
- 300$/месяц Amazon S3
Планы 
- Продуктовые Алерты 
- Real Realtime 
- Интеграция с Google Docs 
- Больше отчетов и user friendly
coub.com

Mais conteúdo relacionado

Mais procurados

Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaRoman Zykov
 
Новые нереляционные системы хранения данных
Новые нереляционные системы хранения данныхНовые нереляционные системы хранения данных
Новые нереляционные системы хранения данныхVsevolod Dyomkin
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Ontico
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
Highload2009 Top100 V3
Highload2009 Top100 V3Highload2009 Top100 V3
Highload2009 Top100 V3HighLoad2009
 
Нагруженный поиск на Sphinx
Нагруженный поиск на SphinxНагруженный поиск на Sphinx
Нагруженный поиск на SphinxRoman Pavlushko
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Ontico
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Ontico
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектsportgid
 
Как устроено API в AppMetrica
Как устроено API в AppMetricaКак устроено API в AppMetrica
Как устроено API в AppMetricaAppTractor
 
Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"Fwdays
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...HappyDev
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Ontico
 

Mais procurados (16)

Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Новые нереляционные системы хранения данных
Новые нереляционные системы хранения данныхНовые нереляционные системы хранения данных
Новые нереляционные системы хранения данных
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Highload2009 Top100 V3
Highload2009 Top100 V3Highload2009 Top100 V3
Highload2009 Top100 V3
 
Нагруженный поиск на Sphinx
Нагруженный поиск на SphinxНагруженный поиск на Sphinx
Нагруженный поиск на Sphinx
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
 
Как снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проектКак снизить нагрузку на высокопосещаемый проект
Как снизить нагрузку на высокопосещаемый проект
 
Как устроено API в AppMetrica
Как устроено API в AppMetricaКак устроено API в AppMetrica
Как устроено API в AppMetrica
 
Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"
 
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
10 HappyDev-lite'14 Иван Погудин, Анатолий Никулин. Решение задач, связанных...
 
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
Разработка аналитической системы для высоконагруженного медиа, Олег Новиков, ...
 

Destaque

Описание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaОписание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaAndrey Karpov
 
Andrei Kirilenkov. Vertica
Andrei Kirilenkov. VerticaAndrei Kirilenkov. Vertica
Andrei Kirilenkov. VerticaVolha Banadyseva
 
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...Ontico
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеIT Share
 
Как мы считали трафик на Вертике, Николай Голов (Avito)
Как мы считали трафик на Вертике, Николай Голов (Avito)Как мы считали трафик на Вертике, Николай Голов (Avito)
Как мы считали трафик на Вертике, Николай Голов (Avito)Ontico
 
Масштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWSМасштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWSz-tech
 
Консолидированная система мониторинга на HP BSM
Консолидированная система мониторинга на HP BSMКонсолидированная система мониторинга на HP BSM
Консолидированная система мониторинга на HP BSMi-Teco & Vitte Consulting
 
Short Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe VerticaShort Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe VerticaAndrey Karpov
 
SQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений НедашковскийSQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений НедашковскийHackIT Ukraine
 
NOW! Intelligent Mobility Cloud October 2014
NOW! Intelligent Mobility Cloud October 2014NOW! Intelligent Mobility Cloud October 2014
NOW! Intelligent Mobility Cloud October 2014NOW! Innovations
 
AWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing PerformanceAWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing PerformanceAmazon Web Services
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
CROSS Development Group
CROSS Development Group CROSS Development Group
CROSS Development Group amarinskih
 
Code for America 2011 Projects Overview
Code for America 2011 Projects OverviewCode for America 2011 Projects Overview
Code for America 2011 Projects OverviewCode for America
 
Growing a digital social innovation ecosystem for Europe
 Growing a digital social innovation ecosystem for Europe Growing a digital social innovation ecosystem for Europe
Growing a digital social innovation ecosystem for EuropeAntonio Sánchez Zaplana
 
SIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in Turkey
SIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in TurkeySIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in Turkey
SIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in TurkeySocial Innovation Exchange
 
What's Your Story? Designing Social Media Engagment
What's Your Story? Designing Social Media EngagmentWhat's Your Story? Designing Social Media Engagment
What's Your Story? Designing Social Media EngagmentEve Simon
 

Destaque (20)

Описание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaОписание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP Vertica
 
Andrei Kirilenkov. Vertica
Andrei Kirilenkov. VerticaAndrei Kirilenkov. Vertica
Andrei Kirilenkov. Vertica
 
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
 
Обзор HP Vertica
Обзор HP VerticaОбзор HP Vertica
Обзор HP Vertica
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
Как мы считали трафик на Вертике, Николай Голов (Avito)
Как мы считали трафик на Вертике, Николай Голов (Avito)Как мы считали трафик на Вертике, Николай Голов (Avito)
Как мы считали трафик на Вертике, Николай Голов (Avito)
 
Масштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWSМасштабирование социальных приложений с помощью AWS
Масштабирование социальных приложений с помощью AWS
 
Консолидированная система мониторинга на HP BSM
Консолидированная система мониторинга на HP BSMКонсолидированная система мониторинга на HP BSM
Консолидированная система мониторинга на HP BSM
 
Short Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe VerticaShort Infrastructure Overview ru hpe Vertica
Short Infrastructure Overview ru hpe Vertica
 
SQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений НедашковскийSQL Server Security Best Practices - Евгений Недашковский
SQL Server Security Best Practices - Евгений Недашковский
 
Обзор компонентов HP BSM
Обзор компонентов HP BSMОбзор компонентов HP BSM
Обзор компонентов HP BSM
 
NOW! Intelligent Mobility Cloud October 2014
NOW! Intelligent Mobility Cloud October 2014NOW! Intelligent Mobility Cloud October 2014
NOW! Intelligent Mobility Cloud October 2014
 
AWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing PerformanceAWS July Webinar Series: Amazon Redshift Optimizing Performance
AWS July Webinar Series: Amazon Redshift Optimizing Performance
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
CROSS Development Group
CROSS Development Group CROSS Development Group
CROSS Development Group
 
Code for America 2011 Projects Overview
Code for America 2011 Projects OverviewCode for America 2011 Projects Overview
Code for America 2011 Projects Overview
 
Progressive Era Cartoons
Progressive Era CartoonsProgressive Era Cartoons
Progressive Era Cartoons
 
Growing a digital social innovation ecosystem for Europe
 Growing a digital social innovation ecosystem for Europe Growing a digital social innovation ecosystem for Europe
Growing a digital social innovation ecosystem for Europe
 
SIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in Turkey
SIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in TurkeySIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in Turkey
SIE in Berlin - Matthais Scheffelmeier on supporting entrepreneurs in Turkey
 
What's Your Story? Designing Social Media Engagment
What's Your Story? Designing Social Media EngagmentWhat's Your Story? Designing Social Media Engagment
What's Your Story? Designing Social Media Engagment
 

Semelhante a Как мы строили аналитическую платформу на несколько миллиардов событии в месяц

Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
 
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Coub
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Mail.ru Group
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеBadoo Development
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Ontico
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеYulia Kotova
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрsportgid
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Igor Miniailo
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...Ontico
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Tanya Denisyuk
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik HimiranovFwdays
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...it-people
 
Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.Oleg Kwerty
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...IT-Portfolio
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruOntico
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Tanya Denisyuk
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАНit-people
 

Semelhante a Как мы строили аналитическую платформу на несколько миллиардов событии в месяц (20)

Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцМихаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяц
 
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
Как мы строили аналитическую платформу на несколько миллиардов событии в меся...
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...Особенности работы backend для мобильных приложений или Python Django UWSGI в...
Особенности работы backend для мобильных приложений или Python Django UWSGI в...
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
Near-realtime аналитика событий в высоконагруженном проекте / Александр Краше...
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центрМониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
Мониторинг веб-проектов: штаб оперативного реагирования и аналитический центр
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
 
Diplom
DiplomDiplom
Diplom
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
 
Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.Dev {highload}. When you should do your own db.
Dev {highload}. When you should do your own db.
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Когда сто...
 
Борис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ruБорис Каплуновский, Aviasales.ru
Борис Каплуновский, Aviasales.ru
 
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
Денис Колошко, Пример нагруженной системы на базе продуктов Microsoft, Amazon...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 

Как мы строили аналитическую платформу на несколько миллиардов событии в месяц

  • 1. Как мы строили аналитическую платформу на несколько миллиардов событии в месяц Михаил Табунов Coub
  • 3. Что такое Coub - Сервис про короткие зацикленные ролики - 50M MAU - 400M просмотров
  • 5. Что такое события { "type": "web_timeline_page_loaded", "timestamp": "2014-09-09T09:15:00Z", "ip": "91.203.67.55", "page_number": 1, "timeline_type": "profile" }
  • 6. События - Нажал на кнопку - событие отправилось - У всех разная структура данных, трудно выделить какую-то четкую схему - Четыре основных клиента: Web сайт, Flash Player, iOS и Android.
  • 7. Клиенты - Base64 транспорт - Batch отправка
  • 8. Зачем это нужно - Самая честная статистика, с доступом к сырым данным - Для анализа и определения проблем компании - Для анализа поведения пользователей в продуктах
  • 9. Готовые решения - Дорого на больших объемах (> 10K$) - Нет доверия к алгоритмам подсчета - Трудно работать с сырыми данными - Быстро и просто
  • 10. Пишем свое - Непредсказуемый результат: вдруг не заработает - Неясные затраты - Покрывает абсолютно все возможные потребности в анализе данных
  • 11. Требования - Сделать что-то быстро и просто - Иметь возможность делать простые счетчики: считать количество событий какого-то типа - Делать примитивную аналитику (фильтры, distinct) - Если ничего не выйдет - не страшно
  • 12. Архитектура Log Collector NGINX Log Storage HTTP GET /rec.json?data=XXX ces.coub.com
  • 13. Архитектура Log Storage ces.coub.com Postgres Ruby worker
  • 14. Как хранятся данные CREATE TABLE events_2014_04_18 ( type character varying(255), datetime time without time zone, data hstore ); CREATE INDEX index_events_2014_04_18_on_type ON events_2014_04_18 USING btree (type);
  • 15. Старт эксплуатации - От первой строчки до старта в продакшн - 2 недели - Идея рабочая, пользоваться можно - Наконец появились требования и понимание что не так
  • 16. Проблемы - Медленная аналитика (120-180 секунд на запрос) - Ненадежно (одна машина, ненадежный storage) - Не масштабируемо (502, tcpconns, etc)
  • 17. Требования v2 - Данные важны - потерять нельзя ни в коем случае - Latency системы - не более 5 минут - Анализировать так быстро, как можем - Строить сложные группировки и нетипичные отчеты
  • 19. Frontends Log Collector & Log Uploader NGINX HTTP GET /rec.json?data=XXX AWS S3 f01.ces.coub.com; f02.ces.coub.com; f03.ces.coub.com
  • 20. Log Fetching AWS S3 Log Fetcher Analysis DB Solution Web Frontend Пользователи (Аналитики)
  • 22. Frontend логика - Добавляем ip, страну и всю meta через GeoIP (MaxMind) - Ставим куки - ces_session_last_visit - ces_session_visit_num - ces_session_visit_page - ces_seswion_total_pageviews
  • 24. Что рассматривали - HADOOP (+ Hive) - AWS Redshift - HP Vertica - Druid - Mongo - PG + hStore
  • 25. Как выбирали - Скорость работы - Простота эксплуатации: - Просто поддерживать (комьюнити, узнаваемость) - Понятно хранит данные на диске
  • 26. Простота Скорость Сумма Hadoop, Hive 1 2 3 Redshift 3 5 8 Vertica 2 5 7 Druid 1 5 6 PG 4 5 9 Mongo 5 5 10
  • 27. MongoDB - Простая и понятная архитектура - Сильное комьюнити, на любой вопрос есть ответ - Большой инструментарий для аналитики - Не навязывает какую-то определенную структуру данных
  • 28. MongoDB: структура хранения [ { "type": "web_timeline_page_loaded", "timestamp": "2014-09-09T09:15:00Z", }, { "type": “fp_player_started”, "timestamp": "2014-09-10T09:15:00Z", }, { "type": "fp_player_finished", "timestamp": "2014-09-10T09:15:00Z", } ] - Тормозит пропорционально количеству событий - Каждый запрос - аггрегация
  • 29. MongoDB: структура хранения { "_id": {"$oid": "5408881ef7ca2f7995415b36"}, "event_type": "ios_editor_music_choosed", "is_full": false, "timestamp_minute": "2014-09-04T15:00:00Z", "events": [{…},{…}], “events_count": 2 }
  • 30. MongoDB - 101 тысяча документов за день. - 3 млн в месяц - Поминутное хранение событий - Быстро делает примитивные агрегаты - upsert для загрузки
  • 31. Железо, нагрузки - Xeon E5 6 cores - 128GB RAM - 4TB RAID - 9 mongo nodes на машину 2X
  • 32. Железо, нагрузки - 40 млн событий в день, 1.2 млрд в месяц - 750-1250 новых событий в секунду - ~8 млн объектов в коллекции - 1 месяц ~ 600ГБ данных в Mongo
  • 35. Юзкейсы и скорость работы - Сколько у нас загрузок плеера в украине вчера? - Интеграция аналитики в продукт - Куда пошли пользователи из фейсбука, попавшие на страницу коба? - Как часто в неделю люди пользуются лентой?
  • 36. Что плохо - Когда данные не в памяти, все очень очень медленно - Не для всех отчетов такая структура данных годится - Mongo не может делать большие агрегаты в памяти (16MB limit)
  • 37. Команда и цена - Backend: один я парттайм - Разработчики клиентов (Android, iOS) - 1100$ железо, трафик - 300$/месяц Amazon S3
  • 38. Планы - Продуктовые Алерты - Real Realtime - Интеграция с Google Docs - Больше отчетов и user friendly