Patrón de diseño CQRS

¿Que es el patrón de diseño CQRS?

Command Query Responsibility Segregation (en español, Segregación de la Responsabilidad de Comando y Consulta), es un patrón de diseño arquitectónico que propone separar las operaciones de lectura y escritura en un sistema. La idea principal detrás de CQRS es dividir las operaciones que modifican el estado del sistema (comandos) de aquellas que solo consultan el estado (consultas).


Diagrama del modelo CQRS

El diagrama visualiza la estructura del modelo CQRS (Command Query Responsibility Segregation), mostrando la separación entre las operaciones de escritura y lectura, y cómo interactúan entre sí.



Pequeña descripción

Arquitectura de software que separa las responsabilidades de comando (escritura) y consulta (lectura), ya que este permite optimizar cada modelo para su respectiva operación, mejorando el rendimiento y la escalabilidad. Puede ser implementado en diferentes lenguajes de programación y este se enfoca en la consistencia eventual en lugar de la consistencia en tiempo real.

Modelo CQRS

Lenguajes en donde se utiliza

El modelo CQRS puede ser implementado en una variedad de lenguajes de programación, como Java, C#, Python y JavaScript, entre otros.


Lógica de negocio Backend

La lógica de negocio en el backend se separa en comandos y consultas, permitiendo optimizar el procesamiento y aumentar la escalabilidad.


Base de datos

Los modelos de escritura y lectura utilizan bases de datos diferentes, lo que permite ajustar la estructura y la modificación de datos para cada caso.

 


Implementación del modelo CQRS

Aplicaciones empresariales

Separar responsabilidades de la lógica de lectura y escritura mejorando la escalabilidad y la mantenibilidad del Sistema.
(Sistema de gestión de inventario)


Sistemas basados en eventos

Se combina con el patrón de eventos para construir sistemas reactivo y escalable.
(Plataforma de comercio electrónico)


Aplicaciones con requisitos de rendimiento especifico

Se pueden optimizar y escalar de manera independiente según los requisitos de cada una.
(Aplicación de redes sociales)


Ejemplo de implementación

Por ejemplo, si tenemos productos con las descripciones, precio y stock estamos relacionando 3 elementos que “no tienen nada que ver”. 
 La descripción del producto no va a cambiar si actualizamos el precio, mientras que actualizar el precio no cambiará el producto


¿Cuándo se utiliza el Modelo CQRS?

Modelado complejo de dominio:

Cuando el dominio de tu aplicación es complejo y hay diferentes modelos de dominio para la lectura y la escritura, CQRS puede ayudar a simplificar la lógica del modelo de dominio al permitir modelos específicos para comandos y consultas.

Requisitos de rendimiento:

Si tienes una aplicación con una carga de lectura pesada, puedes optimizar el rendimiento utilizando un modelo de lectura optimizado. CQRS permite que los modelos de lectura se escalen independientemente de los modelos de escritura.

Seguridad y permisos:

Cuando se requiere un control de acceso más granular para las operaciones de escritura y lectura, CQRS facilita la implementación de lógica de seguridad específica para cada tipo de operación.



Video explicando el tema:

Comentarios

Entradas más populares de este blog