Arquitectura hexagonal: qué es y por qué es clave para software ágil

Tabla de contenidos

Prescindir de él supondría cambiar por completo el modo en el que hacemos las cosas cada día. Hablamos del software, esa parte invisible de los sistemas informáticos que nos permiten controlarlos y operar con ellos. 

Detrás de aplicaciones y herramientas tecnológicas tan cotidianas como Android, Windows, iOS, Google Chrome, Microsoft Office, Gmail, WhatsApp, Spotify está el software. Para el desarrollo de estos software, los programadores se basan en diferentes patrones arquitectónicos. Uno de los más utilizados es la arquitectura hexagonal

Si no conoces el término, quédate por aquí para descubrirlo. Te explicamos qué es la arquitectura hexagonal y qué beneficios implica respecto a otros modelos.

arquitectura hexagonal

¿Qué es la arquitectura hexagonal?

Para comprender qué es la arquitectura hexagonal y cómo surgió este nuevo modelo, debemos detenernos a explicar brevemente el concepto de arquitectura de software. Este término hace referencia a la estructura y organización de un sistema de software

Dicho de otro modo, define la disposición y características de los diferentes componentes de un programa o aplicación, así como la forma en la que estos componentes interactúan y se comunican entre sí. 

Aclarado a qué nos referimos cuando hablamos de arquitectura de software, podemos pasar a definir la arquitectura hexagonal, también conocida como arquitectura de puertos y adaptadores

La arquitectura hexagonal es un patrón de diseño de software basado en la separación de responsabilidades cuyo objetivo es desvincular la lógica de negocio central de las interfaces externas

Para ello divide la aplicación en dos secciones: interior y exterior. El interior es el núcleo o corazón de la aplicación y contiene tanto la lógica o reglas de negocio como los objetos de dominio. En el exterior se encuentran los sistemas externos que interactúan con el núcleo de la aplicación como, por ejemplo, la interfaz de usuario, la API de proveedores o el acceso a la base de datos.

La conexión entre el interior y el exterior de la aplicación se efectúa mediante puertos. Y su implementación equivalente se conoce como adaptadores.

  • Puertos: Se refiere a puntos de entrada a la lógica de la aplicación (núcleo central). Son interfaces que hacen posible que entidades externas obtengan un conjunto de reglas para comunicarse con el núcleo. Puede ser tanto un puerto entrante, que recibe solicitudes del exterior, como un puerto saliente, que envía solicitudes al exterior.
  • Adaptadores: Estos componentes de software hacen posible que una tecnología interactúe con un puerto del hexágono, facilitando el intercambio de una determinada capa de la aplicación sin afectar la lógica empresarial. En otras palabras, es un mecanismo que traduce del formato utilizado por los sistemas externos al formato utilizado por la lógica empresarial y viceversa. Al hacerlo, garantizan que la aplicación principal permanezca independiente de las características específicas del mundo exterior.

Dentro de esta infraestructura podemos distinguir entre puertos primarios y puertos secundarios, así como adaptadores primarios y adaptadores secundarios

La diferencia entre ellos es que los primarios sirven como puerta de entrada al núcleo de la aplicación; están ahí para exponer la lógica empresarial y admitir componentes externos que llaman a la parte interna de la aplicación. 

Por su parte, los secundarios están orientados hacia el exterior y favorecen que el interior de la aplicación llame a elementos externos.

Juntos, los puertos y adaptadores primarios y secundarios forman un límite modular y flexible alrededor de la aplicación, separando la lógica del dominio de las dificultades técnicas. 

Este mecanismo de puertos y adaptadores (de ahí el nombre) garantiza una separación clara de responsabilidades entre el núcleo de la aplicación y sus actores externos, permitiendo que diferentes partes del sistema evolucionen de forma independiente. 

En definitiva, ningún comando o consulta entra o sale del núcleo sin pasar por los puertos. Y cada módulo externo que quiera comunicarse con el núcleo construye un adaptador y lo conecta al puerto.

Gracias a esta arquitectura modular, que conecta las partes del sistema entre sí a través de interfaces bien definidas, se favorece la flexibilidad y facilita el mantenimiento del software. Cualquier cambio en las interfaces externas ya no afectan de forma directa a la lógica interna, facilitando cualquier modificación sin tener que rehacer toda la estructura. 

