Cómo combinar patrones de arquitectura
Clase 23 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
Atributos de calidad
- 2

Qué son los atributos de calidad en software
01:49 min - 3

Cómo medir idoneidad funcional en software
02:52 min - 4

Qué es eficiencia de ejecución en software
04:14 min - 5

Cómo medir interoperabilidad y coexistencia
03:49 min - 6

Qué es la usabilidad y sus 6 dimensiones
08:14 min - 7

Cómo medir confiabilidad en software
05:38 min - 8

Los 5 pilares de seguridad en software
04:01 min - 9

Cómo garantizar mantenibilidad con tests
06:27 min - 10

Adaptabilidad vs capacidad de instalación vs reemplazo
02:48 min - 11

Tensiones entre atributos de calidad de software
04:04 min - 12

Atributos de calidad según fase de empresa
07:00 min
Patrones de arquitectura
- 13

Qué es un patrón de arquitectura
02:50 min - 14

Modelo vista controlador: cómo separar responsabilidades
05:37 min - 15

Arquitectura en capas: controller, servicio y repositorio
03:14 min - 16

Event sourcing vs bases relacionales
06:17 min - 17

Qué es la arquitectura microkernel
01:52 min - 18

Arquitectura Comparte Nada con Map Reduce
02:29 min - 19

Patrón de microservicios: cuándo y cómo
03:57 min - 20

Qué es CQRS y cómo separa lectura de escritura
03:24 min - 21

Arquitectura hexagonal: puertos y adaptadores
04:10 min - 22

Qué son los contextos delimitados en DDD
05:34 min - 23

Cómo combinar patrones de arquitectura
Viendo ahora - 24

Evolución de patrones desde monolito a microservicios
07:58 min
Diseño de una arquitectura
- 25

Cómo traducir requerimientos en decisiones arquitectónicas
02:18 min - 26

Conectores en arquitectura: tipos y cuándo usarlos
06:18 min - 27

Llamadas asíncronas vs síncronas vs cliente-servidor
03:05 min - 28

Conector enrutador vs difusión: Twitter
01:55 min - 29

Conectores cola, repositorio y pub/sub
03:52 min - 30

Framework de diseño orientado a atributos
01:55 min - 31

Cómo detectar fallas y reparar sistemas
05:59 min - 32

Cómo recuperar y prevenir fallas en sistemas
04:09 min - 33

Tácticas para confinar modificaciones
06:15 min - 34

Cómo prevenir efectos dominó en software
12:17 min - 35

Tácticas para controlar eficiencia de ejecución
09:14 min - 36

Cómo detectar, resistir y recuperarse de ataques
09:02 min - 37

Cómo probar que el software funciona correctamente
05:14 min - 38

Cómo controlar la usabilidad con tácticas
08:20 min - 39

Cómo validar arquitectura con ATAM y métricas
06:34 min - 40

Evolución de arquitectura: startup a gran escala
10:30 min
Modelado y documentación de arquitectura
Adopta una visión clara de sistema de sistemas y combina patrones de arquitectura con confianza. Aquí verás cómo integrar cliente-servidor con microservicios y arquitectura de eventos, cómo un MVC tradicional deriva en CQRS, y cómo evolucionar un sistema legacy con arquitectura hexagonal y event sourcing, sin añadir complejidad innecesaria.
¿Cómo se integra cliente-servidor con microservicios y eventos?
La idea central es componer múltiples patrones para mantener desacoplamiento y evolución independiente. Un cliente en React con arquitectura Flask se comunica por la web con servidores detrás de un balanceador de carga. Cada servidor es un microservicio con bordes claros de responsabilidad y despliegue independiente.
¿Qué rol cumple el cliente y las APIs?
- El cliente conoce a cada microservicio y su REST API o GraphQL API.
- Este conocimiento es un detalle de implementación, no del patrón en sí.
- Se mantiene el estilo cliente-servidor: cliente en Flask y servidor compuesto por microservicios.
¿Cómo evitar el acoplamiento entre servicios?
- Se agrega un bus de eventos para publicar/suscribir eventos.
- Se logra invocación implícita: los servicios no se llaman directamente.
- Se conserva independencia y escalabilidad propia de arquitecturas enterprise.
¿Qué habilidades se practican aquí?
- Modelar microservicios con límites claros.
- Diseñar integración vía eventos con publish/subscribe.
- Operar detrás de un balanceador con comunicación web.
¿Qué aporta MVC con procesamiento share nothing y CQRS?
Un MVC sirve contenido web y persiste en una base de datos. Sobre esos datos, procesos independientes aplican una estrategia share nothing y pueden escalar en un clúster de tipo map reduce, generando datos agregados o reportes para otra aplicación de lectura.
¿Cómo fluye la escritura, el proceso y la lectura?
- MVC escribe datos que luego son consumidos por procesos independientes.
- Estos procesos leen de la base y trabajan sin compartir estado.
- Los resultados se guardan en una base no relacional o archivos para su posterior carga.
- Una segunda aplicación en capas lee esos resultados.
¿Cómo se organiza la aplicación de lectura?
- Arquitectura en capas: aplicación, dominio y acceso a datos.
- Solo lectura: no modifica la fuente procesada.
- Enfoca la experiencia de operadores y consultas sobre datos procesados.
¿Cómo emerge CQRS sin proponérselo?
- Visto de lejos: una parte escribe, otra procesa, otra lee.
- Surge el patrón CQRS: separación entre comandos y consultas.
- Beneficio clave: especialización de componentes y menor acoplamiento.
¿Cómo evolucionar un sistema legacy con arquitectura hexagonal y event sourcing?
Cuando existe una gran bola de lodo en el legacy, se crea un sistema nuevo con arquitectura hexagonal que se comunica con la base de datos compartida mediante adaptadores. Así, el nuevo sistema queda desacoplado de detalles internos del legacy usando puertos y adaptadores.
¿Cómo exponer funcionalidades sin tocar el legacy?
- El sistema hexagonal ofrece su propia API o página web.
- Solo necesita un adaptador hacia la base legacy.
- Se evita propagar el caos del legacy y se gana control evolutivo.
¿Cómo habilitar auditoría con eventos persistentes?
- Tanto legacy como hexagonal publican en un bus de eventos.
- El bus guarda cada evento de forma persistente.
- Esto habilita event sourcing: reconstruir estado a partir de eventos.
- Se puede comparar lo que pasó en paralelo y detectar omisiones.
¿Cómo migrar sin riesgo y apagar partes del legacy?
- Se implementan nuevas funcionalidades fuera del legacy.
- Cuando una parte ya no se usa, se apaga su consumo.
- No es necesario cambiar el código viejo para dejar de depender de él.
- Útil si no hay cobertura de tests o la tecnología se quiere deprecar.
¿Te gustaría comentar tu contexto y qué combinación de patrones estás evaluando?