Contexto do Proxecto
Un provedor de enerxía verde do Reino Unido (100Green.com) necesitaba migrar dun sitio web .NET obsoleto a unha solución de hosting máis asequible. O departamento de ventas vendeulles WordPress, pero a arquitectura de WordPress non é ideal para lóxica de negocio complexa. O desafío: separar a lóxica de negocio do mecanismo de entrega (WordPress) mantendo o requisito do cliente.
Reto Técnico
O CRM do cliente proporciona datos de tarifas en bruto vía API baseados só en código postal. O sistema necesitaba calcular tarifas complexas (Tarifa Diurna, Tarifa Nocturna, Cargo Fixo, Gasto Mensual Estimado) baseadas en múltiples variables: tipo de enerxía (gas, electricidade ou ambas), smart meter (si/non), medidor de 2 tarifas (si/non), e tipo de consumo (baixo, medio, alto ou uso personalizado). O CRM non podía realizar estes cálculos—tivemos que construír unha calculadora de dominio que procesa datos en bruto usando fórmulas de negocio específicas.
Solución Arquitectónica
En vez de acoplar todo á arquitectura espagueti de WordPress, deseñamos unha solución que separa bounded contexts do mecanismo de entrega:
- • Plugin de API de WordPress: Un módulo que crea endpoints para recibir peticións só desde o noso dominio (con mecanismos de seguridade adecuados para prevenir peticións cross-domain)
- • Librerías PHP puras (sen framework): Estruturas vertical sliced con capa Application (casos de uso), capa Domain (políticas, interfaces, contratos), e capa Infrastructure (implementacións específicas)
- • Aplicación React embebida en WordPress: Unha calculadora que se comunica coa nosa API personalizada, que contén todas as regras de negocio abstraídas nas nosas librerías que consultan o CRM do cliente
- • Principio de estabilidade: Os módulos máis estables (librerías de negocio) están máis afastados dos máis volátiles (frontend React), creando unha separación clara entre presentación e lóxica de negocio
Resultados
Fricción mínima con WordPress: só unha app React embebida no DOM dunha páxina de WordPress. O resto é lóxica de negocio pura, adecuadamente separada. O sistema demostra como aplicar DDD, arquitectura hexagonal, bounded contexts e principios de arquitectura orientada a servizos incluso cando se está limitado por un mecanismo de entrega como WordPress.
Tecnoloxías
- • WordPress (delivery mechanism)
- • Raw PHP (framework-free)
- • React
- • Domain-Driven Design
- • Hexagonal Architecture
- • Vertical Sliced Structures
- • Stability Rule Principle
Logros Clave
- • Separación completa da lóxica de negocio do mecanismo de entrega de WordPress
- • Calculadora de dominio independente da infraestrutura
- • Arquitectura vertical sliced con límites claros
- • Principio de estabilidade aplicado: módulos estables protexidos do frontend volátil