Как ускорить подготовку отчётов в 10 раз и строить аналитику за 2 секунды — история Fix Price

У сети Fix Price почти 6000 магазинов и 22 миллиона участников программы лояльности. Как обрабатывать такие объёмы данных в облаке — рассказывает руководитель центра компетенций Qlik Fix Price Кристина Кондакова.

Кристина Кондакова
Руководитель центра компетенций Qlik Fix Price

Fix Price — крупнейшая в России сеть магазинов низких фиксированных цен. Ежемесячно открывается более 60 новых точек, и из каждой нужно обрабатывать информацию о чеках и движении товаров, чтобы собирать данные по продажам. Растёт и количество онлайн-заказов: в 2022 году их было миллион — в 2,3 раза больше, чем годом ранее. Также большой объём данных генерирует программа лояльности — в ней почти 22 миллиона участников. В итоге наша аналитическая платформа перестала поспевать за темпами открытия новых магазинов.

Впервые нам стало не хватать возможностей нашей системы аналитики в 2021 году. Постоянно росло время подготовки и актуализации витрин данных, которыми пользуется отдел маркетинга и продаж, например данные за день появлялись только около 11 часов следующего дня. А время обновления витрин доходило до трёх часов в сутки. Это сильно сдерживало развитие бизнеса.

Старое решение строилось на ETL-инструменте в Qlik и обрабатывало данные в оперативной памяти. Чтобы справляться с растущим количеством чеков, мы постоянно увеличивали объём памяти. Это было неоптимальным решением: по мере роста сети так пришлось бы делать постоянно. Поэтому глобальная задача состояла в том, чтобы оптимизировать решение и уменьшить нагрузку на серверы.

Как за два месяца создали cloud native-решение

К тому моменту у нас уже был опыт работы с облаком: мы использовали его для интернет-витрины и других инструментов. Поэтому, чтобы ускорить обработку данных, решили переходить с on-premise аналитического решения на облачное, которое будет легко масштабировать под другие задачи и площадки магазина. Например, в дальнейшем мы хотим анализировать взаимодействие пользователей с нашим интернет-магазином.

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

В качестве СУБД мы выбрали решение ClickHouse.

Во-первых, это продукт с открытым исходным кодом. Во-вторых, с его помощью можно быстро загружать данные и легко генерировать аналитические отчёты. В-третьих, за счёт сильного сжатия данных можно экономить место в хранилище — это особенно удобно, учитывая наш объём входящих данных (более 10 ГБ в день).

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

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

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

Как работает новый сервис

Все XML-файлы хранятся в Yandex Object Storage. В них содержится информация о продажах продукта, стоимости, скидках и движении товара.

Когда данные собрали, они обрабатываются в Yandex Cloud Functions и передаются в Yandex Managed Service for ClickHouse. За счёт этих сервисов формируются витрины данных.

Витрина данных FixPrice
Витрина данных FixPrice

Служебная информация, например количество загруженных чеков, проводок, успешно и неуспешно обработанных файлов, хранится в Yandex Managed Service for YDB. Там же находятся данные для отправки в Yandex Monitoring.

Благодаря интеграции Yandex Message Queue с Cloud Functions компоненты системы связаны между собой и при срабатывании триггера можно вызывать нужную функцию для обработки данных. Для прикладного мониторинга мы используем Yandex Cloud Monitoring, а для работы с журналами — Yandex Cloud Logging.

Результаты

Нам удалось реализовать проект на cloud native-технологиях, без использования облачной модели IaaS (Infrastructure as a Service), например виртуальных машин.

Сейчас мы ежедневно загружаем в ClickHouse 10 ГБ данных, а иногда и больше. При этом витрины обновляются в 10 раз быстрее, чем раньше, а построение одного аналитического отчёта занимает не более двух секунд.

Новая система FixPrice
Новая система FixPrice

В перспективе мы планируем перевести в облако весь процесс работы с данными, чтобы экономить бюджет и повысить эффективность в сравнении с физическими серверами.

9
Начать дискуссию