О чём эта история
Российская 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) — специально организованную единую систему, с помощью которой можно собирать, хранить, обрабатывать и анализировать корпоративную информацию различного рода, а затем на основе данных определять направление, в каком развивать бизнес. Сначала компания приобрела стороннее решение, но у него обнаружилось много недостатков:
- Большинство источников данных не хранили историю изменения записей, что не позволяло строить сложную аналитику.
- Производительность выполнения запросов и обновления отчётов была низкой, синхронизация источников данных — неполной, а затраты на поддержание инфраструктуры — очень высокими.
- Возможности кастомизировать инструменты под нужды компаний не предоставляли, несмотря на очень высокую стоимость продукта.
- Сторонние решения оказалось сложно интегрировать с 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.