La arquitectura hexagonal —también llamada Ports and Adapters— es un estilo propuesto por Alistair Cockburn en 2005 que aísla el dominio de la aplicación en el centro y lo separa estrictamente del mundo exterior. El dominio expone "puertos" (interfaces) que describen lo que necesita y lo que ofrece; los "adaptadores" implementan esos puertos para tecnologías concretas (Postgres, Redis, HTTP, CLI, colas, APIs externas). El núcleo no sabe ni le importa qué tecnología hay al otro lado.
La motivación es protegerse de la inercia tecnológica. Si la lógica de negocio depende directamente de un ORM concreto, de un framework HTTP, de un broker de mensajes, cualquier cambio en esa infraestructura (cambio de proveedor, evolución de versiones, migración a cloud) toca el código de dominio. Con ports and adapters, el dominio se mantiene puro, se testea sin infraestructura (con adaptadores in-memory) y la decisión de qué BD o qué framework usar es reemplazable.
En la práctica el código se organiza en tres capas: domain (entidades, value objects, agregados, servicios de dominio, puertos), application (casos de uso que orquestan el dominio), infrastructure (adaptadores concretos: implementaciones de repositorios, controladores HTTP, listeners de cola, clientes de APIs externas). Las dependencias siempre van hacia adentro: infrastructure depende de application, application depende de domain, nunca al revés.
En 10Code aplicamos arquitectura hexagonal en proyectos con dominio complejo donde la separación dominio/infraestructura aporta valor real (banca, salud, sector público con regulación). Para CRUD simples sería sobrediseño. Combinada con DDD y CQRS dentro de un monolito modular, ofrece un sistema testeable, evolutivo y resistente a cambios tecnológicos.
En 10Code llevamos más de una década aplicando estas tecnologías a productos reales. Si quieres comentarnos tu caso, escríbenos y te respondemos personalmente.
Hablar con un ingeniero