Contexto del Proyecto
Un proveedor de energía verde del Reino Unido (100Green.com) necesitaba migrar de un sitio web .NET obsoleto a una solución de hosting más asequible. El departamento de ventas les vendió WordPress, pero la arquitectura de WordPress no es ideal para lógica de negocio compleja. El desafío: separar la lógica de negocio del mecanismo de entrega (WordPress) manteniendo el requisito del cliente.
Reto Técnico
El CRM del cliente proporciona datos de tarifas en bruto vía API basados solo en código postal. El sistema necesitaba calcular tarifas complejas (Tarifa Diurna, Tarifa Nocturna, Cargo Fijo, Gasto Mensual Estimado) basadas en múltiples variables: tipo de energía (gas, electricidad o ambas), smart meter (sí/no), medidor de 2 tarifas (sí/no), y tipo de consumo (bajo, medio, alto o uso personalizado). El CRM no podía realizar estos cálculos—tuvimos que construir una calculadora de dominio que procesa datos en bruto usando fórmulas de negocio específicas.
Solución Arquitectónica
En lugar de acoplar todo a la arquitectura espagueti de WordPress, diseñamos una solución que separa bounded contexts del mecanismo de entrega:
- • Plugin de API de WordPress: Un módulo que crea endpoints para recibir peticiones solo desde nuestro dominio (con mecanismos de seguridad adecuados para prevenir peticiones cross-domain)
- • Librerías PHP puras (sin framework): Estructuras vertical sliced con capa Application (casos de uso), capa Domain (políticas, interfaces, contratos), y capa Infrastructure (implementaciones específicas)
- • Aplicación React embebida en WordPress: Una calculadora que se comunica con nuestra API personalizada, que contiene todas las reglas de negocio abstraídas en nuestras librerías que consultan el CRM del cliente
- • Principio de estabilidad: Los módulos más estables (librerías de negocio) están más alejados de los más volátiles (frontend React), creando una separación clara entre presentación y lógica de negocio
Resultados
Fricción mínima con WordPress: solo una app React embebida en el DOM de una página de WordPress. El resto es lógica de negocio pura, adecuadamente separada. El sistema demuestra cómo aplicar DDD, arquitectura hexagonal, bounded contexts y principios de arquitectura orientada a servicios incluso cuando se está limitado por un mecanismo de entrega como WordPress.
Tecnologí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 de la lógica de negocio del mecanismo de entrega de WordPress
- • Calculadora de dominio independiente de la infraestructura
- • Arquitectura vertical sliced con límites claros
- • Principio de estabilidad aplicado: módulos estables protegidos del frontend volátil