Your SlideShare is downloading. ×
Hl2008 Spy Log Architechture 169
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Hl2008 Spy Log Architechture 169

367
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
367
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Новая архитектура Спайлога Сергей Скворцов .masterhost 2008-09-22 $Revision:: 56 $
  • 2. SpyLog – о компании
    • Система интернет-статистики и аналитики
    • Компания работает с 1999 года; в 2007 вошла в состав ГК «Мастерхост»
    • В первую очередь для:
      • Владельцев сайтов и их маркетологов
      • Веб-разработчиков
      • Специалистов по рекламе
  • 3. Содержание
    • Введение: предметная область
    • Постановка задачи
    • Архитектура
  • 4. Введение: предметная область
  • 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 данных за месяц
    • ~ 700 M B отчетов за день
    • охват аудитории:
      • ~ 30 млн. посетителей в неделю
      • ~ 84 млн. посетителей в месяц из них ~ 40 млн. – из России
  • 13. Постановка задачи
  • 14. Зачем нужно что-то новое?
    • Жизненный цикл архитектуры
      • 3-5 лет – средний срок смены архитектуры в динамично растущем проекте
      • Меняются требования рынка
      • Меняются технологические среда и окружение
  • 15. Зачем нужно что-то новое? - 2
    • Legacy codebase
      • 9 лет разработок, несколько поколений программистов
      • Код: от палеолита до неолита
      • Проблема с change management
      • Рефакторинг: был невозможен не только для кода, но и для архитектуры
  • 16. Новая жизнь с понедельника!
    • Не всё так просто – есть условия и ограничения:
    • Обеспечить работоспособность веб-службы
    • Обратная совместимость со старыми счётчиками
    • Обеспечить плавную (==плановую) замену подсистем
    • Обеспечить возможность миграции данных
  • 17. Новые цели и ориентиры
    • Появляется много архитектурных идей
    • Как структурировать и фильтровать?
      • Атрибуты качества архитектуры
        • Как критерии и обоснование, почему делаем именно так, а не иначе
      • Новые фичи, убиение некоторых старых
      • Неизбежные компромиссы
  • 18. Атрибуты качества
    • Готовность (Availability)‏
    • Производительность (Performance)‏
    • Модифицируемость (Modifiability)‏
    • Безопасность (Security)‏
    • Сопровождаемость (Maintainability)‏
    • Концептуальная целостность (Conceptual integrity)‏
  • 19. Архитектура + проектирование / дизайн и немного о реализации
  • 20. Общая схема архитектуры
  • 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.
      • Детали – в отдельном докладе
  • 34. Map / Reduce
  • 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 8 -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]