Timeouts: a configuração esquecida que derruba sistemas
Uma chamada a um serviço externo sem limite de tempo pode esperar para sempre — e levar o seu sistema junto. Por que timeouts são configuração obrigatória.
Por Equipe We Codex3 min de leitura
Por padrão, muitas bibliotecas HTTP esperam indefinidamente — ou por minutos — por uma resposta. Quando um serviço externo trava sem responder, cada requisição do seu sistema fica presa esperando, consumindo conexões e memória, até que nada mais funcione.
Defina sempre
const res = await fetch(url, { signal: AbortSignal.timeout(5000) })Cinco segundos é muito mais que o normal para a maioria das APIs, e muito menos que "para sempre".
Timeouts em camadas
- Conexão: quanto tempo esperar para estabelecer a conexão.
- Resposta: quanto tempo esperar pelos dados.
- Total da operação: incluindo retentativas.
- Banco de dados: consultas que passam do limite são canceladas.
Escolhendo os valores
Baseie-se no tempo normal de resposta do serviço (medido), com margem. Uma API que responde em 300ms pode ter timeout de 3 segundos; um relatório pesado, mais.
O que fazer quando o tempo estoura
- 1.Retentar só se a operação for segura de repetir (Idempotência: como evitar cobrança duplicada e pedidos repetidos, Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente).
- 2.Usar um plano B (Degradação graciosa: funcionar pela metade é melhor que sair do ar).
- 3.Abrir o circuito se as falhas se repetirem (Circuit breaker: quando um serviço externo cai, o seu não precisa cair junto).
- 4.Avisar o usuário de forma clara.
No front e no app
Também configure timeouts nas chamadas do navegador e do celular, com mensagens adequadas — em redes móveis, isso é ainda mais importante.
A We Codex constrói sistemas resilientes. Veja sistemas web ou fale com a gente.
- Timeouts
- Resiliência
- Integrações
- Backend
Resolver de vez, com quem faz isso todo dia
Quer saber quão exposto está o seu sistema hoje?
Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.
Continue lendo
Tudo sobre Segurança- Ler artigo
Segurança3 min
Circuit breaker: quando um serviço externo cai, o seu não precisa cair junto
O serviço de frete caiu e, junto com ele, o checkout inteiro. O padrão circuit breaker impede que uma falha externa derrube o seu sistema.
- Ler artigo
Segurança3 min
Degradação graciosa: funcionar pela metade é melhor que sair do ar
Quando uma parte do sistema falha, o resto pode continuar funcionando. Degradação graciosa é planejar o que o usuário vê quando algo dá errado.
- Ler artigo
Segurança3 min
Gerenciando o erro 429 Too Many Requests: exponential backoff e retry no cliente
Seu app recebe 429 e responde tentando de novo imediatamente — piorando tudo. Veja como implementar exponential backoff com jitter e dar um feedback decente ao usuário.