Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Новая архитектура Спайлога  Сергей Скворцов .masterhost 2008-09-22 $Revision::  56  $
SpyLog   – о компании  Система интернет-статистики и аналитики  Компания работает с 1999 года; в 2007 вошла в состав  ГК «Мастерхост»   В первую очередь для: Владельцев сайтов и их маркетологов Веб-разработчиков Специалистов по рекламе
Содержание Введение: предметная область Постановка задачи Архитектура
Введение: предметная область
Базовые сущности – взгляд пользователя Посетитель VisitorID -  3 rd -party cookie Счётчик JavaScript– код   и/или картинка ( pixel  или «кнопка») Ваш сайт Как правило, 1 сайт = 1 счётчик Отчёты  (статистика)
Как это работает? Вы регистрируете  счётчик , размещаете его  код  на своём  сайте Посетители  ходят по сайтам (в т.ч. по вашему), делают  переходы Мы собираем данные и генерируем для вас  статистику
Статистика - основные термины WAA – Web Analytics Associations Page –  страница Точка входа, точка перехода, точка выхода Page View  – просмотр страницы Session  - сессия Visitor –  посетитель Новый, повторный, возвращающийся, уникальный и т.п.
Какие данные собираем? Без   JavaScript  – базовые данные : Timestamp –  дата и время URI  страниц UserAgent  ->   браузеры ,  ОС IP address  ->   география,  AS Cookie  ->  VisitorID
Какие данные собираем? C   JavaScript  – технометрику и переходы : Разрешение монитора, число цветов Наличие / версия  Flash, Java Timezone Referrer  перехода
Статистика:  что считаем? Посетители : Количество Откуда пришли, куда ушли Как часто ходят, где (пути по сайту) Сколько времени провели На какую рекламу кликали –  OpenStat
Статистика:  что считаем? Прочее : ОС Браузеры География Технометрика Поисковые запросы и т.д.
SpyLOG : немного чисел ~ 22 0 млн .  pageview в день ~ 5.4 T B  данных за месяц ~ 1.4  GB  отчетов за день охват аудитории: ~ 30  млн.  посетителей в неделю ~ 84 млн.  посетителей в месяц из них  ~ 40 млн.  – из России
Постановка задачи
Зачем нужно что-то новое?  Жизненный цикл архитектуры 3-5  лет – средний срок  смены  архитектуры в динамично растущем проекте Меняются требования рынка Меняются технологические среда и окружение
Зачем нужно что-то новое?  - 2 Legacy codebase 9 лет разработок, несколько поколений программистов Код: от палеолита до неолита Проблема с  change management Рефакторинг: был невозможен не только для кода, но и для архитектуры
Новая жизнь с понедельника! Не всё так просто – есть условия и ограничения: Обеспечить работоспособность веб-службы Обратная совместимость со старыми счётчиками Обеспечить плавную (==плановую) замену подсистем Обеспечить возможность миграции данных
Новые цели и ориентиры Появляется много архитектурных идей Как структурировать   и фильтровать? Атрибуты качества  архитектуры Как критерии и обоснование, почему делаем именно так, а не иначе Новые фичи, убиение некоторых старых Неизбежные  компромиссы
Атрибуты качества Готовность (Availability) Производительность (Performance) Модифицируемость (Modifiability) Безопасность (Security) Сопровождаемость (Maintainability) Концептуальная целостность (Conceptual integrity)
Архитектура + проектирование / дизайн и немного о реализации
Общая схема архитектуры
Источники  данных Forwarder’ ы Взаимодействие со Старым Спайлогом Передача данных в  кластер Логи виртуального хостинга Замена  webalyzer, analog, awstats  и т.п. Почтовые логи (недалёкое будущее)
Выходные  данные Интернет-статистика, рейтинги сайтов www.spylog.ru Глобальная статистика и мониторинги рынков Интернет-аналитика Аналитические отчёты   на заказ Ad-hoc  запросы ( data mining) Партнёрские сервисы -  COMCON
Пример  ad-hoc   запросов Какой процент посетителей обновили браузеры на  Google Chrome? Просто интересно :) На какие ещё сайты ходит аудитория сайта  XXX? т.е. Медиапланирование Самые интересные запросы превращаются в отчёты Или публикуются в Глобальной Статистике
NG-Forwarder   или  Forwarder - NG Написан на основе  nginx 0.7.x Большой резерв мощности Можем *  считать 38 Яндексов и ещё один портальчег Полностью обратно-совместим со старой системой Бинарный протокол и всё такое Данные в  кластер  передаются в виде просто текстовых логов
Forwarder :  асинхронный счётчик
Асинхронный счётчик:  JS ДАЖЕ НЕ ПЫТАЙТЕСЬ ПРОЧЕСТЬ ЭТОТ СЛАЙД <script type=&quot;text/javascript&quot;> var spylog   =   { counter:  NNN ,  next: spylog  }; document.write(unescape('%3Cscript src=&quot;http‘ + (('https:' == document.location.protocol) ? 's' : '') + '://counter.spylog.com/cnt.js&quot;  defer=&quot;defer&quot; %3E%3C/script%3E')); </script>
Асинхронный  счётчик Оптимизирован под высоконагруженные сайты Без  (!) картинки Максимально быстрая загрузка Отложенный   parsing ( defer  -  IE ) Несколько  экземпляров счётчика на странице Разумеется,  HTTPS
Счётчик с  картинкой
Forwarder:   атрибуты качества Готовность Самая критичная подсистема 100% uptime,  минимальное время реакции Производительность Максимальная ( state machine rocks!) Stateless frontends  ->   горизонтальное  масштабирование
Forwarder & DNS:  разнесение Зачем? Отказоустойчивость (ДЦ: падение /потеря связи /перегрев) Быть ближе к посетителю Варианты: DNS  -  split horizon  (views)  по  AS BGP  – IP Anycast Routing Фильтруют анонсы Только  UDP
Forwarder:  детали Форвардеры ходят парами FreeBSD + CARP Резервирование и балансировка нагрузки Вся текущая нагрузка держится 2-мя серверами в  ДЦ Мастерхоста Load averages: 0.80 Сейчас ставим ещё   пару - в Голландии Хотите,  поставим у вас ?
GeoDB  –  БД по географии и  AS Forwarders  –  резолвинг во время запроса (ngx_http_geo_module) Web Services  –  лишь в качестве справочника Т.е. нет центральной  online database Несколько источников данных, верификация, регулярные обновления
Кластер :  вычисления Map/Reduce Функциональный подход Используется в  Google Мы взяли  open-source  реализацию: Hadoop Используется в  Yahoo!, Facebook, etc. Детали – в  отдельном докладе
Map / Reduce
Кластер :  хранение данных DFS  – Distributed File System Стандартная  HDFS   в  Hadoop Рассматривались другие: Lustre  – POSIX-compatible;  идёт портирование под  FreeBSD KosmosFS  –  есть интеграция с  Hadoop GlusterFS В будущем может и сменим  HDFS  на другое
Кластер :  роли серверов
Кластер:  атрибуты качества Отказоустойчивость  через резервирование Расчёт на ожидаемость падения  data-nodes Гетерогенные сервера Простота  эксплуатации (сопровождаемость) Установка   ОС   через  PXE,  развёртывание образа – и запуск!
Кластер:  железо 12  серверов : 2  CPU x  4 -Core;  8 GB RAM;  6 TB HDD 1Gbit network FreeBSD 7.0 amd64 Storage: gjournal + gmirror Раньше был  ZFS (raidz),  но высокую  IO  нагрузку не потянул Резервирование на уровне  HDFS  (3  реплики)
Web Services:  общая схема
REST API:  атрибуты качества U niform interface   –  HTTP Простота и очевидность кодирования / использования Слоевая архитектура Отделение клиентской веб-части от ресурсов/данных Кэшируемость Важно как  API , так и для  AJAX / Flash Statelessness  ->  load balancing Как итог – хорошая  масштабируемость
REST API  -  открытый Можете  напрямую  получать свою статистику или даже  чужую , если она публично доступна :) Mashup  –  можете строить свои сервисы, использующие наши  API Поддержка протокола  OAuth   – что безопасно для конечного пользователя
Web Services:  типичный дизайн OS –  FreeBSD Всё внутри  jails Минимум 2  instance  серверов  (CARP) Frontend –  nginx Application backends –   Catalyst  ( Perl ) RDBMS –  PostgreSQL Репликация или нет – зависит от приложения Иногда в БД вообще нет нужды
Инфраструктура Гетерогенные сервера ОС, железо Кластер – в одном ДЦ Связность между ДЦ – 10 Gbit Forwarders В разных ДЦ Сервера для веб-сервисов – где угодно
Итак, когда? Рассказ был про  архитектуру Реализация  в самом разгаре В октябре 2008 выходит новый сайт: trends.spylog.ru Далее, по очереди, заменяются все старые сервисы на  новые Ждите новостей!
Вопросы? ( по теме доклада) Сергей Скворцов [email_address]

More Related Content

New SpyLOG architechture (Highload 2008)

  • 1. Новая архитектура Спайлога Сергей Скворцов .masterhost 2008-09-22 $Revision:: 56 $
  • 2. SpyLog – о компании Система интернет-статистики и аналитики Компания работает с 1999 года; в 2007 вошла в состав ГК «Мастерхост» В первую очередь для: Владельцев сайтов и их маркетологов Веб-разработчиков Специалистов по рекламе
  • 3. Содержание Введение: предметная область Постановка задачи Архитектура
  • 5. Базовые сущности – взгляд пользователя Посетитель VisitorID - 3 rd -party cookie Счётчик JavaScript– код и/или картинка ( pixel или «кнопка») Ваш сайт Как правило, 1 сайт = 1 счётчик Отчёты (статистика)
  • 6. Как это работает? Вы регистрируете счётчик , размещаете его код на своём сайте Посетители ходят по сайтам (в т.ч. по вашему), делают переходы Мы собираем данные и генерируем для вас статистику
  • 7. Статистика - основные термины WAA – Web Analytics Associations Page – страница Точка входа, точка перехода, точка выхода Page View – просмотр страницы Session - сессия Visitor – посетитель Новый, повторный, возвращающийся, уникальный и т.п.
  • 8. Какие данные собираем? Без JavaScript – базовые данные : Timestamp – дата и время URI страниц UserAgent -> браузеры , ОС IP address -> география, AS Cookie -> VisitorID
  • 9. Какие данные собираем? C JavaScript – технометрику и переходы : Разрешение монитора, число цветов Наличие / версия Flash, Java Timezone Referrer перехода
  • 10. Статистика: что считаем? Посетители : Количество Откуда пришли, куда ушли Как часто ходят, где (пути по сайту) Сколько времени провели На какую рекламу кликали – OpenStat
  • 11. Статистика: что считаем? Прочее : ОС Браузеры География Технометрика Поисковые запросы и т.д.
  • 12. SpyLOG : немного чисел ~ 22 0 млн . pageview в день ~ 5.4 T B данных за месяц ~ 1.4 GB отчетов за день охват аудитории: ~ 30 млн. посетителей в неделю ~ 84 млн. посетителей в месяц из них ~ 40 млн. – из России
  • 14. Зачем нужно что-то новое? Жизненный цикл архитектуры 3-5 лет – средний срок смены архитектуры в динамично растущем проекте Меняются требования рынка Меняются технологические среда и окружение
  • 15. Зачем нужно что-то новое? - 2 Legacy codebase 9 лет разработок, несколько поколений программистов Код: от палеолита до неолита Проблема с change management Рефакторинг: был невозможен не только для кода, но и для архитектуры
  • 16. Новая жизнь с понедельника! Не всё так просто – есть условия и ограничения: Обеспечить работоспособность веб-службы Обратная совместимость со старыми счётчиками Обеспечить плавную (==плановую) замену подсистем Обеспечить возможность миграции данных
  • 17. Новые цели и ориентиры Появляется много архитектурных идей Как структурировать и фильтровать? Атрибуты качества архитектуры Как критерии и обоснование, почему делаем именно так, а не иначе Новые фичи, убиение некоторых старых Неизбежные компромиссы
  • 18. Атрибуты качества Готовность (Availability) Производительность (Performance) Модифицируемость (Modifiability) Безопасность (Security) Сопровождаемость (Maintainability) Концептуальная целостность (Conceptual integrity)
  • 19. Архитектура + проектирование / дизайн и немного о реализации
  • 21. Источники данных Forwarder’ ы Взаимодействие со Старым Спайлогом Передача данных в кластер Логи виртуального хостинга Замена webalyzer, analog, awstats и т.п. Почтовые логи (недалёкое будущее)
  • 22. Выходные данные Интернет-статистика, рейтинги сайтов www.spylog.ru Глобальная статистика и мониторинги рынков Интернет-аналитика Аналитические отчёты на заказ Ad-hoc запросы ( data mining) Партнёрские сервисы - COMCON
  • 23. Пример ad-hoc запросов Какой процент посетителей обновили браузеры на Google Chrome? Просто интересно :) На какие ещё сайты ходит аудитория сайта XXX? т.е. Медиапланирование Самые интересные запросы превращаются в отчёты Или публикуются в Глобальной Статистике
  • 24. NG-Forwarder или Forwarder - NG Написан на основе nginx 0.7.x Большой резерв мощности Можем * считать 38 Яндексов и ещё один портальчег Полностью обратно-совместим со старой системой Бинарный протокол и всё такое Данные в кластер передаются в виде просто текстовых логов
  • 25. Forwarder : асинхронный счётчик
  • 26. Асинхронный счётчик: JS ДАЖЕ НЕ ПЫТАЙТЕСЬ ПРОЧЕСТЬ ЭТОТ СЛАЙД <script type=&quot;text/javascript&quot;> var spylog = { counter: NNN , next: spylog }; document.write(unescape('%3Cscript src=&quot;http‘ + (('https:' == document.location.protocol) ? 's' : '') + '://counter.spylog.com/cnt.js&quot; defer=&quot;defer&quot; %3E%3C/script%3E')); </script>
  • 27. Асинхронный счётчик Оптимизирован под высоконагруженные сайты Без (!) картинки Максимально быстрая загрузка Отложенный parsing ( defer - IE ) Несколько экземпляров счётчика на странице Разумеется, HTTPS
  • 28. Счётчик с картинкой
  • 29. Forwarder: атрибуты качества Готовность Самая критичная подсистема 100% uptime, минимальное время реакции Производительность Максимальная ( state machine rocks!) Stateless frontends -> горизонтальное масштабирование
  • 30. Forwarder & DNS: разнесение Зачем? Отказоустойчивость (ДЦ: падение /потеря связи /перегрев) Быть ближе к посетителю Варианты: DNS - split horizon (views) по AS BGP – IP Anycast Routing Фильтруют анонсы Только UDP
  • 31. Forwarder: детали Форвардеры ходят парами FreeBSD + CARP Резервирование и балансировка нагрузки Вся текущая нагрузка держится 2-мя серверами в ДЦ Мастерхоста Load averages: 0.80 Сейчас ставим ещё пару - в Голландии Хотите, поставим у вас ?
  • 32. GeoDB – БД по географии и AS Forwarders – резолвинг во время запроса (ngx_http_geo_module) Web Services – лишь в качестве справочника Т.е. нет центральной online database Несколько источников данных, верификация, регулярные обновления
  • 33. Кластер : вычисления Map/Reduce Функциональный подход Используется в Google Мы взяли open-source реализацию: Hadoop Используется в Yahoo!, Facebook, etc. Детали – в отдельном докладе
  • 35. Кластер : хранение данных DFS – Distributed File System Стандартная HDFS в Hadoop Рассматривались другие: Lustre – POSIX-compatible; идёт портирование под FreeBSD KosmosFS – есть интеграция с Hadoop GlusterFS В будущем может и сменим HDFS на другое
  • 36. Кластер : роли серверов
  • 37. Кластер: атрибуты качества Отказоустойчивость через резервирование Расчёт на ожидаемость падения data-nodes Гетерогенные сервера Простота эксплуатации (сопровождаемость) Установка ОС через PXE, развёртывание образа – и запуск!
  • 38. Кластер: железо 12 серверов : 2 CPU x 4 -Core; 8 GB RAM; 6 TB HDD 1Gbit network FreeBSD 7.0 amd64 Storage: gjournal + gmirror Раньше был ZFS (raidz), но высокую IO нагрузку не потянул Резервирование на уровне HDFS (3 реплики)
  • 39. Web Services: общая схема
  • 40. REST API: атрибуты качества U niform interface – HTTP Простота и очевидность кодирования / использования Слоевая архитектура Отделение клиентской веб-части от ресурсов/данных Кэшируемость Важно как API , так и для AJAX / Flash Statelessness -> load balancing Как итог – хорошая масштабируемость
  • 41. REST API - открытый Можете напрямую получать свою статистику или даже чужую , если она публично доступна :) Mashup – можете строить свои сервисы, использующие наши API Поддержка протокола OAuth – что безопасно для конечного пользователя
  • 42. Web Services: типичный дизайн OS – FreeBSD Всё внутри jails Минимум 2 instance серверов (CARP) Frontend – nginx Application backends – Catalyst ( Perl ) RDBMS – PostgreSQL Репликация или нет – зависит от приложения Иногда в БД вообще нет нужды
  • 43. Инфраструктура Гетерогенные сервера ОС, железо Кластер – в одном ДЦ Связность между ДЦ – 10 Gbit Forwarders В разных ДЦ Сервера для веб-сервисов – где угодно
  • 44. Итак, когда? Рассказ был про архитектуру Реализация в самом разгаре В октябре 2008 выходит новый сайт: trends.spylog.ru Далее, по очереди, заменяются все старые сервисы на новые Ждите новостей!
  • 45. Вопросы? ( по теме доклада) Сергей Скворцов [email_address]