Event Sourcing
CQRS
Quais problemas eles resolvem?
Quem sou eu
● Cristiano Raffi Cunha
Quem sou eu
● Cristiano Raffi Cunha
● Desenvolvedor .NET
O que vai rolar
● O que é Event Sourcing?
● CQRS ajuda no quê?
● Quando usar esses conceitos?
Um sistema de conta bancária
Como manter o histórico das transações?
Segurança - Não aparecer nem sumir R$?
Geralmente sobrescrevemo os valores, guardamos os estados
E se atualizar o saldo da forma errada?
Aí vem a ideia de
Event Sourcing
(No meu problema*)
Guardar Eventos no banco
Guardar Eventos no banco
Guardar Eventos no banco
Guardar Eventos no banco
Guardar Eventos no banco
Guardar Eventos no banco
NÃO podemos alterar eventos
E se precisar ver o saldo?
Situação atual é a soma dos Eventos
Precisamos calcular tudo...
Computacionalmente muito caro!
Snapshot
Snapshot CQRS
Snapshot
Snapshot
Snapshot
Snapshot
Snapshot
Snapshot
Snapshot
$375,00
CQRS - Command Query Responsibility Segregation
CQRS - Não depende de ES!
CQRS
CQRS
CQRS - Duas fontes de dados
CQRS - Papel
E se apagar o cache?
O QUE GANHAMOS?
● Segurança
● Auditoria
● Saber estado da entidade em qualquer ponto na linha do tempo
● Acompanhar em tempo real os eventos no seu produto
● Saber sobre o comportamento do usuário
O QUE PERDEMOS?
● Dificuldade de mapear o mundo real
● Visibilidade dos dados de relatórios
● Dificuldade para mudanças no domínio(dados históricos)
● Alto consumo de infra
● Consistência eventual(CQRS)
● ...
O que eu acho?
Bora ver um pouco de código
Fluxo
Event Store DB
Pode ser aplicada em outros mudos
Conteúdos legais
● Snapshotting Strategies
● CodeOpinion - Youtube
● Pisani da ArcH - Youtube
● Building Event-Driven Microservices
CRISTIANOPROGRAMADOR.COM
Obrigado!

Event Sourcing e CQRS