company_banner

Бизнес-анализ в социальной сети Одноклассники



    Этот пост о системах статистики в Одноклассниках. В нем будет рассказано о том, для чего нам нужна статистика, и какие у нас есть системы для работы с ней. В следующих постах детально опишем:

    • архитектуру систем;
    • основные компоненты систем и алгоритмы;
    • нетривиальные проблемы и способы их решения

    Зачем нам нужна статистика?


    Статистика нам нужна для того, чтобы знать всё о работе нашего сайта. Эти знания позволяют нам:

    • разрабатывать сервисы не наугад, а целенаправленно повышать работоспособность сайта и пользовательскую активность;
    • оценивать успешность любой разработки, будь то новый сервис или простейший рефакторинг кода;
    • отслеживать работу сайта в целом;
    • контролировать работу каждого из компонентов сайта и их взаимосвязь;
    • расследовать аномалии в работе отдельных компонентов сайта;
    • расследовать аномальные изменения пользовательской активности;
    • анализировать целевую аудиторию наших сервисов.

    Какие данные мы собираем


    Чтобы знать действительно всё о работе нашего сайта, необходимо собирать очень много информации. Ежедневно мы обрабатываем более двух триллионов (2 000 000 000 000) записей. Заинтересованные лица могут получить доступ к обработанной статистике с отставанием в 2-3 минуты, то есть практически в режиме реального времени.

    Мы логируем:

    • любую пользовательскую активность (любой клик);
    • любой вызов любого нетривиального компонента сайта (например, java-класс и метод);
    • любые взаимосвязи компонентов сайта (например, обращения с веб-сервера к кэшу).

    Также в систему статистики выгружаем данные о пользовательском контенте (например, загруженных фотографиях и поставленных оценках) и об активности (например, логинах или заходах в гости), чтобы анализировать поведение пользователей в деталях.

    Инструменты для работы со статистикой


    Система графиков и дешбордов

    Статистику у нас смотрят в основном в виде графиков. Эти графики чаще всего бывают двух видов:

    1) график, где одна точка – агрегированные данные за пять минут. Это графики для оперативного мониторинга.



    2) график, где одна точка – агрегированные данные минимум за один день. Можно указать и другие периоды – неделю, месяц, квартал и год. Это графики для отслеживания долгосрочных трендов.



    Одним кликом любой график переводится в интерактивный режим, в котором можно изменить параметры и фильтры графика и сразу же получить результат.



    Основные возможности графиков:

    1) выбрать любую дату и любой период (доступна вся история);
    2) выбрать любой параметр – например, количество вызовов, среднее время выполнения;
    3) сгруппировать по любому классификатору, например, по серверам или по java-классам;
    4) поставить любые фильтры – по значению, по списку значений;
    5) обработать математическими алгоритмами – например, сгладить график;
    6) переключится с 5-минутного графика на дневной и обратно;
    7) cохранить настроенный график в дешборд как новый или переписать поверх старого.

    Из таких графиков мы составляем тематические дешборды. Для этого мы написали web- приложение на ASP.NET.



    Важный аспект этой системы – работают с графиками и составляют дешборды менеджеры, разработчики и администраторы, а не отдел бизнес-анализа. Бизнес-аналитики занимаются только предоставлением инструментов и обеспечением быстродействия системы.

    Система традиционной отчетности

    У нас также есть и традиционная отчетность: это статические отчеты, которые показывают запрашиваемые данные в виде таблиц или графиков. Отдел бизнес-анализа создает их по заказу. Эти отчеты интегрированы в систему графиков и дешбордов.

    Отчеты мы рассматривать не будем – сами по себе они не интересны. Рассмотрим приёмы обработки больших объёмов данных (например, только логинов за 2011 год у нас было почти 30 миллиардов).

    Система многомерного (OLAP) анализа

    Часто анализировать долгосрочные тренды удобней в стиле pivot-table, где любой параметр можно разбивать на составляющие в виде таблицы.

    Поэтому мы создаем OLAP-кубы по разным темам, например, куб платежей, куб логинов и другие. Для работы с кубами мы написали web-приложение.



    Система автоматического определения аномалий

    Просматривать дешборды с графиками – не самый эффективный способ мониторинга. Мы создали систему, которая «просматривает» графики, и, если замечает аномальные отклонения от «нормы», оповещает об этом письмом или в SMS-сообщением.



    Система автоматического определения «узких мест» в инфраструктуре

    У нас достаточно большой парк оборудования – более 4000 серверов, для работы с которыми мы используем разные специализированные системы – Cacti, Zabbix и другие. Когда использование какого-то ресурса достигает критического уровня, администраторы автоматически получают оповещение об этом.

    Чтобы нагрузка на серверы достигала критического уровня как можно реже, необходимо регулярно проводить анализ операционных показателей этих серверов и принимать соответствующие решения, например, о добавлении дополнительных мощностей. Качественно выполнить такой анализ вручную очень непросто. Поэтому мы написали модуль, выгружающий данные из систем Cacti в хранилище данных и перебирающий операционные показатели за предыдущие пару недель на предмет «как скоро мы достигнем критического уровня, если всё будет продолжаться в том же духе».



    Использованные технологии


    Хранилище данных

    В 2008 году, когда принимали решение о том, что надо строить систему бизнес-анализа, в Одноклассниках широко использовались базы MS SQL. Поэтому логичным выбором для нас было использовать эту платформу и для бизнес-анализа.

    Сегодня как хранилище данных мы используем только MS SQL 2008 R2 Enterprise Edition. Планируем апгрейд на MS SQL 2012. О результатах мы вас, конечно же, проинформируем.

    Обработка данных

    Мы пробовали использовать MS SQL Integrity Services, но эта технология оказалась слишком невыгодной с точки зрения трудозатрат. Тот же код можно написать в T-SQL в несколько раз быстрее. Поэтому 99,9% кода обработки данных у нас написано на T-SQL, а остальное – в .NET.

    OLAP

    Для многомерного анализа используем MS SQL 2008 R2 Analysis Services. Также планируем апгрейд на MS SQL 2012. Для фронт-энд написали web-приложение.

    Генератор графиков и отчетов

    Для генерации графиков и большинства отчетов используем MS SQL Reporting Services. Изначально это было очень удачным решением, потому что там можно было быстро построить необходимую минимальную функциональность. Но сейчас требования к системе выросли – нам нужен более богатый, быстрый и динамичный пользовательский интерфейс. Поэтому планируем миграцию на другое решение (пока ещё не выбрали, какое именно).

    Web-приложения

    Все web-приложения написаны на ASP.NET. Используем UI-компоненты DevExpress, которые позволяют легко и быстро создавать хорошие формы в едином стиле.

    В следующем посте мы в деталях расскажем о том, как мы логируем информацию и доставляем данные до DWH.

    Команда Одноклассников
    Одноклассники 141,99
    Делимся экспертизой
    Поделиться публикацией
    Комментарии 14
      +4
      Все web-приложения написаны на ASP.NET. Используем UI-компоненты DevExpress, которые позволяют легко и быстро создавать хорошие формы в едином стиле.

      Приятно видеть, что наши компоненты активно используются среди отечественных разработчиков :-) Большой вам привет от всей команды DevExpress!
        +1
        Спасибо, Alex!
        0
        Могу посоветовать Microstrategy. Один из крупнейших лидеров на BI рынке, интерфейс легкий для понимания с очень мощным функционалом. Вот тут можно кое-что глянуть: www.microstrategy.com/
          +1
          сколько места всего используется под статистику и вообще?
            +2
            Общий объем данных в DWH — 85 Терабайт
              0
              а пользовательских данных?
                0
                Примерно половина
                  0
                  ну у вас еще музыка находится в бета режиме, так бы больше было?
                    +1
                    это только статистика. самих пользовательских данный — фото, сообщения,… по одному из постов 160TB habrahabr.ru/company/odnoklassniki/blog/115881/
                    правда это было давно.
            0
            " Ежедневно мы обрабатываем более двух триллионов (2 000 000 000 000) записей. Заинтересованные лица могут получить доступ к обработанной статистике с отставанием в 2-3 минуты, то есть практически в режиме реального времени".

            Т.е. Большой брат наблюдает за нами?
              0
              социальная сеть — дело добровольное ))
                +1
                Большая часть собираемой информации абстрагирована от конкретного пользователя! Иначе объем данных и записей в день пришлось бы умножать на несколько порядков!
                0
                Добрый день, спасибо большое, очень интересная статья.
                А скажите пожалуйста, с чем связаны очень высокие всплески времени генерации AJAX страниц на 5-ти минутном графике «Averade duration of rendering AJAX page» Красные и синие пики вплоть до 15-ти секунд?
                  0
                  аххах. только сейчас заметил ваш вопрос ;-)
                  1. это не секунды, это миллисекунды, то есть скачки до 15 миллисекунд
                  2. это была спамерская активность.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое