CQRS — Patterns para sistemas distribuídos e escaláveis… Com pitadas de filosofia, humor e sarcasmo como me é peculiar.

Carly Christian
2 min readJan 3, 2021

--

CQRS

Command Query Responsability Segregation

Por Zeus Sócrates, está falando inglês ? O que é isso ?
Segregação de responsabilidades entre consultas e comandos.

Definição literal, não deixa muita margem para dúvidas…

“Mas como assim Carly, segregação de responsabilidades ?”

Perceba que quem consulta ou comanda, o faz sobre algo ou alguém. Se aqui falamos sobre um Pattern para sistemas distribuídos, falamos então dessas aplicações. De modo que, é perfeitamente cabível acrescentar e dizer: “Segregação de responsabilidades entre consultas e comandos no servidor”

Perfeito até aqui ? Entendido…

“Mas Carly, o que são consultas e comandos ?”

De fato, eu sei a quem me dirijo, mas como discernir entre um e outro ?
Me acompanhe…
Consultar pressupõe dúvida. Porque se não há dúvida, não há razão para consultar. Então se tenho dúvida, procuro resposta. E ao que a resposta responde ? A Pergunta.

Não seja o chato que diz: “Carly e a dúvida?”

Naturalmente, a resposta está para pergunta, assim como o conhecimento que permite responder está para a dúvida que gera a pergunta.

Perfeito? Entendido até aqui ?

Consultar é Perguntar.
Fez uma pergunta ao servidor: Query.

“Carly e Command ?”

Oras, muito simples…

Anote para não esquecer…

Command é tudo que não é Query.
E o que é query ? uma pergunta ao servidor.

Por tanto, toda requisição recebida que é uma pergunta é uma query. Todo o resto é command.

“E pq isso Carly?”

Naturalmente você não pode perguntar e comandar… Pq se a pergunta necessita da dúvida para existir, comandar pressupõe que você tem certeza para deliberar.
Logo, se pergunta e comanda, pergunta sobre algo que não faz parte do seu comando e por tanto, não deveriam coexistir no mesmo instante e local, pois pertencem a razões diferentes.

Eu poderia deixar-se entender pela explicação acima, mas vamos trazer para o contexto de software.

Uma requisição que consulta um usuário não deveria coexistir na mesma aplicação que um comando que cria um usuário… São razões diferentes.

É isso, espero que tenha trazido luz ao conceito e que havendo interesse maior, mergulhe e se aprofunde sobre o pattern de forma que praticando-o possa faze-lo solução para alguns problemas e dilemas da nossa área de engenharia de software.

Eu fico por aqui e meu muito obrigado.

--

--

Carly Christian
Carly Christian

Written by Carly Christian

Oi, eu sou o carly. Gosto de falar sobre varios assuntos e visões que tenho sobre o mundo, é isto.

No responses yet