Event Sourcing e Event Driven Architecture | Arquitetura
- Event Sourcing e Event Driven Architecture | Arquitetura
Artigo: https://medium.com/codigorefinado/event-driven-x-event-sourcing-1b9756d4df15 Vídeo no Youtube: https://www.youtube.com/watch?v=J7ze_DJOpB4
Diferenças:
-
Event Sourcing se concentra em como você armazena e mantém o estado de um sistema usando uma sequência de eventos, o que é especialmente útil quando se precisa de um histórico completo e uma fonte de verdade para o estado de uma entidade.
-
Event-Driven é uma abordagem arquitetônica que se concentra em como os sistemas se comunicam entre si e respondem a eventos em tempo real, promovendo o desacoplamento e a escalabilidade.
Event Driven Architecture
Vídeo Gago: https://www.youtube.com/watch?v=J7ze_DJOpB4
Se o assunto de Governança não é discutido na empresa, provavelmente a arquitetura de eventos não se encaixa muito bem
Explicação
Event-Driven não é sobre “quebrar o sistema em 100 microserviços”. É sobre criar fluxos assíncronos e desacoplados, mesmo em uma arquitetura monolítica. Imagine um monolito de ERP que precisa processar milhares de notas fiscais ao final do dia (batch job). O fluxo clássico seria:
- Uma chamada gigante a um serviço;
- O sistema trava recursos até terminar;
Se der erro, começa de novo.
Agora, e se o processamento fosse orientado a eventos?
- Cada nota fiscal gera um evento NotaCriada.
- Um worker interno (ou externo) consome esses eventos em lote ou em tempo real.
- O core do monolito publica eventos para uma fila (RabbitMQ, Kafka, até Redis).
- O processamento pesado acontece de forma assíncrona, sem bloquear o fluxo principal. E teu sistema vai ter:
- Escalabilidade mesmo sem microserviços.
- Processamento em lote controlado por consumo de fila.
- Facilidade em isolar falhas (erros não travam o sistema inteiro).
- preparação natural para uma futura migração para microsserviços (se fizer sentido, claro).
- Trata de criações de eventos de negócio que propaga pelo meu ecossistema. Desacopla o código de imperativo para reativo. Eu notifico alguém que algo aconteceu e alguém faz algo com isso.
Ex: Serviço 1, 2 e 3
- Modo acoplado: Serviço 1 para enviar algo para o serviço 2 precisa saber o protocolo do serviço 2 (HTTP, etc ...)(acoplado ao serviço 2)
Event Notification | Command, Event | Acoplamento
- Os
comandostem um acoplamento absurda com os parâmetros que o serviço espera - Os
eventosmão tem acoplamento, apenas está preocupado em dizer que alguma coisa aconteceu
Event-Carried State Transfer
- Envia todos os dados necessários dentro do evento
Event Sourcing
- Event Sourcing é um padrão onde as alterações no estado da aplicação são armazenadas como uma sequência de eventos. Em vez de armazenar apenas o estado atual dos dados em um domínio, o Event Sourcing armazena um log de todas as alterações (eventos) que ocorreram ao longo do tempo. Isso permite que o aplicativo reconstrua estados passados e fornece uma trilha de auditoria de alterações. O Event Sourcing é benéfico em cenários que exigem transações comerciais complexas, auditabilidade e a capacidade de reverter ou reproduzir eventos
CQRS
- Segmentar escrita e leitura
- Obtém benefícios como: Performance