Início › Glossário › Exponential Backoff com Jitter
Glossário

O que é Exponential Backoff com Jitter?

Exponential backoff com jitter é uma estratégia de retry em que o tempo de espera aumenta a cada tentativa (backoff) e ganha uma variação aleatória (jitter). Isso evita que centenas de automações falhem e “tentem de novo” ao mesmo tempo, reduzindo picos, erros 429/5xx e o efeito manada quando uma API ou serviço fica instável.

O problema que o jitter resolve: retries sincronizados (efeito manada)

Na prática, a maioria das falhas temporárias não é “bug”: é limite de taxa (429), instabilidade momentânea (5xx), rede oscilando, fila interna cheia, ou manutenção rápida do fornecedor.

Se você configurar retry com atraso fixo (ex.: sempre 10s), muitos jobs acabam sincronizando: falham juntos, esperam igual e batem de novo juntos. Resultado: o serviço não se recupera, e sua automação vira parte do problema.

O jitter quebra essa sincronia: cada execução espera um pouco diferente, espalhando o tráfego no tempo.

O que é exponential backoff (sem jitter) e como ele funciona

Exponential backoff é aumentar o atraso entre tentativas de forma progressiva. Um exemplo comum: 1s, 2s, 4s, 8s… até um teto (max delay) e/ou um limite de tentativas.

A lógica é simples: quanto mais tempo o erro persiste, maior a chance de ser algo que precisa de “tempo para respirar” (rate limit, aquecimento de infraestrutura, reinício de serviço).

Onde entra o jitter (e quais tipos existem)

Jitter é a parte aleatória adicionada ao atraso. A ideia não é “atrasar por atrasar”: é evitar que todo mundo tente ao mesmo tempo.

Você vai ver variações de jitter em documentações e códigos. O importante é o princípio: adicionar aleatoriedade controlada dentro de um intervalo.

EstratégiaComo espera entre tentativasRisco típicoQuando usar
Atraso fixoSempre o mesmo tempo (ex.: 10s)Re-tentativas sincronizadas; picos; 429 em cascataSó em integrações internas muito controladas
Exponential backoff (sem jitter)Cresce a cada tentativa (ex.: 1s, 2s, 4s...)Ainda pode sincronizar se muitos falharem juntosBom começo, mas pode falhar em incidentes amplos
Exponential backoff + jitterCresce e adiciona aleatoriedadeMenos picos; melhor convivência com rate limitRecomendado para automações em escala e APIs de terceiros

Como aplicar em automações (n8n, Make, Zapier e afins): checklist prático

Cada ferramenta expõe isso de um jeito (algumas via “retry on fail”, outras via configurações do conector, outras exigem fluxo manual). Mas o desenho é o mesmo.

Se você só fizer uma coisa hoje: não use retry com atraso fixo em processos que podem falhar em lote (ex.: disparos, sincronizações, importações).

Armadilhas comuns (que parecem boas ideias, mas dão ruim)

Retry sem idempotência: você pode duplicar pedido, duplicar cobrança, duplicar mensagem — e o backoff só torna o problema mais difícil de rastrear.

Retry em erro 401/403: se a credencial expirou ou a permissão mudou, retry não resolve. O correto é alertar e bloquear o fluxo.

Backoff agressivo demais sem observabilidade: atrasos longos “escondem” incidentes. Sem alertas, você descobre quando o cliente reclama.

Retry concorrente sem limite: mesmo com jitter, se você dispara 1.000 execuções paralelas, você ainda pode esmagar a API.

Perguntas frequentes

Jitter é obrigatório ou só “nice to have”?
Em automações que falham em lote (campanhas, sincronizações, webhooks com pico), jitter deixa de ser luxo. Ele reduz a chance de tempestade de retries e costuma melhorar a recuperação do serviço. Em processos pequenos e isolados, backoff simples pode bastar.
Qual erro devo tentar novamente (retry) e qual devo parar na hora?
Regra prática: 429 e muitos 5xx/timeouts são bons candidatos a retry com backoff+jitter. Já 400 (dados inválidos), 401/403 (auth), e 404 (rota errada) normalmente pedem correção do fluxo/credencial, não novas tentativas.
Backoff com jitter substitui circuit breaker?
Não. Backoff+jitter controla “como tentar de novo”; circuit breaker decide “quando parar de tentar por um tempo” porque o destino está claramente doente. Em ambientes mais críticos, os dois se complementam.
Posso usar jitter em webhooks que precisam responder rápido?
Sim, mas com arquitetura: responda o webhook rápido (ack) e processe assíncrono em fila/worker. O jitter entra no processamento assíncrono, não no tempo de resposta HTTP do webhook.

Termos relacionados

← Ver glossário completo