La Arquitectura Hexagonal, conceptualizada por Alistair Cockburn, es un patrón arquitectónico que promueve una clara separación entre la lógica de negocio central (el 'core' o 'dominio') y los detalles de infraestructura o tecnología. Su nombre proviene de la representación visual de la aplicación como un hexágono, con 'puertos' (interfaces) en sus lados que definen las interacciones con el exterior. Los 'adaptadores' son las implementaciones concretas de estos puertos, traduciendo las interacciones entre el formato específico de la tecnología externa y el formato agnóstico del dominio. El objetivo principal es que el dominio no tenga conocimiento de cómo se interactúa con él o cómo interactúa con el mundo exterior, dependiendo únicamente de interfaces abstractas.

Este patrón es ampliamente adoptado en el desarrollo de microservicios y aplicaciones empresariales donde la resiliencia al cambio tecnológico es crucial. Aunque no hay sistemas o herramientas específicas que 'usen' la Arquitectura Hexagonal per se (es un estilo arquitectónico), sus principios se ven reflejados en frameworks y metodologías. Por ejemplo, en el ecosistema Java, frameworks como Spring Boot facilitan la implementación de esta arquitectura al permitir una clara separación de capas y la inyección de dependencias para los adaptadores. En el ámbito de .NET, la Clean Architecture y la Onion Architecture son evoluciones o variantes que comparten los mismos principios fundamentales de aislamiento del dominio. Proyectos que buscan alta testabilidad y la capacidad de cambiar fácilmente de base de datos, UI o proveedores de servicios externos, a menudo aplican estos principios.

Para un Arquitecto, la Arquitectura Hexagonal es fundamental porque promueve la resiliencia y la agilidad. Permite que la lógica de negocio, que es el activo más valioso de una aplicación, sea independiente de las decisiones tecnológicas volátiles. Esto se traduce en una mayor testabilidad (el dominio puede probarse sin necesidad de infraestructura real), un mantenimiento más sencillo y una capacidad superior para adaptarse a nuevos requisitos o cambios tecnológicos sin reescribir el core. El principal trade-off es una mayor complejidad inicial debido a la necesidad de definir interfaces y adaptadores, lo que puede parecer excesivo para aplicaciones muy pequeñas o de corta vida. Sin embargo, para sistemas complejos y de larga duración, el valor estratégico de desacoplamiento y la reducción del 'vendor lock-in' superan con creces esta inversión inicial, facilitando la evolución y escalabilidad del sistema.