Slide 1

Slide 1 text

Outbox Pattern o que é isso?

Slide 2

Slide 2 text

Sobre mim - https://www.linkedin.com/in/eusouodaniel - https://github.com/eusouodaniel - https://eusouodaniel.com - https://dev.to/eusouodaniel #TrilhaMicroservices <3

Slide 3

Slide 3 text

O que veremos hoje? - Comunicação síncrona e assíncrona - Garantia de entrega - Atomicidade - Como garantir a atomicidade? - Transactional Outbox Pattern - Quando usar esse pattern? - Limitações - Aplicando Transactional Outbox Pattern

Slide 4

Slide 4 text

Síncrono e assíncrono Síncrono - Resposta imediata - Perda de autonomia - HTTP é um exemplo Assíncrono - Sem resposta imediata - Desacoplamento - Independência

Slide 5

Slide 5 text

Comunicação assíncrona

Slide 6

Slide 6 text

Garantia de entrega - Políticas de retry - Retenção de mensagem - Dead letter queue

Slide 7

Slide 7 text

Atomicidade - Integridade e consistência dos dados - Dados não atômicos e problemas

Slide 8

Slide 8 text

Garantindo a atomicidade do dado - Transaction - Sagas - Coreografia e Orquestração - 2PC - Outbox pattern

Slide 9

Slide 9 text

Transactional Outbox Pattern - Execução de ação atômica antes da ação desejada - A mensagem só é publicada na fila depois de persistida no banco

Slide 10

Slide 10 text

Quando usar Outbox? - Quando o 2 phase commit não for uma opção - Quando estiver usando mais de 1 fonte de persistência - push - publish - Quando não conseguimos ter atomicidade na operação

Slide 11

Slide 11 text

Principais limitações - At least once - Não é em tempo real, é quase em tempo real

Slide 12

Slide 12 text

Bora ver na prática?

Slide 13

Slide 13 text

Criando um usuário e recomendações…

Slide 14

Slide 14 text

Persistindo o mesmo no banco de dados

Slide 15

Slide 15 text

Scheduler que busca no banco de tempos em tempos

Slide 16

Slide 16 text

Publicação da mensagem no broker

Slide 17

Slide 17 text

Consumer recebeu a mensagem

Slide 18

Slide 18 text

E como fica o banco de dados?

Slide 19

Slide 19 text

E como fica o banco de dados?

Slide 20

Slide 20 text

Perguntas?

Slide 21

Slide 21 text

Obrigado!

Slide 22

Slide 22 text

Links úteis - https://github.com/eusouodaniel/tdc-outbox - https://microservices.io/patterns/data/transactional-outbox.html - https://martinfowler.com/articles/patterns-of-distributed-systems/two-phase-c ommit.html - https://jbossts.blogspot.com/2017/06/sagas-and-how-they-differ-from-two.ht ml