Обратный звонок
DevopsAdTech

Интегрированная платформа рейтингов потребительских товаров

Задача

Объеденить разрозненые данные, хранящиеся в разных устаревших системах, в единый Data Warehouse на основе технологий Google Cloud.

Результат

Создан единый Data Warehouse и serverless ETL процесс, что позволяет предоставлять пользователям товарных рейтингов актуальную информацию на основании интегрированных данных по клиентским отзывам и продажам.

Бизнес заказчика

Клиент собирает рейтинги и обзоры товаров из разных стран

Собирает данные о транзакциях конечных пользователей от Carrefour (одного из крупнейших ритейлеров в мире)

Собирает данные о продуктах, рейтингах и обзорах из 5 источников

Строит отчеты для своих клиентов и партнеров на основе собранных данных

Инструменты и решения

Хранение данных

Data Warehouse, предназначенное для бизнес-анализа по продуктам, брендам и т.д.; Возможность ответить на такие вопросы, как «Насколько продукт А интересен пользователям по сравнению с аналогичными продуктами других брендов».

Работа с данными

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

Конвейеры

Для преобразования (объединения, фильтрации) данных из исходного файла Parquet в файл Parquet для внешних клиентов.

Конвейер

Для сбора данных из внешних файлов BigQuery в файлы Parquet.

Конвейер

Для преобразования данных из файлов BSON в файлы JSON.

5 конвейеров ETL

Для преобразования данных из файлов (Parquet, JSON) в таблицы BigQuery.

Оркестрация для всех пайплайнов

CI/CD (Terraform + Jenkins)

Документация 
в Confluence

Технологический стек

Java 11
Apache Airflow (as part of Composer)
Python (Airflow scripting language)
Jenkins
Docker
Terraform
Storage
Cloud Function
Composer
Dataflow
Cloud Scheduler
BigQuery

Почему это интересно?

Бессерверный ETL

Это чистый бессерверный ETL, построенный на облачной платформе Google.

Платформа Google

Это позволило команде Smartup глубоко узнать облачную платформу Google.

Ограничения компонентов Google Cloud Platform

Команда обнаружила варианты использования и ограничения различных компонентов Google Cloud Platform, таких как Cloud Function или Cloud Run.

Terraform

Terraform использовался для настройки и запуска компонентов Google Cloud Platform.

Какие трудности преодолели?

Проблема

Выбрать правильную технологию для каждого компонента.

Cloud Function масштабируема, но имеет строгие ограничения по времени выполнения. 

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

Приложения Cloud Run могут быть запущены PubSub и работать в течение длительного времени, но могут быть остановлены GCP, если никто не ждет результата выполнения.
Решение

Используем все компоненты

Используем все компоненты, учитывая при назначении исполнителя ожидаемое время выполнения и источник запуска.
Проблема

Дополнить хранилище данных

Дополнить хранилище данных (набор таблиц BigQuery) свежими результатами работы конвейеров ETL, в стиле Green-Blue.
Решение

Внедрили конвейеры ETL

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

Сэкономить бюджет

Сэкономить бюджет Google Composer (этот компонент стоит дорого по сравнению с другими).
Решение

Применили расписание для Composer

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

Читать подробнее в PDF

Сообщение отправлено
отправить еще раз

Результат

01

Хранилище данных (Data Warehouse), предназначенное для бизнес-анализа по продуктам, брендам и т.д.; возможность ответить на такие вопросы, как «Насколько продукт А интересен пользователям по сравнению с аналогичными продуктами других брендов»

02

Аналитическая группа Заказчика имеет Хранилище данных (таблицы BigQuery), которое ежедневно обновляется из разных источников данных.

03

У команды разработчиков Заказчика есть код, задокументированный в комментариях и на страницах Confluence, покрытый тестами и CI/CD для его развертывания.

Отправь заявку

подписаться на нашу рассылку

Сообщение отправлено
заполнить еще раз

позвоните мне

позвоните мне