Slide 1

Slide 1 text

Event-Driven Microservices Architecture Até que ponto é sustentável?

Slide 2

Slide 2 text

Quem sou eu? Luram Archanjo Software Expert @ Mercado Livre MBA em Projetos Java Entusiasta em Java e Microsserviços

Slide 3

Slide 3 text

Agenda Microsserviços! O que e Como queremos! Dor :/ Conclusão :| 01. 02. 04. Solução :D 03.

Slide 4

Slide 4 text

Microsserviços

Slide 5

Slide 5 text

Microsserviços - Onde estamos

Slide 6

Slide 6 text

Microsserviços - 4 anos atrás!

Slide 7

Slide 7 text

Microsserviços - O que queremos! Monolith Process Process Process Microsserviço Microsserviço Microsserviço

Slide 8

Slide 8 text

Como queremos migrar para uma Arquitetura Distribuída?

Slide 9

Slide 9 text

Strangler Pattern + Event-Driven Architecture

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Caraca! Estamos em uma Event-Driven Architecture! Qual a dor com esta abordagem?

Slide 13

Slide 13 text

Microsserviços - Nossa dor! Message Broker Checkout Payment Domain Event Shipment Linha do tempo

Slide 14

Slide 14 text

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!

Slide 15

Slide 15 text

Nova funcionalidade Microsserviços - Nossa dor! Message Broker Checkout Payment Domain Event Shipment Linha do tempo Coupon

Slide 16

Slide 16 text

Eis que o negócio começa a ter muuuitos novos fluxos e sub-fluxos! Nossa arquitetura não escalou :/

Slide 17

Slide 17 text

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!

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Você ganha tempo a curto prazo usando coreografia, porém a longo prazo lhe rende uma "dívida técnica"!

Slide 20

Slide 20 text

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!

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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!

Slide 23

Slide 23 text

Microsserviços - Nossa dor! Message Broker Checkout Payment Domain Event Shipment Linha do tempo Coupon

Slide 24

Slide 24 text

Microsserviços - Nossa dor! 14. Event-Driven Architecture Style Broker Topology Style

Slide 25

Slide 25 text

Como sanar essa dor em Event-Driven Architecture?

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Microsserviços - Nossa solução! 14. Event-Driven Architecture Style Mediator Topology Style

Slide 28

Slide 28 text

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.

Slide 29

Slide 29 text

Workflow Engine Microsserviços - Nossa solução! Message Broker Commands Mediator / Orchestrator Checkout Payment Shipment Coupon Etapa 1 Etapa 2 Etapa 3 Etapa 4

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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!

Slide 32

Slide 32 text

Conclusão! Evolua sua Arquitetura de acordo com os requisitos arquiteturais!

Slide 33

Slide 33 text

Muito obrigado! Questionamentos? Luram Archanjo /luram-archanjo