Arquitectura limpia y hexagonal: Los principios y la esencia.
Desde hace unos años se viene hablando de una serie de principios o prácticas alrededor fundamentalmente de SOLID que nos ayudan a desarrollar software más centrado en el dominio y aislado de detalles de implementación como pueden ser la interfaz gráfica, el framework de desarrollo o el motor de bases de datos. A esto se le conoce como arquitectura limpia y fue popularizado por Uncle Bob (Robert C. Martin) en su libro “Clean Architecture”.
Esta “Arquitectura Limpia” es como un marco general bajo el cual han surgido diferentes modelos para implementarlo, un ejemplo de estos modelos es la “Arquitectura Hexagonal”.
Objetivos de la Arquitectura de Software
Para poder entender la importancia de este concepto y de estos estilos para construir aplicaciones primero debemos conocer el objetivo de la arquitectura de software, que son las razones por las cuales existen los arquitectos de software.
A continuación se enuncian los objetivos principales de la arquitectura de software:
- Minimizar el costo de desarrollo en la vida del software (tanto monetario como temporal).
- Mantener el software “suave”.
- Facilitar el desarrollo del software en el tiempo.
- Mantener el software abierto para cambios / extensiones.
- Facilitar el mantenimiento y actualización del software.
- Mantener el software lejos de los detalles de su implementación.
Los modelos de “Arquitectura Limpia” y “Arquitectura Hexagonal”
Robert C. Martin en su blog “CleanCoder” muestra el gráfico que se muestra a continuación para explicar la arquitectura limpia, el detalle está en el sentido de las líneas que expresan relaciones de dependencia, donde el dominio del negocio está en el centro y no depende de los círculos de mas afuera.
Existe otro modelo o estilo similar, anunciado por Alistair CockBurn el cual se denomina “Arquitectura Hexagonal”, el objetivo es el mismo: independencia del dominio en el centro y detalles de implementación en los bordes.
Se muestra un esquema mejorado de este modelo para que se entienda mejor, este es tomado de Medium, elaborado por Jemesson Lima.
En este esquema se notan claramente los puertos, que son un patrón que nos ayudara mediante el recurso de las interfaces a crear contratos de comunicación que serán implementados por los detalles “aka” adaptadores y usados por los casos de uso (funcionalidades).
Ventajas de usar arquitectura limpia
Las principales ventajas de usar una arquitectura limpia son:
- El cumplimiento del principio DIP de SOLID: Aislamiento del código del negocio de las otras capas. El negocio no depende del exterior.
- El cumplimiento del principio SRP de SOLID: Implementar entorno a los casos de uso del negocio y centrado en el dominio.
Bueno hasta acá el articulo, espero te sea útil, todos estos temas los hemos explicado en un video en nuestro canal de Youtube, donde adicionalmente tenemos un ejemplo completo de implementación de una arquitectura limpia usando Spring Boot.