Sobes.tech
Middle+

O que é CQRS (Segregação de Responsabilidade de Comando e Consulta)?

sobes.tech IA

Resposta da IA

CQRS (Segregação de Responsabilidade de Comando e Consulta) — padrão de design que separa as operações de leitura (consultas - queries) e escrita (comandos - commands) de dados numa aplicação.

Princípios básicos:

  1. Separação de operações: Os comandos alteram o estado do sistema, mas não retornam dados (exceto, talvez, o identificador do recurso criado). As consultas retornam dados, mas não alteram o estado.
  2. Modelos de dados diferentes: Frequentemente, utilizam-se modelos de dados otimizados para as suas tarefas específicas tanto para comandos como para consultas. Por exemplo, para escrita pode usar-se uma base de dados relacional, e para leitura — uma base NoSQL otimizada para vistas específicas.
  3. Execução assíncrona de comandos: A alteração do estado após a execução de um comando pode ocorrer de forma assíncrona, especialmente em combinação com Event Sourcing.

Vantagens:

  • Escalabilidade: Pode-se escalar as operações de leitura e escrita de forma independente.
  • Performance: Otimização de cada lado (query/command) para as suas tarefas específicas.
  • Flexibilidade: Arquitetura mais flexível para áreas de domínio complexas.
  • Segregação de responsabilidades: Claramente separadas a lógica de leitura e escrita.

Desvantagens:

  • Complexidade: A implementação de CQRS adiciona complexidade arquitetónica.
  • Consistência: Podem surgir problemas com a coerência de dados entre os modelos de leitura e escrita (eventual consistency).

Aplicação no Frontend: Embora o CQRS seja mais frequentemente aplicado no backend, conhecer este padrão é útil para entender a arquitetura de interação entre cliente e servidor, especialmente em aplicações que utilizam Event Sourcing ou que requerem alta performance na leitura/escrita de dados. O frontend interage com CQRS através de APIs que claramente separam os endpoints para comandos (POST, PUT, DELETE) e consultas (GET).