О чём эта история

Skyeng — языковая школа, 11 лет работающая на российском рынке онлайн‑образования. Занятия в школе проводятся на собственной веб‑платформе Smartboom, она содержит весь образовательный и экзаменационный контент и связывает между собой студентов и преподавателей. В школе обучается больше 150 тыс. учеников, а за все время существования прошло больше 33 млн уроков.

В 2022 году из‑за лицензионных рисков, сложной системы взаимных зависимостей в хранилище, инфраструктурных инцидентов, компания решила построить новое корпоративное хранилище данных, и сменить инструменты для аналитики.

За 12 месяцев компания перенесла 7 ТБ данных в Yandex Cloud, сменив технологический стек и настроив быструю и отзывчивую аналитику для 400 бизнес‑пользователей.

Поиск облачной инфраструкутуры для DWH

Изначально Skyeng строил свой DWH на сервисах Amazon. В компании пять команд аналитики, включая дата‑офис, 45 дата‑аналитиков, 4 дата‑инженера, 4 системных аналитика. Эти команды разрабатывали и поддерживали DWH на базе Redshift. Витрины данных обновлялись раз в сутки — ночью, в техническое окно, интервал между обновлениями составлял 24 часа. В корпоративное хранилище поступали данные из 300 различных источников. С аналитикой работало около 400 бизнес‑пользователей ежедневно. Стоимость и сложность инфраструктуры для аналитики постоянно росла.

Состояние до миграции

Процесс ETL был построен на AirFlow. Как BI‑инструменты использовали Tableau и Redash. Сначала планировали двухслойную модель данных: слой сырых данных и слой витрин. Но на практике процесс не удавалось контролировать и в результате образовался dependency hell — разрастались взаимные зависимости, мешающие эффективной работе с данными. Были проблемы с установкой обновлений и согласованностью данных, а большую часть времени аналитиков занимали поиск, устранение ошибок и работа с инцидентами.

В 2022 году команда Skyeng столкнулась с лицензионными рисками. Вкупе с уже накопившимися сложностями это подтолкнуло компанию найти новое решение не только для хранилища, но и заменить BI‑инструменты. Компания рассматривала несколько вариантов развития событий:

  • остаться на Redshift;
  • сменить Redshift на альтернативное решение — Greenplum.

Валютные и лицензионные риски использования Redshift были большими, поэтому Skyeng решила переходить на Greenplum.

Greenplum можно было развернуть на собственных мощностях, или использовать управляемый сервис. Yandex Managed Service for Greenplum® дешевле поддерживать и администрировать, чем собственный Greenplum, по подсчётам Skyeng эквивалентная физическому развёртыванию конфигурация стоила бы дороже. При этом суммарная стоимость развёртывания и поддержки облачной инфраструктуры оказалась ниже.

К моменту выбора облачной платформы Skyeng уже реализовали с Yandex Cloud проект по тестовому окружению — перенесли в Yandex Cloud облачные копии обучающей платформы, с которой работают разработчики. Компания осталась довольна этим опытом. Кроме того, школа уже использовала Yandex DataLens для части проектов бизнес‑аналитики, визуализации и анализа данных.

DWH и бизнес‑аналитику Skyeng развернули, используя сервисы платформы данных Yandex Cloud, которые покрывают весь цикл работы с данными в облаке. Команда Skyeng планировала использовать Managed Service for Greenplum® и Yandex DataLens. Преимуществом при выборе платформы стали также гибкое управление ресурсами и быстрая масштабируемость в зависимости от нагрузки.

Миграция аналитики в новое облако

MVP на Managed Service for Greenplum®

Сначала Skyeng реализовали MVP системы аналитики на базе платформы данных Yandex Cloud. Ядром DWH стал Managed Service for Greenplum®. При разработке MVP команде удалось избавиться от проблем с многочисленными взаимными зависимостями в модели данных. Это привело к значительному ускорению работы DWH. ETL решили оставить в AirFlow. Реализовали Metastore — сервер табличных метаданных, который связывает ETL‑системы и инструменты для работы с общими данными.

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

