SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
100loop.com
github.com/ivanpaulovich
De 2012 à 2014
1 Depositado
C/C: 4030-1
Valor: R$ 100,00
Data: 17/08/2017
2 Depositado
C/C: 2060-0
Valor: R$ 200,00
Data: 18/08/2017
3 Sacado
C/C: 4030-1
Valor: R$ 40,00
Data: 19/08/2017
4 Sacado
C/C: 2060-0
Valor: R$ 50,00
Data: 23/08/2017
C/C Saldo
4030-1 R$ 60,00
2060-0 R$ 150,00
4 3 2 1
Atual Projeção do Saldo
das Contas Correntes
1 Depositado
C/C: 4030-1
Valor: R$ 100,00
Data: 17/08/2017
2 Depositado
C/C: 2060-0
Valor: R$ 200,00
Data: 18/08/2017
3 Sacado
C/C: 4030-1
Valor: R$ 40,00
Data: 19/08/2017
4 Sacado
C/C: 2060-0
Valor: R$ 50,00
Data: 23/08/2017
C/C Saldo
4030-1 R$ 60,00
2060-0 R$ 150,00
4 3 2 1
Atual Projeção do Saldo
das Contas Correntes
Base Analítica em
Linha doTempo
C/C Saldo
4030-1 R$ 60,00
2060-0 R$ 150,00
4 3 2 1
Atual Projeção do Saldo
das Contas Correntes
Event Stream Base Relacional
Base de GrafosBase de
Chaves /Valores
Base Analítica
noTempo
Base
Documentos
Presentation Layer
Application Layer
Domain Layer
Infrastructure Layer
Presentation Layer
Application Layer
Domain Layer
Infrastructure Layer
Presentation Layer
Infrastructure Layer
Data Access LayerApplication Layer
Domain Layer
Blog
Post
CommentPostCreatedEvent
Event Sourcing != Command Sourcing
https://github.com/ivanpaulovich/jambo/
ProducerAPI ConsumerAPP
Publica
Auth API
Kafka
MongoDB
Escuta por mensagens, aplica nas agregações e
modifica o MongoDB
Recebe mensagens, processa pelos CommandHandlers e
publica DomainEvents no Kafka
Domínio
Gera tokens de autenticação
Mapeamento com MongoDB e repositórios
Barramento Kafka
• Recebe Commands
• Publica Commands internamente (MediatR)Apresentação
• Captura Commands (Command Handlers)
• Processa as mensagens e integraçõesApplication
• Regras de negócio
• Lança Domain EventsDomain
• Escreve no Banco de DadosInfraestrutura
• Console APP que escuta Domain EventsApresentação
• Processa Domain Events e controla a
transaçãoApplication
• Aplica Domain EventsDomain
• Lê do Banco de DadosInfraestrutura
Command
Handler
Command
Handler
Estado
Atual
Command
Command
Handler
Estado
Atual
Command
Domain Event A
Domain Event B
Busca o estado atual
Realiza uma operação na Agregação
Publica os Domain Events
Domain
Event
Handler
Domain Event A
Domain
Event
Handler
Domain Event A
Domain
Event
Handler
MongoDB
Busca o estado atual
Aplica uma operação na Agregação
Atualiza em BD
OptimisticConcurrency
http://samnewman.io/talks/principles-of-microservices/
https://github.com/ivanpaulovich/jambo/
https://github.com/ivanpaulovich/jambo/
https://www.exceptionnotfound.net/implementing-cqrs-in-net-
part-1-architecting-the-application/
http://microservices.io/patterns/data/event-sourcing.html
https://initiate.andela.com/event-sourcing-and-cqrs-a-look-at-
kafka-e0c1b90d17d8

Mais conteúdo relacionado

Mais de Ivan Paulovich

Estudo do eShopOnContainers
Estudo do eShopOnContainersEstudo do eShopOnContainers
Estudo do eShopOnContainersIvan Paulovich
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Ivan Paulovich
 
Princípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETPrincípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETIvan Paulovich
 
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHUtilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHIvan Paulovich
 
Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Ivan Paulovich
 
Mercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesMercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesIvan Paulovich
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalRIvan Paulovich
 
Construindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRConstruindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRIvan Paulovich
 
Construindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRConstruindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRIvan Paulovich
 
Levando sua aplicação para a nuvem
Levando sua aplicação para a nuvemLevando sua aplicação para a nuvem
Levando sua aplicação para a nuvemIvan Paulovich
 
Conhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIConhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIIvan Paulovich
 
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptCriando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptIvan Paulovich
 

Mais de Ivan Paulovich (12)

Estudo do eShopOnContainers
Estudo do eShopOnContainersEstudo do eShopOnContainers
Estudo do eShopOnContainers
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)
 
Princípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NETPrincípios SOLID de OO usando .NET
Princípios SOLID de OO usando .NET
 
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BHUtilize o vso e publique imagens docker Global Azure Bootcamp - BH
Utilize o vso e publique imagens docker Global Azure Bootcamp - BH
 
Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014Windows Azure Mobile Services InfoTech 2014
Windows Azure Mobile Services InfoTech 2014
 
Mercado de ti e suas oportunidades
Mercado de ti e suas oportunidadesMercado de ti e suas oportunidades
Mercado de ti e suas oportunidades
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
Construindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalRConstruindo apps de tempo real com SignalR
Construindo apps de tempo real com SignalR
 
Construindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalRConstruindo Apps com ASP.NET SignalR
Construindo Apps com ASP.NET SignalR
 
Levando sua aplicação para a nuvem
Levando sua aplicação para a nuvemLevando sua aplicação para a nuvem
Levando sua aplicação para a nuvem
 
Conhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web APIConhecendo os recursos do ASP.NET Web API
Conhecendo os recursos do ASP.NET Web API
 
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e JavascriptCriando aplicativos para Windows 8 usando apenas HTML5 e Javascript
Criando aplicativos para Windows 8 usando apenas HTML5 e Javascript
 

Aggregates com Event Sourcing