Qué es CQRS y cómo separa lectura de escritura
Clase 20 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
Viendo ahora - 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
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
Optimiza la lectura y la escritura con confianza usando CQRS: separa responsabilidades y gana velocidad sin perder el modelado del dominio. Cuando un único modelo no rinde bien para ambos escenarios, este enfoque permite crear modelos y hasta bases de datos distintas para cada necesidad.
¿Qué es CQRS y por qué separa lectura y escritura?
CQRS define la separación de responsabilidades entre consultas y comandos. La idea central: cuando es complejo optimizar lectura y escritura con un mismo modelo, conviene dividir en dos modelos e incluso en dos bases de datos. Así, el modelo de escritura se centra en persistir comandos, y el de lectura se optimiza para responder consultas con la mayor fluidez.
En aplicaciones enterprise con dominio estrictamente modelado, el diseño suele quedar optimizado para escritura. Sin embargo, en Internet predomina la lectura de alto volumen y la escritura puntual. Separar modelos permite mantener la calidad del dominio en la escritura y, a la vez, preparar los datos para la mejor lectura posible.
- Separación de consultas y comandos para reducir fricción entre objetivos distintos.
- Modelos de lectura y escritura diseñados con métricas de rendimiento diferentes.
- Posibilidad de separar bases de datos según la carga y el acceso.
- En Internet: mucha lectura y escritura ocasional.
- Habilidad clave: detectar cuándo un único modelo no alcanza para optimizar ambos lados.
¿Cómo se aplica en reportes y e-commerce?
Un ejemplo práctico aparece en e-commerce: el administrador crea productos (escritura) y el consumidor los consulta (lectura). Para estos casos, los modelos pueden ser similares y funcionar bien. Pero los reportes de ventas combinan consumos de clientes y productos con otra lógica: están relacionados de forma lateral y no encajan de forma natural en el modelo de escritura.
Aplicar CQRS de forma puntual a reportes es útil cuando el esfuerzo de lectura para ajustarse al modelo transaccional es alto. Así se optimiza la lectura de reportes sin reestructurar toda la aplicación.
- Escritura en un modelo transaccional para operaciones del negocio.
- Lectura con un modelo preparado para agregaciones y consultas de reportes.
- Uso selectivo de CQRS donde realmente aporta valor.
¿Cuándo aplicar solo en una parte del sistema?
Cuando el modelo de escritura sirve para operaciones transaccionales, pero no para consultas analíticas o de alto volumen. En esos casos, implementar CQRS únicamente en reportes reduce complejidad y mejora la performance de lectura.
¿Qué relación tiene con event sourcing y qué trade-offs existen?
Event sourcing recibe comandos y escribe eventos en una base de datos de eventos. Luego expone un modelo de lectura diferente: el estado actual. Por eso, es común que event sourcing incorpore o comparta el patrón CQRS: comandos generan eventos (escritura) y las consultas leen un estado derivado (lectura), cada uno optimizado para su propósito.
- Escritura: eventos que registran cambios de forma inmutable.
- Lectura: estado actual preparado para consultas.
- Sincronía conceptual con CQRS al separar responsabilidades.
Ahora, los trade-offs. Mantener dos modelos y dos bases de datos tiene costos: hay que evolucionar ambos cuando aparecen nuevas funcionalidades o se detectan imprecisiones. No es un patrón universal, sino puntual: conviene adoptarlo cuando va a brillar en casos claros como reportes o altos volúmenes de lectura.
- Costo de mantenimiento creciente al evolucionar dos modelos.
- Complejidad operativa al sincronizar cambios y despliegues.
- Habilidad clave: evaluar beneficio real antes de introducir la separación.
¿Dónde ves que CQRS aportaría más valor en tu contexto: reportes, catálogos, analíticas? Comparte tu caso y dudas en los comentarios.