Бізнес-аналіз у соціальній мережі Однокласники

мережі

Ця посада про системи статистики в Однокласниках. У ньому буде розказано про те, навіщо нам потрібна статистика, і які ми маємо системи для роботи з нею. У наступних постах детально опишемо:

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

Навіщо нам потрібна статистика?

Статистика нам потрібна для того, щоб знати все про роботу нашого сайту. Ці знання дозволяють нам:

• розробляти сервіси не навмання, а цілеспрямовано підвищувати працездатність сайту та активність користувача; • оцінювати успішність будь-якої розробки, будь то новий сервіс або найпростіший рефакторинг коду; • відстежувати роботу сайту загалом; • контролювати роботу кожного з компонентів сайту та їх взаємозв'язок; • розслідувати аномалії у роботі окремих компонентів сайту; • розслідувати аномальні зміни користувальницької активності; • аналізувати цільову аудиторію наших сервісів.

Які дані ми збираємо

Щоб знати справді все про роботу нашого сайту, необхідно збирати дуже багато інформації. Щодня ми обробляємо понад два трильйони (2 000 000 000 000) записів. Зацікавлені особи можуть отримати доступ до обробленої статистики з відставанням 2-3 хвилини, тобто практично в режимі реального часу.

• будь-яку активність користувача (будь-який клік); • будь-який виклик будь-якого нетривіального компонента сайту (наприклад, java-клас та метод); • будь-які взаємозв'язки компонентів сайту (наприклад, звернення з веб-сервера до кешу).

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

Інструменти для роботи зі статистикою

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

Статистику у нас дивляться переважно у вигляді графіків. Ці графіки найчастіше бувають двох видів:

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

однокласники

2) графік, де одна точка – агреговані дані щонайменше за день. Можна вказати й інші періоди – тиждень, місяць, квартал та рік. Це графіки для відстеження довгострокових трендів.

соціальній

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

бізнес-аналіз

Основні можливості графіків:

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

З таких графіків ми складаємо тематичні дешборди. Для цього ми написали 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.

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

Генератор графіків та звітів

Для генерації графіків та більшості звітів використовуємо MS SQL Reporting Services. Спочатку це було дуже вдалим рішенням, тому що там можна було швидко збудувати необхідну мінімальну функціональність. Але зараз вимоги до системи зросли – нам потрібен більш багатий, швидкий і динамічний інтерфейс користувача. Тому плануємо міграцію на інше рішення (поки що ще не вибрали, яке саме).

Web-додатки

Усі веб-програми написані на ASP.NET. Використовуємо UI-компоненти DevExpress, які дозволяють легко та швидко створювати гарні форми в єдиному стилі.

У наступному пості ми в деталях розповімо про те, як ми логуємо інформацію тадоставляємо дані до DWH.