2. SpyLog – о компании Система интернет-статистики и аналитики Компания работает с 1999 года; в 2007 вошла в состав ГК «Мастерхост» В первую очередь для: Владельцев сайтов и их маркетологов Веб-разработчиков Специалистов по рекламе
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. Новые цели и ориентиры Появляется много архитектурных идей Как структурировать и фильтровать? Атрибуты качества архитектуры Как критерии и обоснование, почему делаем именно так, а не иначе Новые фичи, убиение некоторых старых Неизбежные компромиссы
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 Яндексов и ещё один портальчег Полностью обратно-совместим со старой системой Бинарный протокол и всё такое Данные в кластер передаются в виде просто текстовых логов
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 на другое
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 реплики)
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]