Авторизация
Забыли пароль?
Сброс пароля
Вернуться к авторизации

Как в 4 раза ускорить актуализацию витрины крупного ритейлера за счет комплексной оптимизации системы импорта в Magento

26 сентября ‘24

Заказчик: Крупный российский ритейлер, одна из самых стремительно развивающихся торговых сетей в стране

В начале 2021 года крупный ритейлер пришел в LACHESTRY сразу с несколькими задачами. Первым большим направлением развития интернет-магазина стала оптимизация импорта продуктов из PIM.

Агентство-исполнитель кейса

LACHESTRY

Наша команда нацелена на улучшение бизнес-показателей. Так как мы работаем совместно с клиентами — их успехи являются нашими достижениями.

1. Вводная задача от заказчика, проблематика, цели

В начале 2021 года ритейлер пришел в LACHESTRY сразу с несколькими задачами.

Первым большим направлением развития интернет-магазина стала оптимизация импорта продуктов из PIM, основными целями которого были:

  • Увеличить пропускную способность (для начала в 2 раза, но забегая вперед — мы сделали в 4!).
  • Как следствие — ускорить доставку продукта до полки интернет-магазина.
  • Сделать импорт более стабильным (с возможностью валидации и просмотра истории импортируемых данных).

2. Описание реализации кейса и творческого пути по поиску оптимального решения

Этапы реализации проекта

1. Анализ и проектирование. Было принято решение сначала проанализировать текущую интеграцию через REST запросов в Magento API. В старой реализации использовался импорт продуктов через RESTful API Magento, что автоматически накладывало большие ограничения как на пропускную способность импорта, так и на его стабильность в целом.

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

Бенчмарки импорта:

  • Простой продукт, добавление — 2 с
  • Простой продукт, обновление — 1.5 с
  • Сложный продукт, добавление — 8 с
  • Сложный продукт, обновление — 6 с

Под сложным продуктом понимается конфигурируемый, состоящий из нескольких простых. Например, духи могут быть 30 ml, 50 ml и 100 ml — это всё один конфигурируемый товар из нескольких простых.

2) Повышение отказоустойчивости путем перевода на асинхронный импорт.

Первым шагом оптимизации стал отказ от синхронного подхода с REST в сторону асинхронного через очереди Kafka. Это позволило нам иметь возможность просмотра истории сообщений, повторно переимпортировать нужные сообщения (пришедшие из других систем данные), что сильно подняло стабильность — вероятность утраты данных стала близка нулю.

Также команда LACHESTRY внедрила батчинг (пакетную обработку) сообщений, чтобы импорт Magento получал продукты в привычном ему виде. В итоге получили прирост в 70 %, что уже больше целевого прироста оптимизации, поставленного изначально.

3) Отказ от стандартного импорта и перевод его на точечные импорты напрямую в базу данных (ускорение на 400 %)

Следующим шагом стал отказ от Magento-импорта и переход на импорт прямыми запросами в базу, так как в самой Magento реализовано очень много дополнительной логики и проверок, которые не нужны клиенту. Была полностью переписана интеграция простых продуктов и логика обновления конфигурируемых. В итоге получили суммарный прирост на 400 % относительно старого решения.

  • Новые бенчмарки импорта:
  • Простой продукт, добавление — 1 с
  • Простой продукт, обновление — 200-300 мс
  • Сложный продукт, добавление — 3 с
  • Сложный продукт, обновление — 300-500 мс

4) Реализация полного маппинга контракта из PIM с атрибутами в Magento. С созданием опций атрибутов и брендов на лету (порядка 200 новых значений ежедневно при общем количестве ~200.000).

Следующей задачей бизнеса стало автоматическое создание и маппинг атрибутов в процессе импорта, чтобы не было необходимости создавать их вручную — система Magento самостоятельно определяет, какие атрибуты поступили с импортом. Эта потребность возникла из-за появления большего количества потребителей данных из PIM. Ответственность за подготовку данных перешла на потребляющие системы, и Magento не стала исключением.

Разработчики LACHESTRY реализовали удобный маппинг, позволяющий сопоставить любой приходящий контракт с любым списком атрибутов с теми, что созданы в Magento. Сам маппинг отрабатывает за 30 мс каждое приходящие сообщение из Kafka.

В результате работы этого решения в Magento, по данным на январь 2024 года, создано порядка 200.000 новых опций атрибутов и прирост каждые сутки порядка 500.

5) Мгновенная актуализация витрины из DAX 365

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

В рамках задачи по актуализации разработчики перевели все импорты из DAX (цены, ассортименты и стоки) на очереди из Kafka, что улучшило стабильность системы работы с продуктами. Также реализовали включение продуктов по триггерам, чтобы полностью автоматизировать этот процесс при появлении необходимых данных по товарам.

Теперь время включения продукта, готового к продажам, измеряется секундами, а не днями в случае ручного введения информации.

3. Результаты сотрудничества

В результате внедренных решений ритейлер значительно улучшил работу интернет-магазина. Пропускная способность импорта продуктов была увеличена в 4 раза, что ускорило доставку товаров на витрину. Импорт стал более стабильным благодаря переходу на асинхронные процессы через Kafka, а отказ от стандартного импорта в пользу прямых запросов в базу данных привел к ускорению операций на 400%.

4. Заключение

Также была реализована автоматическая актуализация атрибутов и мгновенная интеграция с DAX 365, что позволило сократить время появления товаров на витрине до нескольких секунд.

Агентство-исполнитель кейса

LACHESTRY

Наша команда нацелена на улучшение бизнес-показателей. Так как мы работаем совместно с клиентами — их успехи являются нашими достижениями.