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

Российская EdTech‑компания MAXIMUM Education планировала построить хранилище данных (Data Warehouse) — специально организованную единую систему сбора, хранения и обработки корпоративной информации различного рода, а затем на основе данных выбирать направление, в котором развивать бизнес. Компания предпочла не покупать готовое, а создать своё решение, для чего воспользовалась сервисами облачной платформы Yandex Cloud.

Сейчас в объектном хранилище Yandex Object Storage с помощью Yandex Managed Service for Apache Kafka® собрано около 100 ТБ «сырых» данных из CRM, LMS, аналитических систем и опросов.

Задача компании

MAXIMUM Education — российская EdTech‑компания, которая специализируется на дополнительном образовании школьников, подготовке к единому государственному экзамену (ЕГЭ) и основному государственному экзамену (ОГЭ). Входит в тройку лидеров рынка. Система управления обучением (LMS) MAXIMUM Education работает в Yandex Cloud. В облаке построена микросервисная архитектура, основанная на сервисе для управления кластерами Yandex Managed Service for Kubernetes® с использованием управляемых сервисов платформы данных:

  • Yandex Managed Service for PostgreSQL;
  • Yandex Managed Service for MySQL®;
  • Yandex Managed Service for MongoDB;
  • Yandex Object Storage.

Перед компанией стояла важная задача: построить хранилище данных (Data Warehouse, DWH) — специально организованную единую систему, с помощью которой можно собирать, хранить, обрабатывать и анализировать корпоративную информацию различного рода, а затем на основе данных определять направление, в каком развивать бизнес. Сначала компания приобрела стороннее решение, но у него обнаружилось много недостатков:

  1. Большинство источников данных не хранили историю изменения записей, что не позволяло строить сложную аналитику.
  2. Производительность выполнения запросов и обновления отчётов была низкой, синхронизация источников данных — неполной, а затраты на поддержание инфраструктуры — очень высокими.
  3. Возможности кастомизировать инструменты под нужды компаний не предоставляли, несмотря на очень высокую стоимость продукта.
  4. Сторонние решения оказалось сложно интегрировать с BI-системами.

Компания предпочла создать собственное решение, и команда MAXIMUM Education начала планировать разработку нового DWH, которое хранило бы всю информацию за 5‑7 лет (это 500 ТБ данных) с быстрым доступом к ней и стало бы первой и единственной точкой входа во все данные компании.

Для реализации проекта сначала рассматривали Apache Hadoop и Greenplum. Однако команда была ограничена в ресурсах на этапе эксперимента, поэтому решили разрабатывать хранилище данных с нуля, используя облачные технологии и сервисы. Так как большинство сервисов MAXIMUM Education уже работали в Yandex Cloud, то было принято решение о построении новой системы именно на этой облачной платформе.

Важным требованием при выборе облака было обеспечение высокого уровня безопасности. Yandех Cloud предоставляет разнообразные инструменты для построения безопасного контура защиты от DDoS‑атак. И конечно же, облачная платформа выполняет требования закона № 152‑ФЗ «О персональных данных».

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

Как построить DWH

Необходимо было начать с точки «ноль» — перестать «терять» данные и запустить DWH с минимальными ресурсами. Была построена схема процесса, основанная на мировых практиках и учитывающая рекомендации инженеров Yandex Cloud. Выглядела она следующим образом:

  • Слой Bronze. Сырые данные как есть. Необходим, чтобы была возможность поменять технологии и методики работы с данными.
  • Слой Silver. Файл таблицы в формате delta lake — это данные, с которыми уже можно работать. Нужен, чтобы выполнять time travel внутри данных.
  • Слой Gold. Бизнес‑слой. Необходим, чтобы создавать модель данных для использования аналитических запросов.
  • Витрины данных на ClickHouse или PostgreSQL. Позволяют создавать более тяжёлые запросы при необходимости.

В настоящий момент реализованы первые два слоя DWH — Bronze и Silver. Работа с данными в них организована так:

  • Сырые данные из CRM‑системы, которая находится во внешнем контуре, LMS (базы данных PostgreSQL) и других источников собираются с помощью Yandex Managed Service for Apache Kafka® — инструмента для потоковой передачи данных. Распределённый программный брокер сообщений Kafka используется как системная шина между CRM, LMS, Billing и другими частями системы.
  • Затем с помощью планировщика задач Apache Airflow запускаются скрипты и через ETL‑модели генерируются архивы, которые хранятся в масштабируемом облачном объектном S3‑совместимом хранилище Yandex Object Storage.
  • Далее собранные данные могут быть использованы для построения витрин. Такой подход позволяет не терять данные, которые могут понадобиться в будущем. Инструментом для обработки данных служит Yandex Data Processing, в основе которого Apache Spark.
  • Витрины данных строятся с помощью управляемого сервиса Yandex Managed Service for PostgreSQL.

Результат на сегодняшний день

Сейчас проект развивают: внедряют в бизнес‑процессы компании и добавляют новые источники данных. В объектном хранилище Yandex Object Storage с помощью Yandex Managed Service for Apache Kafka® собрано около 100 ТБ сырых данных из CRM, аналитических систем (Firebase, Яндекс Метрика, Google Analytics и др.) и опросов, LMS, где протекает основной образовательный процесс.

Этими данными пользуются:

  • Аналитики на дашбордах PowerBI по внутренним метрикам (продажи, переходы, мобильное приложение) и метрикам с других систем аналитики.
  • Команда RnD. Они занимаются исследованием и внедрением новых технологий, в том числе DWH. Специалисты Data Science теперь, имея единую точку входа SQL‑подобных запросов, могут делать удобные для них выборки. Появилась возможность брать данные, которые генерируются CRM, интегрировать их с данными, которые существуют в LMS, и строить сложную аналитику по клиентам.
  • Финансы. Интеграция данных собственной биллинговой системы со всеми каналами продаж позволяет получить полную информацию о клиентах и их потребностях.

В планах — с помощью облачных сервисов Yandex Cloud реализовать следующие слои DWH.