para uma arquitetura de microserviços as coisas ficam um pouco mais complicadas • Necessitamos compartilhar dados entre diferentes serviços • Consumir dados de tabelas dos bancos de dados de serviços • E também fazer transações, várias operações entre múltiplos serviços que no final geram uma única unidade atômica. +
ponto único de falha • Performance ruim, locks! • Processamento síncrono • Nenhum serviço de Cloud implementa transações distribuídas pois é difícil alcançar escalabilidade e confiabilidade +
• Implementa um workflow de transações, cada transação acontece no escopo de cada serviço localmente • Para cada transação existe uma operação de compensação para caso de falha • Ao final de cada transação é publicado um evento que é consumido pela transação seguinte. +
local e publica um evento referente. • O evento pode ser escutado por um ou mais serviços que podem executar transações e publicar novos eventos. • O workflow é finalizado quando o último serviço executa uma transação e não publica nenhum evento +