O que é?
O padrão de projeto SAGA é um padrão arquitetural usado principalmente para gerenciar transações distribuídas em sistemas de microsserviços. Ele foi criado para resolver o problema de coerência de dados em ambientes onde não é possível ou desejável usar uma transação distribuída tradicional (como uma transação ACID que envolve múltiplos bancos de dados ou serviços).
O que é uma "transação distribuída"?
É uma operação que envolve múltiplos serviços ou múltiplas bases de dados, onde todos precisam ser consistentes no final. O desafio é: se algo falhar no meio, como desfazer o que já foi feito?
Uma SAGA é uma sequência de transações locais em diferentes serviços, onde cada transação é seguida por uma ação compensatória (rollback local) caso algo dê errado.
🔧 Como funciona?
Existem dois tipos principais de implementação do padrão SAGA:
Orquestrado
Existe um orquestrador central que comanda o fluxo de transações.
Ele chama cada serviço na ordem correta e, em caso de falha, executa as transações compensatórias.
Mais facil de adicionar um fluxo novo
Mais facil de dar manutenção
Leitura de codógio mais facil
Coreografado
No padrão coreografado, não existe um orquestrador central. Cada serviço é responsável por ouvir eventos e executar sua parte da transação de forma autônoma. O fluxo é determinado pelos eventos que os serviços emitem e consomem.
Quando um serviço completa sua tarefa, ele publica um evento (por exemplo, EstoqueReservado), e o próximo serviço no fluxo ouve esse evento e age (por exemplo, o serviço de pagamento escuta e processa o pagamento).
Se algo falhar no meio do processo, os serviços devem emitir eventos de compensação, permitindo que os serviços anteriores façam o "rollback" por meio de suas ações compensatórias, normalmente seguindo a ordem inversa da execução.
🧰 Ferramentas para Design e Execução
Existem ferramentas que ajudam tanto no design visual quanto na execução real dos fluxos do padrão Saga. Uma das mais conhecidas é o:
-
Camunda: plataforma de automação de processos baseada em BPMN (Business Process Model and Notation).
- Permite modelar visualmente o fluxo da saga.
- Pode ser integrada diretamente ao código para controlar os serviços e eventos.
- Suporta tanto orquestração quanto coreografia, dependendo da arquitetura adotada.
Outras ferramentas que também podem ser usadas para coreografia de eventos incluem:
Apache Kafka (com Event-Driven Architecture)
Axon Framework (em Java)
Temporal.io (workflow orchestration, mas pode ser usado de forma
híbrida)
Top comments (0)