Y, ¿por qué la forma de hexágono? Simplemente, es una forma visual de representar la arquitectura, donde el núcleo central equivale a la lógica de negocio y los lados del hexágono a las diferentes interfaces externas, tal y como muestra el gráfico.

Funcionamiento arquitectura hexagonal

La arquitectura hexagonal, una respuesta a la evolución del software

El concepto de arquitectura hexagonal fue propuesta por primera vez en 2005 por el ingeniero informático estadounidense Alistair Cockburn, también conocido por sus contribuciones a las metodologías ágiles.

Hasta entonces la arquitectura en capas había sido la tónica dominante. Sin embargo, este tipo de arquitectura planteaba limitaciones en cuanto a adaptabilidad, flexibilidad y mantenimiento se refiere, dado que los cambios en una capa podrían afectar a otras capas, generando consecuencias no deseadas. 

A medida que las necesidades de las empresas y los requisitos de los proyectos de software evolucionaron (como, por ejemplo, los softwares de gestión, SAP o CRM, entre otros) se hizo evidente que los sistemas debían poder adaptarse más fácilmente a los cambios. 

Para ello era necesario diseñar nuevas arquitecturas y el enfoque de Cockburn perseguía este objetivo al ofrecer un modelo donde los cambios en una parte del sistema no perturbaran al resto de partes.

Cockburn llegó a la conclusión de que la aplicación principal interactúa con la interfaz de usuario, las bases de datos o las pruebas automatizadas de una forma bastante similar.

Por lo tanto, todos estos sistemas externos podían separarse de la aplicación principal o lógica empresarial y comunicarse con ella independientemente de la tecnología, interactuando a través de puertos y adaptadores. Con ello se conseguía evitar fugas o confusiones entre la lógica empresarial y los componentes externos.

Lo que hace la arquitectura hexagonal es aplicar el principio de inversión de dependencias. Dicho principio establece que los módulos de alto nivel (lógica empresarial) no deben depender de módulos de bajo nivel (por ejemplo, el adaptador de base de datos), sino que ambos deberían depender de abstracciones.

Explicado de forma más sencilla es como cambiar la dirección en la que se orientan las conexiones de un sistema de software. En lugar de que las partes más importantes dependan directamente de los detalles específicos de las partes menos importantes, haces que las partes menos importantes dependan de interfaces generales. 

Imagina que construyes un robot. En lugar de que el cerebro del robot sepa todo sobre cómo funcionan el resto de componentes (piernas, brazos…), creas interfaces generales para cada uno de ellos. De este modo, el cerebro solo necesita saber cómo “enchufar” esas componentes y esos mismos componentes pueden ser intercambiados sin que el cerebro conozca los detalles técnicos exactos. 

Esto hace que el sistema resulte más flexible y fácil de cambiar, ya que cada parte puede ser reemplazada sin que afecte a las demás. Pero esta no es la única ventaja de la arquitectura hexagonal. ¿Las vemos?

¿Qué ventajas ofrece la arquitectura hexagonal?

La arquitectura hexagonal presenta claras ventajas frente a otro tipo de arquitectura gracias, en gran medida, a la capacidad de desacoplamiento que separa y delimita claramente la lógica de negocio de los detalles técnicos, como hemos detallado. 

Y, ¿en qué beneficios concretos se traduce este rasgo característico de la arquitectura de puertos y adaptadores?

Adaptabilidad, flexibilidad y escalabilidad

Vivimos en un mundo donde la tecnología evoluciona a un ritmo acelerado. Con la arquitectura hexagonal, cualquier software puede adaptarse más fácilmente a las tecnologías, servicios o interfaces emergentes sin tener que empezar desde cero. 

Esta capacidad permite a los equipos acomodarse a los cambios en los requisitos sin tener que reescribir grandes partes de la aplicación.

Asimismo, la escalabilidad de cualquier parte del software también se ve beneficiada, al poder escalar componentes específicos según sea necesario, sin afectar el rendimiento o la estabilidad de otras partes del software.

Pruebas mejoradas

