O padrão Saga é uma maneira de gerenciar a consistência de dados entre microsserviços em cenários de transações distribuída. Sobre esse padrão, assinale a afirmativa correta.
- A)Uma saga é uma transação de estilo ACID no nível da própria saga mesmo havendo múltiplos microsserviços.
Errada, porque Saga não é uma transação ACID no sentido clássico, já que em microsserviços normalmente não há uma única transação atômica cobrindo tudo.
- B)Como os microsserviços participantes de uma saga não colaboram entre sim, não há risco de dependência cíclica.
Errada, porque os serviços em uma saga interagem sim, seja por eventos ou por coordenação, então pode haver dependências e até riscos de acoplamento indireto.
- C)As sagas coreografadas causam maior acoplamento entre microsserviços do que as sagas orquestradas.
Errada, porque a coreografia tende a ter menos acoplamento central do que a orquestração, já que não depende de um controlador único.
- D)As transações de compensação são iguais a rollback em banco de dados, desfaz tudo como se nada tivessem ocorrido.
Errada, porque transação de compensação não é igual a rollback de banco relacional; ela tenta desfazer efeitos de forma lógica, mas não necessariamente perfeita.
- E)As sagas orquestradas usam um coordenador centralizado para definir a ordem de execução dos microsserviços.
Certa, porque na saga orquestrada existe um orquestrador central que define e acompanha a sequência das etapas entre os microsserviços.
Gabarito: E
O padrão Saga aparece quando você precisa coordenar uma operação que passa por vários microsserviços, mas sem depender de uma transação ACID única atravessando todos eles. Em vez disso, cada serviço executa sua parte e, se algo falhar no meio do caminho, entram as ações de compensação para desfazer logicamente o que já foi feito. É uma solução muito usada em arquitetura de microsserviços porque tenta equilibrar consistência e autonomia dos serviços. A grande sacada é que Saga não é um "rollback mágico" igual ao do banco de dados tradicional. As compensações procuram trazer o sistema para um estado aceitável, mas podem não restaurar exatamente cada detalhe anterior. Em outras palavras, o mundo dos microsserviços é menos elegante que o do banco relacional, e a vida segue assim mesmo. Existem duas formas clássicas de implementar Saga: coreografia e orquestração. Na coreografia, os serviços reagem a eventos, sem um controlador central. Na orquestração, há um componente central que dita a sequência das etapas e coordena o fluxo. Por isso, a afirmativa correta é a que descreve a saga orquestrada com um coordenador centralizado para definir a ordem de execução dos microsserviços. Em termos doutrinários, isso está alinhado com a prática de consistência eventual e transações distribuídas em microsserviços, tema recorrente em arquitetura de software moderna, embora não haja um fundamento legal específico aqui. O importante para prova é: Saga lida com consistência distribuída, compensação não é rollback puro, e orquestração envolve coordenação central.