Conjunto de patrones que proporcionan un marco de referencia necesario para guiar la construcción de un software, permitiendo a los programadores, analistas y todo el conjunto de desarrolladores del software compartir una misma línea de trabajo y cubrir todos los objetivos y restricciones de la aplicación. Es considerada el nivel más alto en el diseño de la arquitectura de un sistema puesto que establecen la estructura, funcionamiento e interacción entre las partes del software.

Dado que la complejidad de los sistema de software han ido (y va en aumento) en los últimos años cada vez más necesario (imprescindible) el uso de arquitecturas limpias o “Clean Architecture” que nos permitan separar las responsabilidades mediante capas y definiendo reglas de dependencias entre ellas. Todo esto evitará el acoplamiento de nuestro dominio con elementos externos lo que producirá sistemas: Independientes del framework, Testables, Independientes de la UI, Independientes de la base de datos, Independiente de agentes externos, más tolerantes al cambio, reutilizables, mantenibles… y en definitiva favorece la supervivencia del equipo y del negocio al crear aplicaciones en las cuales es sencillo trabajar.


Monolitos

Arquitectura Dominio(DDD)

Arquitectura hexagonal

CQRS

Eventos

Microservicios

MicroKernel


En Revisión


Referencias:

Una buena arquitectura debe ser flexible, nos debe dejar tomar decisiones el mejor momento… también podemos pensar en una arquitectura modular para poder ir desechando módulos a demanda.

Untitled