У DataLens отзывчивый интерфейс, чарты подгружаются независимо. Но Skyeng был необходим механизм экстрактов и загрузка чартов в течение десяти секунд. MVP на Managed Service for Greenplum не смог обеспечить такое время и поэтому масштабировать его в текущем виде было невозможно. Поэтому при выходе проекта в продакшен команда Skyeng приняла решение использовать также Managed Service for ClickHouse®. Благодаря экосистеме платформы данных можно было с помощью Data Transfer протестировать новое решение буквально за час. Первые тесты показали, что скорость загрузки чартов увеличилась на порядок.

Трансфер в Managed Service for ClickHouse

В паре сервисов Managed Service for Greenplum — ClickHouse поддерживается только полное копирование, поэтому с помощью расширения pxf в Managed Service for ClickHouse загружают только дельты. Чтобы pxf‑соединение не занимало слот в Managed Service for Greenplum при выгрузке данных из реплик, данные загружают из источников в Greenplum и отправляют в ClickHouse через Yandex Object Storage.

Кроме ежедневно обновляемых данных нужно постоянно анализировать Clickstream — запись пользовательской активности. Набор топиков Clickstream группируется по типам (события мобильного приложения, события веб‑фронтенда, серверные события), в хранилища типа ключ‑значение. Прошедшие проверку по определённым правилам передаются в Kafka, откуда отправляются в Managed Service for ClickHouse и сохраняются в отдельные таблицы. Если данные Clickstream нужны при сборке витрины в Greenplum, они агрегируются в Managed Service for Greenplum. Конечная витрина после сборки отправляется обратно в Managed Service for ClickHouse, и к ней пользователи получат доступ из DataLens.

Для многих бизнес‑процессов не нужна полная история данных в горячем хранилище. Поэтому реализовали охлаждение исторических данных из Managed Service for Greenplum и ClickHouse в Object Storage, чтобы иметь в горячем хранилище только ту информацию, которая нужна для реализации бизнес‑процессов, и контролировать объём горячих данных.

Охлаждение данных

Состояние системы с большим количеством источников нужно постоянно отслеживать. Для этого команда Skyeng использует Metastore. С его использованием строится стандартный мониторинг ошибок, скорости обновления, качества и происхождения данных и т. п. В консоли облака отслеживаются кластеры Greenplum и ClickHouse, из лога запросов Managed Service for ClickHouse команда получает информацию о скорости и стабильности работы BI. Эти данные выводятся в DataLens для дальнейшего контроля.

Кроме BI команда настроила интеграции нескольких внутренних и внешних сервисов, использующих пользовательские данные, с DWH. Они могут интегрироваться с Greenplum или с ClickHouse, в зависимости от сценария работы. Кроме того, настроили оповещения и выгрузки данных в корпоративном мессенджере. Они позволяют заказчикам иметь актуальную информацию в режиме реального времени, не открывая BI.

Результаты

В результате миграции DWH Skyeng снизил затраты на инфраструктуру для аналитики. Общую экономию после миграции аналитической системы компания предварительно оценивает в 10%, а после завершения переноса всей инфраструктуры аналитики она вырастет еще больше.

Оценка метрик качества и актуальности данных повысила прозрачность системы аналитики. Выросла скорость загрузки аналитических данных и формирования управленческих отчётов. Skyeng постоянно проводит A/B‑эксперименты по исследованию пути клиента и его влияния на метрики. Например, проект по разделению клиентов на группы: на основании ответов в квизе, к клиенту применяют определённый сценарий продаж. Эксперименты дают статистически значимый рост конверсии в 0.5‑1 процентный пункт в зависимости от этапа продаж.

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

Школа сменила технологический стек и облачного провайдера, в результате выросла стабильность аналитической системы и скорость работы с базами данных. Объём хранения данных в Managed Service for Greenplum сейчас — 14 ТБ, в два раза больше того, что хранилось в Redshift и он продолжает расти. При этом аналитика работает стабильно. Например, в одном из источников объём микро‑тренировок в словарном тренажёре сейчас превышает десять миллиардов.

Skyeng планирует:

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