Arquitetura Distribuída CQRS

CQRS é o acrônimo para Command Query Responsability Segregation (Segregação de Responsabilidade de Comando e Consulta). A ideia fundamental é que um sistema pode ser dividido em duas partes: uma responsável por realizar ações de gravação e outra responsável por realizar ações de leitura.

A arquitetura CQRS está baseada no princípio da separação entre comando e consulta definida por Bertrand Meyer. Por este princípio, todo algoritmo deve ter apenas um dos seguintes objetivos:

  • alterar dados armazenados.
  • retornar dados armazenados.

Em termos de programação isso significa que se uma função ou método de um objeto retorna algum dado então esta função ou método é uma consulta. Funções ou métodos que não retornam nada são comandos.

A figura abaixo mostra sintetiza os conceitos da arquitetura CQRS:

Fonte: http://udidahan.com/wp-content/uploads/cqrs.png

Em uma aplicação CQRS o usuário pode:

  • enviar um comando (command) que, se aceito, produzirá alguma modificação nos dados armazenados;
  • enviar uma consulta (query) que irá realizar apenas a recuperação de dados armazenados.

A principal diferença entre um sistema tradicional e um CQRS é que no primeiro há um único modelo de dados e uma única base de dados correspondente e no segundo há dois modelos de dados e duas bases de dados.

Em algumas aplicações a quantidade de usuários que apenas faz leitura de informações é muito maior que a quantidade que produz informações. A separação entre o lado leitura e o lado escrita permite que ambos sejam otimizados. Esta é a explicação para haver dois modelos de dados e duas bases de dados em aplicações CQRS.

Leitura Obrigatória
Post: CQRS pattern
Post: Estilo arquitetural CQRS
Post: Esclarecendo CQRS
Leitura Recomendada
Command-Query Separation
CQRS Journey

results matching ""

    No results matching ""