Al aislar la lógica central, los desarrolladores pueden ejecutar pruebas automatizadas con mayor facilidad y rapidez, dado que pueden testear el dominio central sin depender de componentes externos y los cambios en un componente no afectarán negativamente a los demás. Esto contribuye a la calidad del código y a la identificación temprana de posibles problemas.

Mantenimiento

La arquitectura hexagonal facilita la comprensión y el mantenimiento del sistema al proporcionar una estructura modular y clara. Al tener la parte principal del sistema aislada, es más fácil mantenerla y asegurarse de que funcione sin problemas. 

O si se requiere cambiar la estética del software o la forma en que se conecta a una base de datos, no existe la preocupación de que un cambio en un área afecte a la funcionalidad de todo el sistema, poniendo en riesgo el trabajo. Este rasgo ayuda a reducir el tiempo y el esfuerzo dedicados a comprender y depurar el código.

En definitiva, se simplifica el mantenimiento del software a largo plazo, ya que los cambios en una parte del sistema tienen un impacto limitado en otras.

Y, ¿las desventajas de la arquitectura hexagonal?

Aunque cada vez más desarrolladores optan por la arquitectura hexagonal para dar vida a sus proyectos de software, es cierto que este patrón presenta ciertas desventajas. 

Por un lado, está la complejidad en comparación con otros enfoques más simples, puesto que es necesario definir, puertos y adaptadores interfaces, además de gestionar la inversión de dependencias. Todo ello aumenta el tiempo de desarrollo inicial. 

Además, la arquitectura hexagonal conlleva una curva de aprendizaje elevada para aquellos informáticos que no estén familiarizados con ella. Comprender cada detalle de implementación puede requerir tiempo y experiencia. Sin ella, se corre el riesgo de malinterpretar el patrón y diseñar un código erróneo o una aplicación no escalable o mantenible.

Tampoco podemos olvidar el coste de mantenimiento informático al existir un mayor número de componentes que se deben testear y perseverar. 

En general, los beneficios de la arquitectura hexagonal superan a las desventajas, aunque es importante tenerlas en cuenta antes de elegir este modelo arquitectónico para una aplicación, porque si es pequeña o sencilla, la arquitectura hexagonal podría ser considerada como una solución demasiado robusta y complicada. 

En cambio, la arquitectura hexagonal es especialmente útil en proyectos complejos que requieren integración con varios sistemas externos. De todas formas, será las necesidades de cada aplicación las que determinen la elección de una arquitectura u otra.

Ahora que comprendes qué es la arquitectura hexagonal, sus puntos fuertes y sus limitaciones, estás más preparado para adaptarla a las necesidades y el contexto de tu proyecto. Recuerda que si necesitas el apoyo de un servicio informático para empresas, desde Sale Systems podemos ayudarte.

Déjanos tu comentario

Deja una respuesta

Si tu empresa necesita servicios informáticos podemos ayudarte

Desde el mantenimiento informático que garantiza la eficiencia y longevidad de tus equipos, hasta soluciones avanzadas en seguridad informática para proteger tus datos más valiosos. Ofrecemos consultoría informática personalizada para alinear la tecnología con tus objetivos empresariales, servicios cloud innovadores para una mayor flexibilidad y escalabilidad, y servicios de instalación y certificación de redes informáticas para asegurar conexiones fiables y rápidas. No dejes que los desafíos tecnológicos ralenticen tu progreso. Contáctanos hoy para obtener más información y dar el primer paso hacia una solución informática integral y a medida para tu empresa

Más información
Últimas entradas

Los 9 mejores blog de ciberseguridad para estar al día

La ciberseguridad es un tema tan candente como preocupante para...

Leer más29 febrero, 2024

Hacking Ético: Guía Completa para Hackers Éticos

A través de auditorías éticas y pruebas de intrusión, los...

Leer más22 febrero, 2024

Blog empresarial: una herramienta imprescindible

La importancia de tener un blog empresarial en la era...

Leer más15 febrero, 2024

Mantenimiento de ordenadores: qué es y cómo te ayuda a optimizar la productividad empresarial

Nuestro servicio de asistencia técnica es eficaz e inmediato, ya...

Leer más8 febrero, 2024