Arquitectura Hexagonal: Diseña aplicaciones flexibles y desacopladas

¿Qué es la Arquitectura Hexagonal?
Es un modelo de diseño donde la aplicación se organiza alrededor de su núcleo (lógica de negocio), y se conecta con el mundo exterior mediante puertos y adaptadores.
La idea clave:
El sistema debe poder funcionar sin depender directamente de bases de datos, interfaces gráficas o APIs externas.
¿Por qué se llama “hexagonal”?
El término “hexagonal” es conceptual, no literal. Representa que la aplicación puede tener múltiples puntos de entrada y salida (no solo uno), como:
- Web
- Aplicaciones móviles
- APIs
- Consolas
- Bases de datos
Componentes principales
1. Núcleo (Dominio)
- Contiene la lógica de negocio.
- Es independiente de cualquier tecnología.
2. Puertos (Ports)
- Son interfaces que definen cómo interactuar con el sistema.
- Existen dos tipos:
- Puertos de entrada: reciben solicitudes (ej: crear usuario)
- Puertos de salida: comunican con servicios externos (ej: guardar en BD)
3. Adaptadores (Adapters)
- Implementan los puertos.
- Permiten conectar el sistema con el mundo exterior.
Ejemplos:
- API REST (adaptador de entrada)
- Base de datos (adaptador de salida)
- Servicios externos
Flujo de funcionamiento
- Un usuario hace una petición (ej: desde una API)
- El adaptador traduce esa petición al formato del sistema
- Se ejecuta un caso de uso en el núcleo
- Si es necesario, el núcleo usa un puerto de salida
- Un adaptador externo responde (ej: base de datos)
Principios clave
Desacoplamiento total
La lógica del negocio no depende de herramientas externas.
Inversión de dependencias
Los detalles técnicos dependen del núcleo, no al revés.
Alta testabilidad
Puedes probar el sistema sin necesidad de infraestructura real.
Flexibilidad tecnológica
Puedes cambiar base de datos, framework o API sin afectar el núcleo.
Ejemplo práctico
Supongamos una app de pedidos:
- Puerto de entrada:
crearPedido() - Adaptador de entrada: API en Express
- Puerto de salida:
guardarPedido() - Adaptador de salida: MongoDB o PostgreSQL
Si cambias la base de datos, solo modificas el adaptador, no la lógica.
Ventajas
- Alta mantenibilidad
- Código desacoplado
- Fácil de escalar
- Permite múltiples interfaces
Desventajas
- Puede ser más compleja al inicio
- Requiere buen diseño de interfaces
- Más abstracción
¿Cuándo usarla?
✅ Sistemas complejos
✅ Aplicaciones que evolucionan constantemente
✅ Proyectos donde cambiar la tecnología es probable
❌ Proyectos pequeños o muy simples
Conclusión
La Arquitectura Hexagonal te permite construir software preparado para el cambio. Al separar claramente el núcleo del sistema de sus dependencias externas, logras aplicaciones más robustas, flexibles y fáciles de mantener.