Apresentação sobre event sourcing, utilizando um sistema desenvolvido em Kotlin, Spring Boot, Axon e React no front end. Utilizei o domínio bancário como exemplo para implementação do event sourcing.
7. Exemplos de eventos:
● Bater o ponto;
● Puxar uma tarefa do JIRA;
● Pagar a passagem do ônibus;
● Ligar para um amigo;
● Entre outros milhares de exemplos...
14. Qual foi o fluxo utilizado para gerar esses eventos no
sistema?
15. Receive Command
Transform command
into event
Save the event
Is command
ok?
Response with
error
Start
Response with
OK
Event
Store
Commands:
● CreateAccountCommand
● FundsDepositCommand
● FundsWithdrawCommand
Events::
● CreatedAccountEvent
● FundsDepositedEvent
● FundsWithdrawnEvent
error
16. Foi requerido para o time de engenharia uma feature para
mostrar o balanço da conta, como é possível desenvolver
isso se não é guardado o estado da aplicação?
26. Projections
● Projectors deveriam ser desacoplados um dos outros e
não deveriam compartilhar nenhum estado;
● Projectors e projections são desacoplados;
● Projectors são assincronos;
● O projector pode ter um bookmark indicando onde está
processando atualmente.
27. Por fim o time do produto pediu que quando:
- Balanço do cliente for menor que R$ 100;
- Cliente tentar sacar dinheiro;
Então:
- Deve enviar um e-mail avisando o cliente;
31. Reactor
● Reactors deveriam ser desacoplados um dos outros e
não deveriam compartilhar nenhum estado;
● Reactors podem ser stateless ou stateful;
● Não deveriam ter acesso a projections ao realizar sua
lógica;
● Reactors são assincronos;
● Reactors deveriam fazer apenas uma coisa bem.