Contexto do Proxecto
Un cliente necesitaba conectar o seu catálogo de Magento con AliExpress para ampliar canles de venda. Magento serve como a súa plataforma B2C/B2B, mentres que AliExpress actúa como marketplace onde operan como Merchant/Seller. O obxectivo era sincronizar produtos de cada tenda Magento a AliExpress, permitindo aos merchants xestionar o seu catálogo en Magento e exportalo automaticamente a AliExpress.
Reto Técnico
No papel parecía simple, pero xurdiron desafíos do mundo real. AliExpress proporciona unha API complexa, polo que crearon un SDK como middleware para abstraer a comunicación coa API. Porén, este SDK presentaba problemas críticos:
- • Sen definicións claras de casos de uso: O SDK carecía de límites de negocio claros e casos de uso como puntos de entrada, forzando aos desenvolvedores a loitar con interaccións de baixo nivel coa API
- • Sen empaquetado axeitado: O SDK era un ficheiro público descargado manualmente e incluído no código fonte—sen autoloader, sen paquete Composer, sen estándares PSR. Isto requiría traballo de integración manual no noso módulo de Magento
Solución Arquitectónica
Decidimos construír o noso propio SDK e usalo como librería externa no módulo de Magento. A arquitectura consistía en tres capas:
- • Librería SDK personalizada: Abstrae toda a comunicación coa API de AliExpress usando o patrón Mediator. Cada caso de uso está representado por un obxecto que representa a intención (Use Case) e recibe un DTO (datos para POST/GET á API de AliExpress). Isto permite chamar a casos de uso como se foran APIs REST—lembra, todo é unha API
- • Módulo de Magento (capa de Casos de Uso): Define casos de uso para democratizar o uso da API de AliExpress a nivel de aplicación. Este módulo usa indirección (a través do SDK) para interactuar coa API de AliExpress. Ten dependencias mínimas de Magento e podería ter sido unha librería PHP simple—só define casos de uso co SDK, converténdoo nunha API para a maquinaria
- • Módulo de Magento (capa de Infraestrutura): Interactúa co backoffice, máis próximo á infraestrutura. Define configuracións de Magento para credenciais de merchants, páxinas do backoffice para visualizar e exportar produtos a AliExpress, importar pedidos de AliExpress a Magento, e un Cron para sincronización periódica de produtos e pedidos
Resultados
Esta arquitectura reduce a fricción co framework creando capas de responsabilidade independentes que non dependen do framework. A lóxica de negocio está completamente separada da infraestrutura de Magento, e os casos de uso están claramente definidos, facendo o sistema mantible e testable.
Tecnoloxías
- • PHP & Magento 2
- • Domain-Driven Design
- • Mediator Pattern
- • Hexagonal Architecture
- • Use Case Pattern
- • PSR Standards
Logros Clave
- • Definicións claras de casos de uso como puntos de entrada de API
- • Lóxica de negocio independente do framework (podería ser calquera librería PHP)
- • Empaquetado axeitado do SDK seguindo estándares PSR
- • Separación de responsabilidades: capa de Casos de Uso vs capa de Infraestrutura