Contexto do Proxecto
Un proxecto B2B para un retailer téxtil centrado en integrar datos analíticos expostos a través de Power BI en múltiples tendas Magento. En lugar de tratar Magento como o núcleo da lóxica de negocio, decidíuse externalizar e centralizar a complexidade do dominio nun middleware dedicado, posicionando Magento como un consumidor descendente responsable só da execución comercial. Este enfoque permitiu que o sistema evolucionara independentemente do modelo de datos interno de Magento e os seus mecanismos de importación.
Desafío Técnico
O desafío principal foi a fase de Transformación do proceso ETL, onde os datos analíticos necesitaban converterse en produtos comerciais completos.
Isto requiría:
- • Interpretar conxuntos de datos de Power BI
- • Aplicar regras de negocio complexas e en evolución
- • Xerar definicións completas de produtos: atributos e conxuntos de atributos, produtos configurables e variacións, lóxica de prezos e restricións específicas do sector téxtil
Dada a natureza crítica desta lóxica, a corrección, a predictibilidade e a capacidade de proba eran tan importantes como a completitude funcional.
Solución Arquitectónica
A solución foi un middleware ETL personalizado construído usando Domain-Driven Design e Arquitectura Hexagonal (Portos e Adaptadores).
- • Núcleo hexagonal e independencia do framework: No centro atópase unha capa de dominio pura, libre de dependencias de frameworks e infraestrutura. O Dominio define entidades e Obxectos de Valor, Casos de Uso que representan transformacións ETL, e contratos de saída (Portos) que describen os resultados das transformacións. As preocupacións de infraestrutura empúxanse cara a fóra e conéctanse a través de adaptadores, asegurando que o dominio permaneza estable incluso se a tecnoloxía circundante cambia.
- • Portos, Adaptadores e efectos secundarios controlados: Todas as interaccións externas manéxanse a través de Portos definidos no Dominio e Adaptadores implementados na capa de Infraestrutura. Este enfoque permite múltiples implementacións concretas, substitución fluida de frameworks (Laravel, Symfony, etc.), e efectos secundarios controlados e explícitos. As receitas de Inxección de Dependencias conectan o sistema sen filtrar infraestrutura ao dominio.
- • ETL como fluxo de traballo orientado ao dominio: O proceso ETL modelouse como un fluxo de traballo de negocio, non como un script técnico: extracción e normalización de datos en DTOs, execución de Casos de Uso de dominio, aplicación de regras de negocio, e emisión de Resultados normalizados a través do Patrón de Resultado. Os importadores de Magento consumen estes resultados de forma asíncrona mediante traballos cron.
Estratexia de Probas e Calidade
As probas e a calidade foron preocupacións de primeira clase, habilitadas directamente pola arquitectura hexagonal.
- • Probas a nivel de dominio: A capa de Dominio é completamente probable de forma illada. Non se require inicialización de framework, non hai base de datos, sistema de arquivos ou servizos externos involucrados. As probas céntranse en regras de negocio, corrección de transformacións, casos límite e escenarios de validación.
- • Substitución de adaptadores para probas: Inxectáronse adaptadores simplificados ou falsos durante as probas. O comportamento da infraestrutura podía simularse de forma determinista, permitindo unha execución de probas rápida e confiable.
- • Validación baseada en resultados: O uso do Patrón de Resultado fixo explícitos os resultados. As probas podían verificar transformacións exitosas, éxitos parciais con advertencias, e erros de validación de negocio. Isto eliminou a ambigüidade e reduciu a dependencia de efectos secundarios ou logs.
- • Confianza no cambio: Debido a que a lóxica de negocio estaba illada, era determinista e estaba cuberta por probas enfocadas, o sistema podía evolucionar de forma segura, incluso cando as regras de negocio cambiaban frecuentemente.
Resultados
A arquitectura logrou un forte desacoplamento entre a lóxica de negocio e as plataformas de e-commerce, independencia completa do framework a nivel de dominio, alta capacidade de proba que permite refactorización con confianza, e unha arquitectura escalable adecuada para o crecemento multicanal. O sistema podía evolucionar de forma segura a medida que as regras de negocio cambiaban, coas probas proporcionando retroalimentación inmediata sobre a corrección.
Tecnoloxías
- • PHP 7/8
- • Domain-Driven Design (DDD)
- • Hexagonal Architecture (Ports & Adapters)
- • ETL Architecture
- • Use Cases Pattern
- • DTOs & Result Pattern
- • Dependency Injection Containers (DIC)
- • Magento 2
- • Power BI
- • Cron-based import pipelines
Logros Clave
- • Desacoplamento completo entre a lóxica de negocio e as plataformas de e-commerce
- • Núcleo de dominio independente do framework con cero dependencias de infraestrutura
- • Arquitectura hexagonal que permite múltiples implementacións de infraestrutura
- • Proceso ETL modelado como lóxica de negocio orientada ao dominio
- • Arquitectura escalable adecuada para o crecemento multicanal