Context del Projecte
Un projecte B2B per a un retailer tèxtil centrat en integrar dades analítiques exposades a través de Power BI en múltiples botigues Magento. En lloc de tractar Magento com el nucli de la lògica de negoci, es va decidir externalitzar i centralitzar la complexitat del domini en un middleware dedicat, posicionant Magento com un consumidor descendent responsable només de l'execució comercial. Aquest enfocament va permetre que el sistema evolucionés independentment del model de dades intern de Magento i els seus mecanismes d'importació.
Desafiament Tècnic
El desafiament principal va ser la fase de Transformació del procés ETL, on les dades analítiques necessitaven convertir-se en productes comercials complets.
Això requeria:
- • Interpretar conjunts de dades de Power BI
- • Aplicar regles de negoci complexes i en evolució
- • Generar definicions completes de productes: atributs i conjunts d'atributs, productes configurables i variacions, lògica de preus i restriccions específiques del sector tèxtil
Donada la naturalesa crítica d'aquesta lògica, la correcció, la predictibilitat i la capacitat de prova eren tan importants com la completitud funcional.
Solució Arquitectònica
La solució va ser un middleware ETL personalitzat construït usant Domain-Driven Design i Arquitectura Hexagonal (Ports i Adaptadors).
- • Nucli hexagonal i independència del framework: Al centre es troba una capa de domini pura, lliure de dependències de frameworks i infraestructura. El Domini defineix entitats i Objectes de Valor, Casos d'Ús que representen transformacions ETL, i contractes de sortida (Ports) que descriuen els resultats de les transformacions. Les preocupacions d'infraestructura s'empenyen cap a fora i es connecten a través d'adaptadors, assegurant que el domini romangui estable fins i tot si la tecnologia circumdant canvia.
- • Ports, Adaptadors i efectes secundaris controlats: Totes les interaccions externes es gestionen a través de Ports definits al Domini i Adaptadors implementats a la capa d'Infraestructura. Aquest enfocament permet múltiples implementacions concretes, substitució fluida de frameworks (Laravel, Symfony, etc.), i efectes secundaris controlats i explícits. Les receptes d'Injecció de Dependències connecten el sistema sense filtrar infraestructura al domini.
- • ETL com a flux de treball orientat al domini: El procés ETL es va modelar com un flux de treball de negoci, no com un script tècnic: extracció i normalització de dades en DTOs, execució de Casos d'Ús de domini, aplicació de regles de negoci, i emissió de Resultats normalitzats a través del Patró de Resultat. Els importadors de Magento consumeixen aquests resultats de forma asíncrona mitjançant treballs cron.
Estratègia de Proves i Qualitat
Les proves i la qualitat van ser preocupacions de primera classe, habilitades directament per l'arquitectura hexagonal.
- • Proves a nivell de domini: La capa de Domini és completament provable de forma aïllada. No es requereix inicialització de framework, no hi ha base de dades, sistema de fitxers o serveis externs involucrats. Les proves se centren en regles de negoci, correcció de transformacions, casos límit i escenaris de validació.
- • Substitució d'adaptadors per proves: Es van injectar adaptadors simplificats o falsos durant les proves. El comportament de la infraestructura es podia simular de forma determinista, permetent una execució de proves ràpida i fiable.
- • Validació basada en resultats: L'ús del Patró de Resultat va fer explícits els resultats. Les proves podien verificar transformacions exitoses, èxits parcials amb advertències, i errors de validació de negoci. Això va eliminar l'ambigüitat i va reduir la dependència d'efectes secundaris o logs.
- • Confiança en el canvi: A causa que la lògica de negoci estava aïllada, era determinista i estava coberta per proves enfocades, el sistema podia evolucionar de forma segura, fins i tot quan les regles de negoci canviaven freqüentment.
Resultats
L'arquitectura va aconseguir un fort desacoblament entre la lògica de negoci i les plataformes d'e-commerce, independència completa del framework a nivell de domini, alta capacitat de prova que permet refactorització amb confiança, i una arquitectura escalable adequada per al creixement multicanal. El sistema podia evolucionar de forma segura a mesura que les regles de negoci canviaven, amb les proves proporcionant retroalimentació immediata sobre la correcció.
Tecnologies
- • 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
Assoliments Clau
- • Desacoblament complet entre la lògica de negoci i les plataformes d'e-commerce
- • Nucli de domini independent del framework amb zero dependències d'infraestructura
- • Arquitectura hexagonal que permet múltiples implementacions d'infraestructura
- • Procés ETL modelat com a lògica de negoci orientada al domini
- • Arquitectura escalable adequada per al creixement multicanal