Time Travel Saga: Síncrona, Consistência Eventual e Coreografada

A->>B: Chamada Síncrona (Etapa 1)
B-->>A: Resposta (OK ou Falha)
alt Falha em B
    A->>A: Aplicar compensação local
else Sucesso
    B->>C: Chamada Síncrona (Etapa 2)
    C-->>B: Resposta (OK ou Falha)
    alt Falha em C
        B->>B: Compensar Etapa em B
        B->>A: Notificar A sobre rollback
        A->>A: Compensar etapa local
    else Sucesso
        B->>B: Etapa concluída
        A->>A: Fluxo finalizado
    end
end

Nesse fluxo, não há um orquestrador central, mas sim uma coreografia síncrona: cada serviço sabe a quem chamar e como disparar compensações.4. Cenários Possíveis de Aplicação4.1 Operações em Pequenos Conjuntos de ServiçosSituações em que há 2 ou 3 serviços envolvidos, e cada um precisa chamar o próximo de forma direta. O fluxo não é muito longo, permitindo gerenciar o retorno de erro e a compensação sem grande complexidade.4.2 Processos que Admitam Latência Potencial nas CompensaçõesComo as correções (rollbacks) acontecem em cadeia, é necessário que a aplicação tolere períodos de inconsistência. Por exemplo, se B falhar depois que A já executou sua operação, a compensação de A pode levar algum tempo até ser concluída, e nesse ínterim o sistema apresenta um estado intermediário.5. Desafios e Pontos de Atenção5.1 Coordenação DistribuídaCada serviço precisa saber não apenas quem invocar na sequência, mas também como sinalizar erros e acionar compensações. Esse conhecimento de “quem chama quem” pode elevar a complexidade de manutenção caso o número de serviços aumente.5.2 Rastreamento de FluxoComo não existe um orquestrador único, o acompanhamento do estado global do processo depende de logging e correlação entre cada chamada síncrona. Ferramentas de trace distribuído (por exemplo, Jaeger, Zipkin) ajudam a entender em que etapa ocorreu a falha.5.3 Timeouts e Falhas de RedeEm comunicação síncrona, se o próximo serviço está indisponível ou leva muito tempo para responder, o serviço atual pode considerar isso como falha e iniciar compensações. Essa decisão precisa de critérios bem definidos (ex.: tempo limite, contagem de retentativas).6. Vantagens PotenciaisBaixo Overhead de Infraestrutura: Não exige um orquestrador central ou mensageria complexa.Simplicidade de Execução Passo-a-Passo: Cada serviço chama o seguinte, aguardando finalização antes de seguir.Flexibilidade de Compensação: Cada serviço gerencia sua própria reversão, recebendo notificações diretamente e aplicando o rollback local.7. ConclusãoO Time Travel Saga (Síncrona, Consistência Eventual, Coreografada) descreve um padrão onde:Comunicação: Cada etapa chama a próxima de forma bloqueante,Consistência: Fica a cargo do “confirma e compensa”, permitindo estados intermediários até que os rollbacks se concretizem,Coordenação: É distribuída, sem orquestrador único, lembrando a ideia de serviços “passando a bola” entre si e retrocedendo no tempo caso algo dê errado em um passo posterior.Esse modelo pode ser útil em cenários com um número moderado de participantes, onde a lógica de fluxo é clara para cada serviço e onde não se exige atomicidade total. A aplicação dessa abordagem requer cuidado ao definir rotas de compensação, tempos de espera e mecanismos de rastreamento do estado em cada serviço, de modo a garantir a confiabilidade do processo como um todo.