Event-Driven Microservices Architecture Até que ponto é sustentável?
Quem sou eu?
Luram Archanjo
Software Expert @ Mercado Livre
MBA em Projetos Java
Entusiasta em Java e Microsserviços
Agenda
Microsserviços! O que e Como queremos!
Dor :/
Conclusão :|
01.
02.
04.
Solução :D
03.
Microsserviços
Microsserviços - Onde estamos
Microsserviços - 4 anos atrás!
Microsserviços - O que queremos!
Monolith
Process
Process
Process
Microsserviço
Microsserviço
Microsserviço
Como queremos migrar para uma Arquitetura Distribuída?
Strangler Pattern
+
Event-Driven Architecture
Microsserviços - Strangler Pattern
Monolith
Process A
Process B
Process C
Linha do tempo
Process D
Process E
Process F
Process G
Monolith
Process B
Process C
Process D
Process E
Process F
Process G
Monolith
Process C
Process D
Process E
Process F
Process G
Microsserviços - Event-Driven Architecture (Broker Topology)
Monolith
Process
Process
Process
Process
Process
Message Broker
Microsserviços
(Process A)
Microsserviços
(Process B)
Domain Event
Domain Event
Domain Event
Caraca! Estamos em uma Event-Driven Architecture!
Qual a dor com esta abordagem?
Microsserviços - Nossa dor!
Message Broker
Checkout
Payment
Domain Event
Shipment
Linha do tempo
Microsserviços - Nossa dor!
Q: Nova funcionalidade! Após confirmação do envio, vamos mandar cupons de desconto!
R: Fácil! Somente ouvir o evento de confirmação de Shipment Service!
Nova funcionalidade
Microsserviços - Nossa dor!
Message Broker
Checkout
Payment
Domain Event
Shipment
Linha do tempo
Coupon
Eis que o negócio começa a ter muuuitos novos fluxos e sub-fluxos!
Nossa arquitetura não escalou :/
Microsserviços - Nossa dor!
Q: Nova funcionalidade! Após confirmação do envio, vamos bla, bla, bla!
R: Fácil! Somente ouvir o evento de confirmação de Shipment Service!
Microsserviços - Nossa dor!
Message Broker
Domain Event
Shipment
Coupon
Microserviço
Microserviço
Microserviço
Microserviço
Microserviço
Microserviço
Microserviço
Microserviço
Microserviço
Você ganha tempo a curto prazo usando coreografia, porém a longo prazo lhe rende uma "dívida técnica"!
Microsserviços - Nossa dor!
Q: Quando for uma confirmação de um envio do fluxo X, Y e Z não podemos enviar cupom, bla, bla, bla!
R: Eita vai demorar! Vamos ter que alterar vários serviços!
Microsserviços - Nossa dor!
Message Broker
Domain Event
Shipment
Coupon
Microserviço
Microserviço
Microserviço
Microserviço
Microserviço
IF true, descarta
IF true, descarta
IF true, descarta
IF true, descarta
IF true, descarta
IF true, descarta
Microsserviços - Nossa dor!
Q: Vamos ter um novo fluxo e precisamos alterar a ordem do processo atual para ganhar eficiência!
Simples não!? Estamos em EDA?
R: É…. fazer a coreografia de muitos fluxos está insano!
Microsserviços - Nossa dor!
Message Broker
Checkout
Payment
Domain Event
Shipment
Linha do tempo
Coupon
Microsserviços - Nossa dor!
14. Event-Driven Architecture Style
Broker Topology Style
Como sanar essa dor em Event-Driven Architecture?
Microsserviços - Dimensão da dor!
Bounded Context: +7
Microservices: +60
Domain Events: +40
Message Broker
Microsserviços
(Process A)
Microsserviços
(Process B)
Microsserviços
(Process C)
Microsserviços
(Process D)
Microsserviços
(Process E)
Microsserviços
(Process F)
Domain Event
Time to market
Microsserviços - Nossa solução!
14. Event-Driven Architecture Style
Mediator Topology Style
Microsserviços - Nossa solução!
Mediator Topology é útil para eventos que possuem várias etapas e requerem algum nível de orquestração para processar o evento.
Todas essas etapas exigem algum nível de orquestração para determinar a ordem das etapas e quais podem ser executadas em série e em paralelo.
Workflow Engine
Microsserviços - Nossa solução!
Message Broker
Commands
Mediator / Orchestrator
Checkout
Payment
Shipment
Coupon
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Mediator
Microsserviços - Nossa solução!
Message Broker
Commands
Checkout
Payment
Shipment
Coupon
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Etapa 1: Checkout finalizado
Etapa 2: Pagamento aprovado Email enviado
Etapa 3: Envio confirmado
Seguro emitido
Etapa 4: Cupom gerado & Email enviado
Microsserviços - Nossa solução!
Q: Vamos ter um novo fluxo e precisamos alterar a ordem do processo atual para ganhar eficiência!
R: Show, vou alterar o workflow no mediator / orchestrator!
Conclusão!
Evolua sua Arquitetura de acordo com os requisitos arquiteturais!
Muito obrigado! Questionamentos?
Luram Archanjo
/luram-archanjo