450 likes | 626 Views
Новая архитектура Спайлога. Сергей Скворцов .masterhost 2008-09-22. $Revision:: 56 $. SpyLog – о компании. Система интернет-статистики и аналитики Компания работает с 1999 года; в 2007 вошла в состав ГК «Мастерхост» В первую очередь для: Владельцев сайтов и их маркетологов
E N D
Новая архитектураСпайлога Сергей Скворцов .masterhost 2008-09-22 $Revision:: 56 $
SpyLog– о компании • Система интернет-статистики и аналитики • Компания работает с 1999 года;в 2007 вошла в состав ГК «Мастерхост» • В первую очередь для: • Владельцев сайтов и их маркетологов • Веб-разработчиков • Специалистов по рекламе
Содержание • Введение: предметная область • Постановка задачи • Архитектура
Базовые сущности – взгляд пользователя • Посетитель • VisitorID - 3rd-party cookie • Счётчик • JavaScript–коди/или картинка(pixel или «кнопка») • Ваш сайт • Как правило, 1 сайт = 1 счётчик • Отчёты (статистика)
Как это работает? • Вы регистрируете счётчик, размещаете его код на своём сайте • Посетители ходят по сайтам (в т.ч. по вашему), делают переходы • Мы собираем данные и генерируем для вас статистику
Статистика - основные термины WAA – Web Analytics Associations • Page – страница • Точка входа, точка перехода, точка выхода • Page View – просмотр страницы • Session - сессия • Visitor – посетитель • Новый, повторный, возвращающийся, уникальный • и т.п.
Какие данные собираем? • БезJavaScript – базовые данные: • Timestamp – дата и время • URI страниц • UserAgent →браузеры, ОС • IP address →география, AS • Cookie → VisitorID
Какие данные собираем? • CJavaScript – технометрику и переходы: • Разрешение монитора, число цветов • Наличие/версия Flash, Java • Timezone • Referrer перехода
Статистика: что считаем? • Посетители: • Количество • Откуда пришли, куда ушли • Как часто ходят, где (пути по сайту) • Сколько времени провели • На какую рекламу кликали – OpenStat
Статистика: что считаем? • Прочее: • ОС • Браузеры • География • Технометрика • Поисковые запросы • и т.д.
SpyLOG: немного чисел • ~220 млн. pageview в день • ~5.4 TB данных за месяц • ~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 Яндексов и ещё один портальчег • Полностью обратно-совместим со старой системой • Бинарный протокол и всё такое • Данные в кластер передаются в виде просто текстовых логов
Асинхронный счётчик: JS <script type="text/javascript"> var spylog={ counter: NNN, next: spylog }; document.write(unescape('%3Cscript src="http‘ + (('https:' == document.location.protocol) ? 's' : '') + '://counter.spylog.com/cnt.js" defer="defer"%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. • Детали – в отдельном докладе
Кластер: хранение данных • DFS – Distributed File System • Стандартная HDFSв Hadoop • Рассматривались другие: • Lustre – POSIX-compatible; идёт портирование под FreeBSD • KosmosFS – есть интеграция с Hadoop • GlusterFS • В будущем может и сменим HDFS на другое
Кластер: атрибуты качества • Отказоустойчивость через резервирование • Расчёт на ожидаемость падения data-nodes • Гетерогенные сервера • Простота эксплуатации (сопровождаемость) • УстановкаОСчерез PXE, развёртывание образа – и запуск!
Кластер: железо • 12 серверов:2 CPU x 4-Core; 8GB RAM; 6TB HDD • 1Gbit network • FreeBSD 7.0 amd64 • Storage: gjournal + gmirror • Раньше был ZFS (raidz), но высокую IO нагрузку не потянул • Резервирование на уровне HDFS (3 реплики)
REST API: атрибуты качества • Uniform 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 • Репликация или нет – зависит от приложения • Иногда в БД вообще нет нужды
Инфраструктура • Гетерогенные сервера • ОС, железо • Кластер – в одном ДЦ • Связность между ДЦ – 10Gbit • Forwarders • В разных ДЦ • Сервера для веб-сервисов – где угодно
Итак, когда? • Рассказ был про архитектуру • Реализация в самом разгаре • В октябре 2008 выходит новый сайт:trends.spylog.ru • Далее, по очереди, заменяются все старые сервисы на новые • Ждите новостей!
Вопросы?(по теме доклада) Сергей Скворцов skv@masterhost.ru