Evolución de patrones desde monolito a microservicios
Clase 24 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
09:22 min - 24

Evolución de patrones desde monolito a microservicios
Viendo ahora
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
Decidir el patrón de arquitectura correcto acelera el desarrollo y reduce el acoplamiento. Aquí se sintetizan, etapa por etapa, las opciones reales para pasar de un monolito inicial a eventos y microservicios, cuidando la modularización, la carga por servicio y los atributos de calidad que requiere el producto.
¿Qué arquitectura conviene en la etapa startup?
En el inicio, el estilo cliente-servidor encaja por simplicidad y foco en entregar valor. Un modelo vista-controlador permite un monolito claro y fácil de desplegar de forma independiente. Además, los frameworks y librerías de open source reducen la curva de aprendizaje y favorecen a un equipo chico y bien integrado.
- Cliente-servidor con MVC monolítico: servidor único, simple de mantener y desplegar.
- Curva de aprendizaje suave: ecosistema open source y prácticas conocidas.
- Arquitectura en capas: separación nítida entre presentación, acciones del usuario y capa de negocio, con foco en modelar el dominio.
- Comunicación simple de equipo: si el grupo es reducido, mantener el monolito evita complejidad innecesaria.
¿Cómo escalar reportes: lote secuencial o arquitectura basada en eventos?
A medida que crece la empresa surgen reportes costosos. Se plantea seguir con cliente-servidor y sumar un lote secuencial para mover la base de datos transaccional hacia una base de datos de reportes en momentos definidos. Para acelerar el cálculo, se procesa la fuente en partes y cada proceso trabaja de forma independiente, consolidando luego en una base compartida. Esto es útil con volúmenes de datos muy grandes y prepara para clientes más exigentes.
- Lote secuencial: copiar y transformar datos transaccionales a una base de reportes en ventanas controladas.
- Procesamiento en partes independientes: cada cálculo de reporte no comparte base común durante la computación; se vuelca al final a una base consolidada.
Como alternativa, una arquitectura basada en eventos registra eventos y los lee para alimentar reportes. La separación fuerte entre lo transaccional (servicio de prestadores) y el sistema de reportes reduce el acoplamiento y permite trabajo de múltiples equipos en paralelo. Un bus de eventos posibilita esta integración con menor fricción.
- Eventos para reportes: registrar y consumir eventos para generar resultados sin lotes pesados.
- Menos acoplamiento: dominios transaccional y de reportes independientes, con límites claros.
- Trabajo paralelo: equipos distintos pueden avanzar sin bloquearse.
¿Por qué adoptar microservicios y separación de consultas y comandos en gran escala?
Cuando el producto opera a gran escala, con traducción, husos horarios y una base de clientes global, los microservicios se vuelven viables. Ya hay servicios locales y globales, equipos más grandes y necesidad de distribuir la carga por servicio. Por ejemplo, el servicio de reportes puede tener mayor demanda: se despliega con más redundancia que el servicio transaccional o el de prestadores globales. La modularización favorece la alineación con la estructura de la empresa.
- Microservicios con equipos grandes: tiene más sentido con 20–30 desarrolladores y componentes bien delimitados.
- Despliegue distribuido: escalar cada servicio según su carga específica.
- Redundancia selectiva: priorizar más instancias donde el uso es mayor (como reportes).
Dentro del sistema de reportes, un patrón de provisión de eventos usa una base de datos de eventos. Un intérprete de consultas y un procesador de eventos la leen para construir el estado actual del reporte sin depender de cálculos previos almacenados como tablas.
- Base de eventos: fuente única de verdad para reconstruir el estado de los reportes.
- Componentes internos: intérprete de consultas y procesador coordinados para materializar resultados.
Además, la separación entre consultas y comandos resulta clave cuando lectura y escritura tienen cargas distintas. En el servicio de prestadores, la escritura es puntual y la lectura habitual. Si el sistema de reportes usa eventos, es natural guardar la escritura como evento y preparar la lectura en una base transaccional optimizada para consultas. Con un bus de eventos persistente, esta separación se integra con el resto de servicios.
- Escrituras como eventos: registrar cambios de forma duradera.
- Lecturas optimizadas: entregar información preparada para consultas frecuentes.
- Integración por bus de eventos: comunicación confiable y extensible entre servicios.
¿Con qué retos te identificas hoy: volumen de datos, equipos en paralelo o expansión global? Cuéntalo y comentemos qué combinación de patrones encaja mejor con tus atributos de calidad y requerimientos.