Arquitectura Hexagonal: Separando el Juego del Tablero

arquitectura-hexagonal/introduccion
@beresiartejuan 06-05-2025

Imaginá que estás programando un juego de ajedrez.
Las reglas del juego son siempre las mismas: cómo se mueve el alfil, qué pasa si hay jaque mate, etc.
Pero podés jugarlo en:

El medio cambia, pero las reglas no.

Esa es la idea base de la arquitectura hexagonal

La arquitectura hexagonal (basado en algo llamado “ports and adapters”) parte de una idea simple pero poderosa:

Separar el núcleo del sistema de todo lo que está afuera.

Esto permite que tus reglas no dependan de si estás usando Express, React, PostgreSQL o una API externa.


¿Qué es el “núcleo” y qué es el “exterior”?

La arquitectura hexagonal divide el sistema en tres conceptos clave:

⚙️ Dominio: Las Reglas del Juego

Es el corazón del sistema.
Acá vive la lógica que no cambia aunque cambies la base de datos, el framework o el frontend.

En nuestro ejemplo de ajedrez, sería:

En una app real, sería:

El dominio no debería tener ni una línea de código que diga “fetch”, “axios”, “SQL”, “res.send()” o “console.log()”. Es puro conocimiento del negocio.

🧠 Aplicación: El Coordinador

Es quien orquesta las acciones. No decide las reglas, pero las usa.

No contiene reglas del negocio en sí, pero sabe cómo aplicar esas reglas en orden correcto.

🌍 Infraestructura: Los Conectores con el Mundo

Es el “tablero” donde se juega.
Incluye todo lo que conecta nuestro sistema con el exterior:

Todo esto debería estar en la periferia del sistema, y no mezclado con el dominio.


¿Por Qué Es Tan Potente Esta Separación?

Separar estos mundos trae muchos beneficios:


¿Y Por Qué “Hexagonal”?

El nombre viene de un diagrama original que mostraba al núcleo con varios “puertos” conectados por adaptadores alrededor, como un hexágono.

Pero el concepto no depende de la forma.
Podríamos llamarla “arquitectura cebolla”, “arquitectura de capas claras”, o simplemente “arquitectura con sentido común”.

Conclusión: No Es Magia, Es Separación de Roles

La arquitectura hexagonal no es un framework ni una librería.
Es una forma de pensar tu código que pone las reglas en el centro, y deja todo lo demás como accesorio.

Lección Anterior Curso Siguiente Lección