Software e IA para executivos · Capítulo 14 de 41 · 7 min
Tentar de novo sem cobrar o cliente duas vezes
Falha de rede acontece todo dia; a política de nova tentativa com espera crescente e chave única impede a cobrança em dobro.
Este capítulo faz parte do curso gratuito Software e IA para executivos.
Aprovar a política de nova tentativa antes de o fluxo entrar no ar decide se uma falha de rede vira reembolso duplicado depois. Nova tentativa automática é o que o sistema faz quando uma chamada falha por motivo passageiro.
Erro de rede acontece todo dia, em toda integração. A pergunta que decide o custo é o que o sistema faz depois da falha, porque é ali que o dinheiro se perde ou se duplica.
Um tempo esgotado significa ausência de resposta dentro do prazo. A cobrança pode ter ocorrido; confira sua situação antes de criar uma nova operação.
Três políticas cabem na mesma frase, e a distância entre elas custa dinheiro. Sem nova tentativa, a falha precisa de encaminhamento e comunicação ao cliente.
Com nova tentativa na hora, cinco chamadas caem em menos de um segundo sobre o serviço que já estava em falha. É o jeito mais eficiente de derrubar de vez o que ia se recuperar sozinho.
Na espera crescente, chamada backoff, o intervalo cresce até um teto definido. A regra deve respeitar os limites e as instruções do fornecedor. O sorteio de milissegundos na espera, chamado jitter, evita que todos os clientes que falharam juntos voltem juntos na tentativa seguinte.
Sem o jitter, o serviço em recuperação recebe ondas sincronizadas em vez de carga espalhada, e cai de novo a cada rodada. Depois do teto de tentativas, a mensagem precisa de destino. A fila morta, ou DLQ, é o depósito onde ela fica com número, valor e motivo, para alguém olhar antes de o caso virar prejuízo.
Nenhuma dessas três políticas evita a cobrança repetida. Para uma gravação interna, registre o identificador único junto do efeito na mesma transação. Para uma cobrança externa, envie a mesma chave ao fornecedor, confira sua janela de validade e reconcilie resultados incertos. Uma chave criada apenas no seu banco não impede duplicação no parceiro.
A escolha fica mais clara quando você a vê rodar. No painel abaixo, trocar a política muda a linha do tempo das tentativas, o que o cliente enxerga e a resposta sobre a cobrança repetida.
Laboratório ao vivo: tentar de novo sem causar estrago
1. A política que você aprova
Cenário ilustrativo: o cliente confirma um pedido de R$ 3.480. O serviço de pagamento cobra, mas a resposta se perde e as tentativas seguintes enfrentam instabilidade. Os tempos abaixo são exemplos.
2. O que acontece com o pedido
Sem nova tentativa
- 0 stentativa 1: chega a cobrar, e a resposta se perde no caminho
- fimninguém tenta de novo, e o erro fica só no registro técnico
O cliente vê: uma tela de erro, embora a cobrança tenha ocorrido. O suporte precisa conferir o pagamento no provedor.
Cobrado duas vezes sem chave de idempotência: não neste exemplo, que tem uma única tentativa. O resultado continua sem confirmação na aplicação.
Nova tentativa na hora
- 0,0 stentativa 1: chega a cobrar, e a resposta se perde no caminho
- 0,1 stentativa 2: o gateway segue sobrecarregado
- 0,2 stentativa 3: agora com a fila dos outros clientes atrás
- 0,3 stentativa 4: mesma falha, mais carga
- 0,4 stentativa 5: passa, e a cobrança é registrada de novo
O cliente vê: confirmação normal. Nada na tela indica que algo saiu errado.
Cobrado duas vezes sem chave de idempotência: sim. A tentativa 1 já tinha cobrado, e a tentativa 5 cobra de novo.
Espera crescente com fila morta
- 0 stentativa 1: chega a cobrar, e a resposta se perde no caminho
- 1 stentativa 2, depois de um segundo de espera
- 3 stentativa 3, com a espera dobrada e um sorteio de milissegundos
- 7 stentativa 4, a última do teto combinado
- fila mortao pedido cai na lista de inspeção, com número, valor e motivo
O cliente vê: pedido recebido, pagamento em processamento. O item na fila morta tem dono e prazo.
Risco de cobrança repetida: uma nova tentativa pode cobrar outra vez, mesmo sem resposta. A espera maior reduz a pressão no serviço; a fila morta exige conferência do pagamento.
Registrar uma operação única no banco local não garante uma cobrança única no serviço externo. Para repetir com segurança, o provedor precisa aceitar a estratégia: por exemplo, a mesma chave de idempotência e os mesmos dados, dentro do prazo de validade da chave. Quando o resultado continuar incerto, confira a operação no provedor antes de reenviar.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Entrega única garantida de ponta a ponta não existe sobre rede que falha. O que existe é processamento efetivamente único, obtido com a chave de idempotência dentro do consumidor.
Trocar de fila por uma com exactly-once move o problema sem resolver. Se o processo cai depois de gravar a cobrança e antes de confirmar o recebimento, a fila reentrega o mesmo evento, e nenhuma garantia do lado dela cobre essa janela.
Todo fluxo que movimenta dinheiro precisa responder, antes de entrar no ar, o que acontece se a mesma mensagem chegar três vezes. Peça evidência do destino das falhas e do responsável, em painel ou relatório de teste.
Antes de aprovar o fluxo, peça a política de nova tentativa por escrito, com falhas elegíveis, teto, espera crescente e destino após o teto. Confira o número de itens na fila morta de ontem e o nome de quem responde por eles esta semana.
Exija a mesma chave de idempotência em todo fluxo com dinheiro, com validade e consulta de resultado incerto no fornecedor.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Engenharia de Software para ExecutivosEvitar que a troca de um fornecedor pare a operaçãoExaminar conexões de Evitar que a troca de um fornecedor pare a operação
- MCP com Chrome: Automação com IAFazer a automação sobreviver à segunda-feira sem duplicar registroExaminar conexões de Fazer a automação sobreviver à segunda-feira sem duplicar registro
- MCP para quem decideCalcular o que a infraestrutura obriga a manter ligadoExaminar conexões de Calcular o que a infraestrutura obriga a manter ligado
- Deploy para decisão executivaLer a fatura de plataforma linha por linhaExaminar conexões de Ler a fatura de plataforma linha por linha
Voltar ao capítulo anterior: Responder ao cliente agora e deixar o resto para depois
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Capítulos vizinhos em Software e IA para executivos
- 12Ler o erro da API antes de culpar alguém ou repetir
- 13Responder ao cliente agora e deixar o resto para depois
- 14Tentar de novo sem cobrar o cliente duas vezes
- 15Manter vários sistemas de acordo quando um deles cai
- 16Cobrar o desenho das tabelas antes de aprovar o sistema