Você abre mão de uma transação distribuída única e usa uma saga: uma sequência de transações locais em que cada passo publica um evento que dispara o seguinte, e cada passo tem uma ação compensatória para desfazê-lo. A consistência vira eventual, então o trabalho de projeto é decidir o que compensar, o que repetir e o que escalar para um humano. Modele o fluxo explicitamente, por coreografia com eventos ou coordenado por um orquestrador.
Por que os entrevistadores perguntam isso
O entrevistador testa se você recorre a two phase commit ou se entende por que quase ninguém roda isso entre serviços. Ele quer ouvir sobre ações compensatórias, idempotência, a diferença semântica entre rollback e estorno, e como você mantém a máquina de estados visível. Isso também sonda se você questionaria as fronteiras dos serviços em primeiro lugar, já que alguns desses passos talvez devessem estar juntos.
Como estruturar sua resposta
- Explique por que uma transação distribuída não é a resposta.
- Defina a saga: transações locais mais compensações.
- Contraste coreografia com orquestração e escolha uma.
- Cubra as partes sujas: falha parcial, retries, escalonamento humano.
Exemplo de resposta
Um two phase commit entre três serviços e três bancos significa segurar locks através da rede e ter um coordenador que pode travar tudo se cair, então eu não faria isso. Em vez disso o fluxo vira uma saga. Cada serviço faz a própria transação local e emite um evento, e cada passo tem uma compensação definida: se o envio não conseguir alocar, liberamos a reserva de estoque e estornamos ou cancelamos o pagamento. O importante é que compensação é uma ação de negócio, não um rollback; um estorno deixa um registro visível, e isso está correto. Para qualquer coisa com mais de uns três passos eu uso um orquestrador em vez de coreografia pura, porque com coreografia o fluxo real não mora em lugar nenhum e ninguém consegue responder onde um pedido travou. Um orquestrador me dá uma máquina de estados, timeouts por passo e um status consultável. Cada passo é idempotente e repetido com backoff, e tudo que esgota os retries cai numa fila de operações com o id do pedido, porque algumas falhas realmente precisam de uma pessoa.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- O que você faz quando a própria ação compensatória falha?
- Como você mostraria a um cliente o estado de um pedido em andamento?
- Quando você juntaria dois serviços em vez de rodar uma saga entre eles?
Mais perguntas para Desenvolvedor Backend
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas