1 of 33

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

2 of 33

Quem sou eu?

Luram Archanjo

Software Expert @ Mercado Livre

MBA em Projetos Java

Entusiasta em Java e Microsserviços

3 of 33

Agenda

Microsserviços! O que e Como queremos!

Dor :/

Conclusão :|

01.

02.

04.

Solução :D

03.

4 of 33

Microsserviços

5 of 33

Microsserviços - Onde estamos

6 of 33

Microsserviços - 4 anos atrás!

7 of 33

Microsserviços - O que queremos!

Monolith

Process

Process

Process

Microsserviço

Microsserviço

Microsserviço

8 of 33

Como queremos migrar para uma Arquitetura Distribuída?

9 of 33

Strangler Pattern

+

Event-Driven Architecture

10 of 33

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

11 of 33

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

12 of 33

Caraca! Estamos em uma Event-Driven Architecture!

Qual a dor com esta abordagem?

13 of 33

Microsserviços - Nossa dor!

Message Broker

Checkout

Payment

Domain Event

Shipment

Linha do tempo

14 of 33

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!

15 of 33

Nova funcionalidade

Microsserviços - Nossa dor!

Message Broker

Checkout

Payment

Domain Event

Shipment

Linha do tempo

Coupon

16 of 33

Eis que o negócio começa a ter muuuitos novos fluxos e sub-fluxos!

Nossa arquitetura não escalou :/

17 of 33

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!

18 of 33

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

19 of 33

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

20 of 33

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!

21 of 33

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

22 of 33

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!

23 of 33

Microsserviços - Nossa dor!

Message Broker

Checkout

Payment

Domain Event

Shipment

Linha do tempo

Coupon

24 of 33

Microsserviços - Nossa dor!

14. Event-Driven Architecture Style

Broker Topology Style

25 of 33

Como sanar essa dor em Event-Driven Architecture?

26 of 33

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

27 of 33

Microsserviços - Nossa solução!

14. Event-Driven Architecture Style

Mediator Topology Style

28 of 33

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.

29 of 33

Workflow Engine

Microsserviços - Nossa solução!

Message Broker

Commands

Mediator / Orchestrator

Checkout

Payment

Shipment

Coupon

Etapa 1

Etapa 2

Etapa 3

Etapa 4

30 of 33

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

31 of 33

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!

32 of 33

Conclusão!

Evolua sua Arquitetura de acordo com os requisitos arquiteturais!

33 of 33

Muito obrigado! Questionamentos?

Luram Archanjo

/luram-archanjo