¿Qué? ¿Por qué? ¿Quién? ¿Cómo?
Es la "forma" que le da al software quién lo diseña
Facilitar el desarrollo, operación y mantenimiento del sistema de software
La estrategia es mantener tantas opciones abiertas como sea posible por el máximo tiempo posible
Un sistema que es difícil de mantener no va a tener una vida larga y saludable
Diferentes estructuras de equipos implican diferentes decisiones arquitectónicas
Equipos chicos empiezan sin una estructura clara. Es por eso que generalmente faltan buenas arquitecturas
Todo sistema de software debe ser desplegable
Mientras más alto es el costo de despliegue, menos útil es el sistema
El sistema debe ser desplegable con una sola acción
Es la actividad más costosa
Un flujo interminable de features y una inevitable cola de defectos
El riesgo de agregar más defectos aumenta con el paso del tiempo
Todo sistema tiene 2 tipos de valor: Comportamiento y estructura
La estructura hace que el software sea soft*.
La política es lo mas esencial de un sistema de software. Los detalles no importan
No es necesario definir la base de datos en etapas tempranas del proyecto. A la lógica del negocio no debería importarle la persistencia
No es necesario definir el servidor web
No es necesario definir el framework
No es necesario definir la API REST
Hasta que tomes la decision correcta, podes ir experimentando con distintas cosas para ver qué es mejor.
¿Base de datos relacional? ¿NoSQL? ¿Hadoop? ¿Archivos indexados? ¿Solo memoria?
Para un cambio pequeño hay que tocar en muchos lugares
Es tentador adaptar mi arquitectura al diseño de un framework
Los frameworks no son para siempre :(
Lo mismo aplica para la base de datos, servidor web, sistema operativo, etc.
La buena arquitectura empieza con buen código
Separá componentes uno de otros
No dejes que un componente sepa mucho sobre otro
Estas lineas se deben dibujar en etapas tempranas del proyecto
Las dependencias deben ser del componente de menor nivel de abstracción hacia el de mayor nivel de abstracción
Clean Architecture - Robert C. Martin
2018. Copyright © 2018 Pearson Education, Inc. ISBN-13: 978-0-13-449416-6