ARQUITECTURA HEXAGONAL
¿Qué es la arquitectura hexagonal?
La arquitectura hexagonal, a la que también se le conoce como arquitectura de puertos y adaptadores, es una arquitectura de software que se basa en la idea de aislar la lógica comercial central de las preocupaciones externas, por medio de la separación de la aplicación en componentes débilmente acoplados.
Los 3 principios de la arquitectura hexagonal
Este tipo de arquitectura de software se sustenta en 3 principios básicos a cumplir:
1. A la izquierda, el lado del usuario
Este es el lado a través del cual el usuario o los programas externos interactuarán con la aplicación, y es la que contiene el código que permite dichas interacciones.
Por lo general, su código de interfaz de usuario, sus rutas HTTP para una API, sus serializaciones JSON para programas que consumen su aplicación están aquí.
Este es el lado donde encontramos a los actores que impulsan la Lógica de Negocios.
2. La Lógica de Negocios, en el centro
Esta es la parte que queremos aislar de los lados izquierdo y derecho. Contiene todo el código que concierne e implementa la lógica empresarial.
El vocabulario empresarial y la lógica empresarial pura, que se relaciona con el problema concreto que resuelve su aplicación, todo lo que la hace rica y específica está en el centro.
Idealmente, un experto en el dominio que no sabe cómo codificar, podría leer un fragmento de código en esta parte y señalarle una inconsistencia. De hecho, si lo piensas, es algo que podría pasarte si eres el desarrollador.
3. A la derecha, el lado del servidor
Aquí es donde encontraremos lo que tu aplicación necesita, lo que hace que funcione.
Contiene detalles esenciales de la infraestructura, como el código que interactúa con la base de datos, realiza llamadas al sistema de archivos o el código que maneja las llamadas HTTP a otras aplicaciones de las que depende, por ejemplo.
Este es el lado donde encontramos a los actores que son manejados por la Lógica de Negocios.
¿Por qué es importante la arquitectura hexagonal?
Es importante por varias razones clave relacionadas con la
mantenibilidad, flexibilidad y escalabilidad del software. A continuación se
mencionan algunas características:
1. Separación de Responsabilidades
2. Facilidad para el Cambio
Al desacoplar el núcleo de la aplicación de los detalles técnicos, es más sencillo realizar cambios en cualquiera de estos detalles sin afectar el resto del sistema. Por ejemplo, cambiar la base de datos o la interfaz de usuario se puede hacer sin modificar la lógica de negocio.
3. Testabilidad
El diseño facilita la creación de pruebas unitarias y de integración. Dado que los componentes de negocio están desacoplados de las interfaces externas, pueden ser probados de manera aislada utilizando mocks o stubs para simular las interacciones con el exterior.
4. Mantenibilidad
La separación de responsabilidades y el desacoplamiento de componentes hacen que el código sea más fácil de entender, mantener y refactorizar. Los cambios en una parte del sistema son menos propensos a causar efectos secundarios en otras partes.
5. Escalabilidad
Permite escalar el sistema de manera más controlada. Puedes agregar nuevas funcionalidades, adaptadores o mejorar los existentes sin necesidad de una reestructuración completa del sistema.
6. Interoperabilidad
La arquitectura facilita la integración con diferentes sistemas externos mediante adaptadores específicos. Esto permite que la aplicación interactúe con diversos servicios, API, y tecnologías sin depender directamente de ellos.
7. Evolución Tecnológica
Al estar el núcleo del negocio separado de los detalles técnicos, es más sencillo adoptar nuevas tecnologías o reemplazar tecnologías existentes sin impactar la lógica de negocio.
8. Flexibilidad en el Desarrollo
Permite a los equipos de desarrollo trabajar en diferentes
partes del sistema de manera más independiente. Por ejemplo, un equipo puede
trabajar en la lógica de negocio mientras otro se enfoca en la implementación
de la interfaz de usuario o la integración con servicios externos.
Comentarios
Publicar un comentario