Arquitectura Hexagonal: Puertos y Adaptadores en Desarrollo de Software

Clase 6 de 24Curso de Arquitecturas Limpias para Desarrollo de Software

Resumen

¿Qué es la arquitectura hexagonal y por qué utilizarla?

La arquitectura hexagonal, también conocida como arquitectura de puertos y adaptadores, es una metodología de diseño de software que busca crear sistemas más modulares y mantenibles. Esta arquitectura, propuesta por Alistair Cockburn en 2005, se centra en aislar el núcleo de la aplicación de los elementos externos mediante puertos y adaptadores. Esta separación fomenta una mayor flexibilidad y adaptabilidad en la integración de nuevas tecnologías o en la modificación de los componentes del sistema.

La estructura se organiza alrededor de un componente central llamado "aplicación", visualizado como un hexágono, que representa el dominio de la solución. A su alrededor, se encuentran los puertos, que funcionan como puntos de interacción entre el núcleo y los entornos externos. Estos puertos son complementados por adaptadores, los cuales convierten los datos y comandos de la aplicación a un formato que los sistemas externos puedan comprender y viceversa.

¿Cómo funcionan los puertos y adaptadores?

Los puertos en esta arquitectura son interfaces que permiten conectar el núcleo de la aplicación con el mundo exterior. Actúan como vías de comunicación, facilitando el intercambio de datos entre la aplicación y diferentes servicios o componentes externos:

  1. Puertos de entrada: Permiten que la información entre a la aplicación, facilitando la interacción del usuario o de otros sistemas.
  2. Puertos de salida: Posibilitan que la aplicación envíe información o comandos a sistemas externos.

Los adaptadores, por otro lado, son los encargados de realizar las conversiones necesarias para que los puertos puedan entender el formato de datos proveniente de las fuentes externas. Por ejemplo:

  • Adaptadores de interfaz gráfica: Traducen la interacción del usuario (como clics o entradas de texto) en comandos comprensibles para los puertos de entrada de la aplicación.
  • Adaptadores de bases de datos: Transforman las consultas y datos de la aplicación en operaciones que los gestores de bases de datos pueden procesar y entender.

¿Cuáles son las ventajas de esta arquitectura?

La arquitectura hexagonal ofrece varias ventajas notables que los desarrolladores buscan aprovechar:

  • Principio de abierto-cerrado: Esta arquitectura sigue el principio de abierto-cerrado, donde el sistema es extensible sin modificar el código ya existente. Los desarrolladores pueden agregar nuevas funcionalidades a través de nuevos adaptadores y puertos, manteniendo así la integridad del núcleo de la aplicación.

  • Independencia tecnológica: La aplicación no está atada a tecnologías específicas, permitiendo el intercambio o actualización de componentes sin un impacto significativo en el sistema central.

  • Transparencia y aislamiento: El núcleo de la aplicación no tiene conocimiento de los adaptadores, lo que garantiza que cambios en las tecnologías externas no afectan el dominio esencial del sistema.

  • Flexibilidad en las pruebas: La estructura modular permite realizar pruebas de integración más efectivas utilizando mocks que simulan comportamientos deseados en componentes externos.

¿Cuáles son los actores primarios y secundarios?

Dentro de la arquitectura hexagonal, se define a los actores de la siguiente manera:

  • Actores primarios: Son aquellos adaptadores capaces de iniciar interacciones con el sistema. Por ejemplo, una interfaz gráfica que el usuario utiliza para enviar un formulario.

  • Actores secundarios: Representan a los adaptadores que reciben notificaciones sobre acciones ya iniciadas. No generan nuevas acciones, pero participan en flujos que ya están en marcha, como una base de datos que recibe una solicitud para guardar información tras una interacción del usuario.

Recuerda, esta metodología es altamente adaptable y su representación como un hexágono es meramente visual. Puedes ajustar el número de puertos y adaptadores según las necesidades especificas de tu aplicación sin perder los beneficios que ofrece esta estructura. Si quieres explorar más sobre esta interesante arquitectura, Alistair Cockburn y su artículo sobre el tema estarán de gran ayuda en la sección de recursos adicionales.

¡Te animamos a reflexionar sobre cómo podrías aplicar esta arquitectura en tus propios proyectos! Comparte tus ideas y ejemplos, esto te ayudará a afianzar los conceptos y a enriquecerte con diferentes perspectivas. Continuemos explorando más arquitecturas de referencia en las siguientes sesiones del curso y sigue avanzando en este viaje de aprendizaje y desarrollo.