Arquitectura Hexagonal (Puertos y Adaptadores)
La arquitectura hexagonal es un patrón de diseño que busca desacoplar la lógica de negocio del resto de la infraestructura, permitiendo que el núcleo de la aplicación sea independiente de frameworks, bases de datos o interfaces externas.
Principios clave
- Núcleo independiente: la lógica de negocio se mantiene aislada.
- Puertos: interfaces que definen cómo el núcleo se comunica con el exterior.
- Adaptadores: implementaciones concretas que conectan los puertos con tecnologías específicas.
- Inversión de dependencias: la infraestructura depende del núcleo, no al revés.
Ventajas
Ejemplo práctico
En una aplicación de ventas:
- Dominio: clases que representan pedidos, usuarios y reglas de negocio.
- Puertos: interfaces como
RepositorioPedidosoServicioPago. - Adaptadores: persistencia en PostgreSQL, integración con MercadoPago, API REST para exponer la lógica.
Comparación
| Arquitectura | Característica principal | Problema común | Cómo lo resuelve Hexagonal |
|---|---|---|---|
| Monolítica | Todo acoplado en capas | Difícil de mantener | Separa núcleo de infraestructura |
| MVC | Divide en modelo, vista, controlador | Lógica mezclada con UI | UI como adaptador, núcleo aislado |
| Hexagonal | Núcleo + puertos/adaptadores | Dependencia de frameworks | Núcleo independiente y adaptable |