Arquitectura de Software
La arquitectura de software es el conjunto de decisiones difíciles de cambiar sobre un sistema: cómo se divide, cómo se comunican sus partes y qué atributos de calidad prioriza. No existe la arquitectura correcta en abstracto; existen arquitecturas adecuadas para un contexto, un equipo y unas restricciones concretas.
En esta materia aprendemos a reconocer esos compromisos, a elegir patrones con criterio y a comunicar y documentar las decisiones para que otros puedan entenderlas, cuestionarlas y mantenerlas.
Lo que vas a lograr
Sección titulada «Lo que vas a lograr»- Analizar un sistema en términos de atributos de calidad y restricciones.
- Seleccionar y combinar patrones arquitectónicos de forma justificada.
- Decidir entre monolito modular y microservicios con argumentos concretos.
- Diseñar sistemas basados en eventos y mensajería con consistencia eventual.
- Documentar arquitecturas con diagramas C4 y registros de decisión (ADR).
Temario
Sección titulada «Temario»Fundamentos de arquitectura
Qué es la arquitectura de software, los atributos de calidad y el papel del arquitecto.
Clases en preparaciónPatrones arquitectónicos
Capas, hexagonal, cliente-servidor, pipes and filters y otros estilos clásicos.
Clases en preparaciónMonolitos y microservicios
Monolito, monolito modular y microservicios: cuándo conviene cada uno.
Clases en preparaciónArquitectura orientada a eventos
Sistemas que reaccionan a hechos: eventos de dominio, brokers y consistencia eventual.
Clases en preparaciónCQRS y mensajería
Separar modelos de lectura y escritura y comunicar componentes mediante mensajes.
Clases en preparaciónEscalabilidad y resiliencia
Escalar horizontalmente y diseñar para fallos: cachés, réplicas, reintentos y circuit breakers.
Clases en preparaciónSeguridad y multitenencia
Seguridad desde el diseño y modelos de aislamiento para aplicaciones SaaS.
Clases en preparaciónDiagramas y decisiones arquitectónicas
Comunicar la arquitectura con el modelo C4 y documentar decisiones con ADR.
Casos prácticos
Análisis de sistemas reales y ejercicios integradores de diseño.
Clases en preparación
Recursos de referencia
Sección titulada «Recursos de referencia»- Modelo C4: notación para diagramar arquitectura por niveles de zoom.
- Martin Fowler — Software Architecture Guide: artículos de referencia sobre patrones y decisiones.
- ADR GitHub organization: plantillas y prácticas para registros de decisión.