Sobes.tech
Middle+

O que é uma saga no contexto da gestão de transações?

sobes.tech IA

Resposta da IA

Uma saga é um padrão de gestão de transações distribuídas na arquitetura de microserviços. Consiste numa sequência de transações locais, onde cada transação atualiza dados dentro de um único serviço.

Se alguma transação local na sequência falhar, a saga executa um conjunto de transações de compensação para reverter as alterações feitas pelas transações locais que foram concluídas com sucesso, restaurando assim a integridade do sistema.

Duas abordagens principais para implementar sagas:

  1. Coreografia: Os serviços trocam eventos diretamente, sem depender de um coordenador central. Cada serviço escuta eventos gerados por outros serviços e executa suas transações locais e/ou publica novos eventos em resposta.

    • Vantagens: Mais simples de implementar para um número reduzido de serviços, não há um ponto único de falha.
    • Desvantagens: Difícil de rastrear o fluxo de execução e dependências cíclicas potenciais, mais difícil de depurar.
  2. Orquestração: Um orquestrador central (orquestrador de saga) gerencia a sequência de execução das transações locais. O orquestrador envia comandos aos serviços para que realizem suas transações locais e responde aos eventos devolvidos pelos serviços (sucesso/fracasso) para tomar decisões sobre o próximo passo ou executar transações de compensação.

    • Vantagens: Clareza na responsabilidade, mais fácil de rastrear e depurar o fluxo de execução, mais simples de implementar lógica complexa.
    • Desvantagens: O orquestrador pode ser um ponto único de falha, requer lógica adicional para gerenciar o estado da saga.

A escolha da implementação depende da complexidade do processo de negócio, da quantidade de serviços envolvidos e dos requisitos de gestão e observabilidade. Saga não garante atomicidade no sentido clássico (ACID), mas garante consistência eventual.