Microsserviços: Eventos de domínio
Introdução
Quando trabalhamos com microsserviços temos diversos desafios, e o padrão de Evento de Domínio, na minha opinião, é um padrão inegociavel nesse contexto, já que por escolher a arquitetura de microsserviços, acredito que a aplicação seja realmente complexa.
Eventos
O que é um evento? Eventos são objetos imutaveis, que representam alterações de estado, ocorridas no passado.
Eventos de domínio
Um evento de domínio reflete mudanças de estado ou a ocorrência de atividades importantes no domínio de negócios específico ao qual o sistema está relacionado.
Toda alteração de estado de uma agregação, deve produzir um evento de domínio.
Caso uma aplicação precise ser informada de quando um ação ocorre, ela pode obter essa informação do evento de domínio correspondente. Esse abordagem garante um baixo acoplamento, pois não há uma dependência direta entre as aplicações.
No exemplo abaixo, temos uma aplicação que recebe uma pedido, e atualiza o estoque o com base no evento de domínio gerado. A aplicação de estoque pega os produtos e suas quantidades, e utiliza para da baixa no estoque usando esses valores.
Podemos utilizar esses eventos para manter um histórico das alterações na agregação responsável.
Vantagens
Conforme suas aplicação ganham maturidade, a utilização deste padrão diminuí fortemente o acoplamento entre aplicações, quando temos uma arquitetura orientada eventos.
Quando uma aplicação precisa ser responsiva a uma alteração de estado, ela pode simplesmente assinar o tópico.
Esses dados também pode ir para um DataLake e serem utilizados para análise.
Exemplo:
Conclusão
Eventos de domínio são uma ferramenta poderosa para modelar e lidar com mudanças significativas no estado de um sistema, promovendo a comunicação eficaz e facilitando a evolução do software orientado a domínio.