Dark Dev #5

Trevosidade em Desenvolvimento

07 de Maio de 2021

CQRS

Como? Quando? Onde? E por que?

CQ é o quê mah?

Command
Query

Responsibility

Segregation

"Separar a responsabilidade de escrita e leitura dos dados"

Obrigado!

Principais Problemas

Muitos Usuários x mesmos dados

Exemplo

- Alugar um carro

- Agendar um atendimento

- Adicionar um mesmo produto ao carrinho

Solução:

Escalar a aplicação em trocentos servidores.

CQRS

objetivo principal

Command: Operações de persistência (insert, update, delete) aos dados, no banco verdadeiro.

 

Query: Operação de consulta aos dados, , em um banco desnormalizado.

Sendo o Query responsável apenas por mostrar o que o banco de dados tem. E o Command responsável por mexer diretamente nos dados.

Mas, o problema de concorrência ainda continua...

Solução:

Forró dos véi

Fila de eventos

Caracteristicas

  • Comandos assíncronos e processados em fila, poupa o tempo de quem espera.

  • A regra de negócio só existe na persistência.

  • As consultas não consomem o mesmo banco de dados da persistencia, então é outra fila, mais rápida.

  • Não é uma arquitetura, mas sim um padrão arquitetural, então nem toda a aplicação precisa estar usando CQRS.

  • Não é fácil de implementar, melhor desistir de ser programador.

Referências

  1. https://martinfowler.com/bliki/CQRS.html
  2. https://www.eduardopires.net.br/2016/07/cqrs-o-que-e-onde-aplicar/
  3. https://www.youtube.com/watch?v=8yV8UicF8GI&t=462s

Valeu o boi

Valeu o vaqueiro

deck

By Alessandro Feitoza

deck

  • 711