Интеграция JDE с eCommerce платформой Magento
Краткое описание проекта: перед нашей командой было поставлено несколько крупных задач.
Первая задача состояла в разработке решения, которое позволяет произвести первоначальный импорт и последующую синхронизацию данных из уже использующейся ERP-системы JDE в новую eCommerce платформу Magento.
Бизнес-модель компании заказчика предполагает, что его клиенты получают разные, отличные друг от друга, цены на товары и услуги. Таким образом наша вторая задача состояла в предоставлении возможности отображать цены таргетированно – для каждого клиента свой набор цен. Поэтому наше решение также должно предоставлять API для получения информации о ценах для каждого конкретного клиента.
Архитектурно решение включает в себя следующие программные модули:
- FTP to Staging DB import component
- Данные из JDE выгружаются на FTP в виде файлов с полями фиксированной длины.
- Для каждого заказчика создается отдельный файл. Идентификатор заказчика указывается в названии файла.
- Данный модуль считывает файлы и загружает данные в Staging DB.
- Pricing REST API
- Данная компонента позволяет получать информацию о ценах для конкретного заказчика (и по необходимости – для конкретных SKU).
- Magento import component
- По расписанию синхронизирует состояние Staging DB и Magento.
- Синхронизация производится инкрементным способом.
Технологии:
Stack: Java SE 8, Mule 4.2 Community Edition.
Infrastructure: Git, Anypoint Studio, Jira, Elasticsearch, Logstash, Kibana.
Frameworks: Spring 5.
Test Automation libraries: MUnit.
DB: MS SQL 2016.
Скриншоты:

Ежедневно в определенное время запускается процесс импорта новых записей из БД в Magento. Первоначально компонент отправляет запрос со списком новых артикулов с целью выяснения, какие из них необходимо обновить, а какие создать. После получения ответа процесс разделяется на 2 подпроцесса: обновление и создание продуктов.
Особенности проекта:
- Фиксированные сроки проекта.
- Декомпозиция на всех уровнях проекта производилась командой ДжазТим на основании изложенных бизнес требований в BRD (Business Requirements Document), не содержащем технических деталей.
- Использовался Mule CE, дополнительно были обработаны ограничения, связанные с:
- отсутствием программных модулей (коннекторов) из EE версии (Encrypted Properties, Transform Message component).
- CE версия имеет ограниченный набор доступных реализаций Input Stream, что вызывает проблемы с производительностью в ряде ситуаций.
- в CE имеются открытые баги, которые были закрыты в EE версии Mule.
Результат проекта:
- Команда справилась с возложенными обязанностями, выполнила свои функции.
- Все итерации были успешно выполнены с соблюдением эстимаций и основных требований.
Достижения компании на проекте:
- Команда успешно выполнила поставленную задачу, реализовав промежуточный слой интеграции, который сделал возможным постоянную синхронизацию данных между JDE и Magento.
- Мы активно участвовали на этапе выяснения требований к интеграции (форматы файлов, объемы данных), предлагали идеи к реализации.
- С учетом богатой Mule экспертизы мы смогли предвидеть множество потенциально узких мест, сложных ситуаций, учитывали их и сразу же “закрывали” в ходе разработки.
- Команде удалось обойти все ограничения, накладываемые Community Edition версией среды выполнения и достигнуть всех поставленных целей.
- Команда прошла полный путь жизненного цикла разработки, начиная с выяснения требований и проектирования системы и заканчивая подготовкой полного пакета сопроводительной документации, поддержкой и передачей проекта заказчику.
- Решение задокументировано по SOP (Standard Operating Procedures).
Что делали на проекте, наши обязанности:
- Развертывание инфраструктуры и рабочей среды.
- Установка и настройка необходимого ПО.
- Проектирование и создание таблиц Staging DB.
- Непосредственно разработка всех трех компонент.
- Документирование решения.
- Проведение разных видов тестирования силами команды разработки.
- Выявление и обсуждение требований напрямую с заказчиком.