Command Query Responsibility Segregation (CQRS)

Command Query Responsibility Segregation (CQRS) in simple terms is a design pattern in which you separate write commands (Create, Update, Delete) and read queries (Get) into different models.
What is the advantage of implementing CQRS?
CQRS help scale read and write operations independently.
CQRS allows read queries to be denormalized, that means read will be faster, while commands can adhere business logic strictly. In short, CQRS can help you with building read heavy systems.
Nest.js supports implementation of CQRS, you can read here: https://docs.nestjs.com/recipes/cqrs
Nest.js will only help you with implementing CQRS on a structural level. In real world implementation for large scale, you will be creating different microservices for read and write. Everytime writes happen, the read service has to be notified about changes in the data.
CQRS adds complexity and might feel unnecessary in situations. There are better patterns with Caching that you can implement over or with CQRS and that will be totally fine.

CQRS is something that you can do with monoliths and later break it apart into different microservices. And hence it perfectly makes sense.
Read this if you want to know more about CQRS and it's implementation in Go: https://threedots.tech/post/basic-cqrs-in-go/

