Blog

ES
Arquitectura Hexagonal Explicada

Arquitectura Hexagonal Explicada

6 min de lectura

A través de ejemplos simples y diagramas visuales, descubrirás cómo desacoplar tu lógica de negocio de frameworks y bases de datos, mejorar la mantenibilidad de tu código y escribir aplicaciones más limpias, testeables y escalables.

¿Qué es la Arquitectura Hexagonal?

La arquitectura hexagonal, también conocida como Puertos y Adaptadores (Ports & Adapters), es una forma de organizar tu código para que el dominio (lógica del negocio) no dependa de frameworks, base de datos o APIs externos. Aislando la lógica del negocio de las preocupaciones técnicas externas, esto hace que sea fácil de probar y mantener el código.

Tu negocio es lo importante, la tecnología se adapta.

Problema que intenta resolver

Antes de la arquitectura hexagonal, muchos proyectos seguían una estructura tradicional por capas donde la lógica estaba mezclada con el acceso a los datos:

Flujo de arquitectura por capas

Si un día se debe migrar de PostgreSQL a MongoDB, nos encontramos con un problema gigante. ¿Por qué? Porque el código está acoplado a tecnologías específicas.

La importancia del domino

En este modelo, el dominio es agnóstico a tecnologías y no conoce el mundo exterior, el dominio no sabe qué es un JSON, y mucho menos que es una base de datos. El mundo exterior es el que se adapta al dominio.

El dominio contiene los siguientes elementos:

  • Entidades
  • Reglas de negocio
  • Casos de uso
  • Puertos (Interfaces)

Y este dominio no sabe nada de tecnologías como Spring, JPA, JSON, etc.

Meme de dominio arquitectura hexagonal

🚪 Puertos (Ports)

Los puertos son interfaces que el dominio define. El dominio dice: Necesito guardar usuarios, no me importa cómo. Por ejemplo, el dominio dice: "Necesito un método para guardar un usuario, y no me importa en dónde ni cómo".

🔌 Adaptadores (Adapters)

Los adaptadores son las implementaciones reales, ya con tecnologías específicas.

  • Adaptadores primarios (Driving): Inician la acción. Son la puerta de entrada (controladores REST, CLI).
  • Adaptadores secundarios (Driven): Son herramientas que el dominio usa. Son la puerta de salida (implementaciones de repositorios en SQL, clientes de envío de email, APIs de terceros).

El flujo de arquitectura hexagonal

Flujo de la arquitectura hexagonal

  • Domain & Application: Es el centro del hexágono. Aquí reside la lógica que no cambia si decides cambiar de base de datos o de framework web
  • Ports: Son las "ventanas" del hexágono. Definen cómo se puede interactuar con el núcleo sin saber quién lo está haciendo
  • Adapters: Son el puente entre el mundo exterior y los puertos.
    • Primarios (Driving): Inician la acción (ej. un controlador que recibe una petición HTTP)
    • Secundarios (Driven): Son llamados por la aplicación (ej. un adaptador de SQL que implementa una interfaz de repositorio)

Beneficios

  • Bajo acoplamiento: Puedes cambiar tu base de datos o proveedor de correo en un tiempo más corto.
  • Facilita el testing: Poder probar la lógica de negocio sin levantar una base de datos o servidor.
  • Alta mantenibilidad: Código más limpio y fácil de leer.
  • Independencia de frameworks: No estás casado con herramientas externas.

La arquitectura hexagonal no es una moda pasajera ni algo innecesario, es una forma de decir que el negocio es lo más importante, el resto es reemplazable.

Comparte este artículo en

Avatar byandrev

Andres Parra

Software Engineer

Soy Andrés Parra, Ingeniero de Software apasionado por crear soluciones tecnológicas escalables e innovadoras. Me especializo en la construcción de aplicaciones web modernas, dominando un stack versátil que incluye JavaScript, TypeScript, Python y Java, junto con frameworks como React, Next.js y Spring Boot. Interesado en las últimas tecnologías y herramientas de desarrollo.