SlideShare uma empresa Scribd logo
Aggregates com Event Sourcing
100loop.com
github.com/ivanpaulovich
De 2012 à 2014
Aggregates com Event Sourcing
Aggregates com Event Sourcing
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
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
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
Aggregates com Event Sourcing
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
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Event Sourcing != Command Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event 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
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Busca o estado atual
Realiza uma operação na Agregação
Publica os Domain Events
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Domain
Event
Handler
Domain Event A
Domain
Event
Handler
Domain Event A
Domain
Event
Handler
MongoDB
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Busca o estado atual
Aplica uma operação na Agregação
Atualiza em BD
OptimisticConcurrency
Aggregates com Event Sourcing
Aggregates com Event Sourcing
Aggregates com Event Sourcing
http://samnewman.io/talks/principles-of-microservices/
Aggregates com Event Sourcing
https://github.com/ivanpaulovich/jambo/
https://github.com/ivanpaulovich/jambo/
Aggregates com Event Sourcing
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

PDF
DDD Tactical Design with Clean Architecture - Ivan Paulovich
PDF
Clean Architecture Essentials - Stockholm Software Craftsmanship
PDF
Clean Architecture Essentials @ivanpaulovich
PPTX
Building rich domain models with ddd and tdd ivan paulovich - betsson
PPTX
Moving to Microservices
PPTX
Produzindo e consumindo um stream de eventos
PDF
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crec...
PDF
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em creches
DDD Tactical Design with Clean Architecture - Ivan Paulovich
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials @ivanpaulovich
Building rich domain models with ddd and tdd ivan paulovich - betsson
Moving to Microservices
Produzindo e consumindo um stream de eventos
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em crec...
Como uma aplicação baseada em fluxo de dados pode ampliar a segurança em creches

Mais de Ivan Paulovich (12)

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

Último (16)

PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Arquitetura de computadores - Memórias Secundárias
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
COBITxITIL-Entenda as diferença em uso governança TI
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Anúncio

Aggregates com Event Sourcing