Недавно я присоединился к Bazaar Technologies — пакистанскому стартапу с большими планами и суперталантливой командой, способной реализовать эти планы.

Многие люди ежедневно полагаются на данные Bazaar при выполнении своей работы. Всего за 15 месяцев платформа добавила 6+ приложений для поддержки бизнеса с десятками микросервисов в бэкенде. Они обслуживают 200+ брендов и 750 000+ коммерсантов в Пакистане. Каждый день генерируются тонны данных. Несмотря на уже имеющиеся решения по анализу данных, Bazaar продолжает развиваться.

На данном этапе мы приступили к переосмыслению нашей платформы данных. Стремясь добиться большей экономии, мы создали команду профессионалов, в которую вошли:

  • инженеры по данным;
  • инженеры МО и специалисты по обработке данных;
  • аналитики данных.

После глубоких мозговых штурмов, недолгого периода колебаний и сомнений мы, наконец, разработали проект обновленной платформы данных. В Bazaar он получил название “Buraq”, что означает “скоростной и многоаспектный путь”.

В исламской традиции Burāq— это существо, служившее средством передвижения некоторым пророкам.

Buraq основан на дельта-архитектуре и сочетании нашего уникального подхода Data-Lakehouse и философии Data-Mesh.

Buraq предоставляется на двух различных типах кластеров:

  • Kubernetes, который в основном используется для размещения вспомогательных инструментов и приложений (Airflow, Hue, Superset, Prometheus и т. д.);
  • Map Reduce, выделенный для решения сложных задач обработки данных и машинного обучения.

Платформу Buraq можно разбить на следующие слои:

  • внедрения/интеграции;
  • обработки;
  • API сервисов;
  • запросов.
Высокоуровневый дизайн Buraq

Слой внедрения/интеграции

В Bazaar введена практика data mesh (конечно-элементной сетки данных) для децентрализованного владения данными. Команды могут приходить на Bazaar со своими собственными корзинами (объектными хранилищами) с данными в форматах parquet, avro, csv и json и интегрироваться с Buraq по принципу Plug’n’Play. Такой подход позволяет центральной команде по работе с данными сосредоточиться на дальнейшем развитии и совершенствовании Buraq.

Интегрированные корзины с данными проходят многоуровневый процесс очистки и управления, созданный с помощью Apache Hudi. Вот 4 уровня этого процесса:

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

Слой обработки

Этот уровень является суперабстрактным. В большинстве случаев люди, выполняющие конвейерную обработку, не знают, будут ли данные с бэкэнда обрабатываться в режиме реального времени или пакетно. Это достигается за счет использования постоянно работающего стримера HUDI, который считывает данные как из корзин, так и из тематических разделов Kafka и поддерживает таблицы MOR (merge-on-read). Наша основная среда обработки — Apache Spark — работает действительно эффективно.

Слой API сервиса

С самого начала мы планировали, что Buraq будет платформой DaaS (данные как сервис), чтобы мы могли использовать аналитику и машинное обучение в наших основных приложениях. Buraq API Layer — это набор API, которые предназначены для таких случаев использования.

Слой запросов

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

Bazaar (بازار) в списке на странице Trino

Направления дальнейшего развития платформы

1. Автоматизированное качество данных

Аналитики и специалисты по обработке данных компании Bazaar должны полагаться на данные, поступающие и обрабатываемые на Buraq. Решение проблемы качества данных является насущной необходимостью. У нас есть несколько готовых решений.

2. Клиентоориентированная аналитика

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

3. Магазин функций

Наука о данных может принести конкурентное преимущество любому стартапу. Поэтому мы работаем над тем, чтобы сократить время и усилия для внедрения моделей в производство. Создание магазина функций является одним из шагов в этом направлении.

4. Минимизация вычислительных затрат

Мы постоянно ищем способы снизить стоимость владения Buraq. В данный момент пытаемся использовать эффективные экземпляры ARM наряду с некоторыми оптимизациями кластера Kubernetes.

Читайте также:

Читайте нас в TelegramVK и Яндекс.Дзен


Перевод статьи Umair Abro: Building Bazaar’s Data Platform

Предыдущая статьяКак успешно реализовать проверку состояния контейнера в Docker Compose
Следующая статьяРеализация ViewPager в Swift 5