CQRS

[ Arquitectura  ]

El patrón CQRS es el acrónimo de Command and Query Responsibility Segregation, que viene a decirnos que debemos separar lo que son las operaciones de extracción de datos de las operaciones de modificación de datos.

Con este principio lo que conseguimos es optimizar el rendimiento, las lecturas van por un lado y las escrituras van por otro, nos permite tener un mayor control de la escalabilidad, nos permite escalar de forma separada las lecturas de las escrituras, y nos aporta seguridad, nos aseguramos de que una operación de lectura, por error, pueda realizar una modificación.

Es como si en el repository pattern, separásemos las interfaces de acceso al contexto en un IReadRepository y un IWriteRepository, pero en Azure y con infraestructura independiente.

Veamos la foto:

CQRS

Como decíamos al principio y después de ver la infraestructura los principales beneficios que nos aporta son:

  • Escalado separado. Al tener las bases de datos separadas podemos escalarlas según necesidades por separado también.

  • Esquemas de datos optimizados. Los objetos son diferentes para las queries y los commands, con lo que normalmente, las queries tienen esquemas más simples y no compartimos la misma entidad con los dos servicios.

  • Seguridad. Es más fácil asegurarse de que solo los commands realicen escrituras en la base de datos.

  • Separación de responsabilidades. La separación de las lecturas con las escrituras ofrece modelos más fáciles de mantener y flexibles. Mientras que la complejidad reside en los modelos de escritura que contendrán la lógica empresarial.

  • Consultas más simples. Podemos tener vistas materializadas para obtener mayor rendimiento en las queries y aisladas en la base de datos de lectura.

Los principales inconvenientes son:

  • Se complica la arquitectura y es algo más compleja si estamos acostumbrados a un CRUD clásico.

  • Podemos obtener una inconsistencia de datos ya que puede haber un lack mientras se sincroniza la base de datos de escritura y se vuelcan las modificaciones en la de lectura.

Un saludo.




@2017/@2024 - JRRN