oHub Base TI Sistemas e Aplicações Integração de Sistemas

Tratamento de falhas em integrações

Padrões de tratamento de falhas, reprocessamento e circuit breakers em integrações.
Atualizado em: 24 de abril de 2026
Neste artigo: Como este tema funciona na sua empresa Por que falhas acontecem e por que importa Retry: tentar novamente Exponential backoff e jitter Circuit breaker: proteção contra cascata Dead letter queue: análise manual de falhas Idempotência: segurança para retry Compensação: desfazer ação em falha Sinais de que tratamento de falhas é inadequado Caminhos para implementar tratamento de falhas Precisa de apoio para implementar tratamento de falhas em integracoes na sua empresa? Perguntas frequentes Como tratar falhas em integrações? O que é retry e exponential backoff? Circuit breaker em integrações: quando usar? Como implementar dead letter queue? Recuperação de falhas em integração: estratégias? Compensação de transações em integrações? Referências
Compartilhar:
Este conteúdo foi gerado por IA e pode conter erros. ⚠️ Reportar | 💡 Sugerir artigo

Como este tema funciona na sua empresa

Pequena empresa

Tratamento básico: retry simples (3 tentativas, desiste). Logging de falha. Desafio: quando cresce, falhas multiplicam-se.

Média empresa

Retry + exponential backoff + alertas. Desafio: decidir quanto reprocessar (custo vs. garantia). Políticas documentadas de retry.

Grande empresa

Infraestrutura robusta (circuit breaker, dead letter, compensation). Desafio: orquestração de falhas em escala. Plataforma que abstrai complexidade.

Tratamento de falhas em integrações refere-se a padrões e técnicas para lidar com falhas transientes (rede cai) e permanentes (servidor deletado) de forma resiliente e confiável.

Por que falhas acontecem e por que importa

Pequena: Uma integração falha, usuário é notificado. Problema é resolvido manualmente.

Média: Múltiplas integrações. Falhas não-tratadas geram acúmulo de inconsistências.

Grande: Falhas podem cascatear (sistema A falha, B para de chamar A, C depende de B, etc). Resiliência é crítica.

Integrações falham: rede cai (transiente), servidor alvo indisponível (transiente), timeout (transiente), erro de aplicação (permanente), dados inválidos (permanente). Sem tratamento apropriado: transações são perdidas, dados inconsistentes, cascata de falhas. Estudo Netflix mostra que 70% de falhas são transientes (resolvidas com retry)[1]. Isto significa: automatizar retry resolve maioria dos problemas. Resto requer análise manual ou escalação.

Retry: tentar novamente

Pequena: Retry simples (tentar 3x com delay fixo).

Média: Retry + exponential backoff. Documentação de quando retentar.

Grande: Retry + exponential backoff + jitter + circuit breaker integrado.

Retry tenta novamente requisição que falhou. Apropriado para falhas transientes (rede cai, timeout). Não apropriado para erro de negócio (CPF inválido; retry não ajuda). Risco crítico: retry pode criar duplicata. Exemplo: você tenta transferir R$ 100. Requisição falha na rede. Você retenta. Banco recebe dois pedidos. Sistema transfere R$ 200. Solução: idempotência (requisição repetida resulta em ação única). Como implementar idempotência: use ID único para requisição. Exemplo: "transferência ID-12345, de A para B, R$ 100". Se recebido 2x, ID-12345 já foi processado; retorne sucesso sem repetir.

Exponential backoff e jitter

Pequena: Retry com delay fixo (5 segundos) é suficiente.

Média: Exponential backoff é melhor (evita sobrecarregar servidor).

Grande: Exponential backoff + jitter (evita thundering herd).

Exponential backoff: Espera cada vez mais entre retries. Exemplo: 1s, 2s, 4s, 8s (dobra cada vez). Evita sobrecarregar servidor que está indisponível. Alternativa simples: fixed delay (espera sempre 5s) é mais simples mas menos sofisticado. Jitter: Pequena variação aleatória em delay (evita "thundering herd" — 1000 clientes esperando 1s, todos retentam ao mesmo tempo). Exemplo: delay é 1-3s (variável). Implementação prática: retry 1 (falha) > espera 1s > retry 2 (falha) > espera 2s > retry 3 (falha) > espera 4s > retry 4 (sucesso ou abandono).

Circuit breaker: proteção contra cascata

Pequena: Não necessário. Retry simples é suficiente.

Média: Avaliam se quer proteção contra cascata.

Grande: Circuit breaker é standard para resiliência.

Circuit breaker detecta que servidor alvo está down. Interrompe requisições por período (tipicamente 30s). Retorna erro rápido ao invés de esperar timeout (que pode ser 30s). Estados: (1) Closed (normal, requisições passam). (2) Open (alvo está down, requisições retornam erro rápido). (3) Half-open (alvo pode estar recuperado, tenta 1 requisição; se sucesso, volta para Closed). Benefício: proteção contra cascata. Servidor A falha. B para de chamar A (circuit aberto). B não gasta recursos esperando A. C que depende de B não afetado tão severamente. Exemplo: Google Pub/Sub usa circuit breaker. Se seu subscriber está down por 30s, subscriber é temporariamente desabilitado. Quando volta, reconnecta.

Dead letter queue: análise manual de falhas

Pequena: Sem dead letter. Falha é logged e esquecido.

Média: Começam a implementar. Análise manual de falhas é overhead.

Grande: Dead letter é prática padrão. Dashboard de DLQ e alertas.

Mensagem que falha é armazenada em fila separada (Dead Letter Queue) para análise/reprocessamento manual. Exemplo: validação é ambígua (email é válido? talvez). Humano analisa, decide, reprocessa. Cenário: cliente envia email "abc@" (inválido). Sistema tenta processar. Falha em validação. Ao invés de abandonar, vai para DLQ. Operador vê, corrige email, reprocessa. Importante: DLQ é "catch-all para problemas que sistema não consegue resolver automaticamente". Não é para tudo; é para exceções.

Idempotência: segurança para retry

Pequena: Retry sem idempotência é risco (duplicação possível).

Média: Implementam idempotência para requisição importante.

Grande: Idempotência é requisito de design para toda integração.

Se requisição for repetida (retry), resultado é idêntico. Crítico para retry seguro. Exemplo de NÃO-idempotente: "transferir $100". Se executado 2x, resultado é $200 transferido (errado). Exemplo de idempotente: "transferência ID-12345, $100". Se executado 2x com mesmo ID, resultado é $100 transferido uma vez. Sistema reconhece ID já foi processado; não executa novamente. Implementação: use ID único (UUID, request ID). Sistema rastreia IDs processados. Requisição chegando com ID já processado = sucesso sem ação.

Compensação: desfazer ação em falha

Pequena: Sem compensação. Falha parcial deixa inconsistência.

Média: Ad-hoc. Operador manualmente desfaz ação.

Grande: Padrão saga. Coordena múltiplas integrações, mantém consistência.

Se integração falha parcialmente (A foi feito, B falhou), desfazer A (compensação). Padrão saga coordena múltiplas integrações, mantém consistência mesmo com falhas. Exemplo: criar pedido requer: (1) Criar ordem em ERP (sucesso). (2) Atualizar inventário (falha). Sem compensação: ordem existe, inventário não foi decrmentado (inconsistência). Com compensação: detecta falha em passo 2, executa compensação em passo 1 (delete ordem). Final state: nada feito. Implementação: cada ação tem "undo action". Sistema executa sequencial; se uma falha, executa undo reverso.

Sinais de que tratamento de falhas é inadequado

  • Integração falha e dados são perdidos (sem retry ou DLQ)
  • Retry causa duplicação de transações (sem idempotência)
  • Falha em um sistema causa cascata em outros (sem circuit breaker)
  • Ninguém sabe quantas transações falharam (sem logging/alertas)
  • Falha parcial deixa dados inconsistentes (sem compensação)
  • Operador manualmente reprocessa falhas (sem DLQ ou automação)
  • Timeout é muito longo (espera muito tempo antes de fail)
  • Não há monitoramento de falhas (você descobre via reclamação)

Caminhos para implementar tratamento de falhas

Implementação interna

Sua equipe implementa padrões de resiliência (retry, DLQ, idempotência, circuit breaker) no código das integrações. Requer expertise em padrões distribuídos.

  • Perfil necessário: Arquiteto de sistemas distribuídos, developers com experiência em padrões resilientes, especialista em observabilidade
  • Tempo estimado: 2-4 semanas para design; 1-2 semanas por integração para implementação e testes
  • Faz sentido quando: Você tem developers sênior; integrações são críticas; você quer máxima customização de comportamento
  • Risco principal: Implementação incorreta pode piorar situação; testing de falhas é complexo; manutenção é contínua conforme novos padrões emergem
Com apoio especializado

Plataforma ou framework especializado (Netflix Hystrix, Resilience4j, MuleSoft policies) fornece padrões pré-implementados. Você apenas configura.

  • Tipo de fornecedor: Plataforma de resiliência (Chaos Engineering tools), consultoria especializada em arquitetura distribuída
  • Vantagem: Padrões são proven e testados; configuração é low-code; você não precisa reimplementar retry/circuit breaker; observabilidade é built-in
  • Faz sentido quando: Você quer ágil (resiliência rápida); você não quer manutenção de padrões customizados; volume de integrações é alto
  • Resultado típico: MTTR (Mean Time To Recovery) reduz 50-70%; falhas temporárias se auto-recuperam; você apenas monitora

Precisa de apoio para implementar tratamento de falhas em integracoes na sua empresa?

O oHub conecta você gratuitamente a fornecedores especializados. Em menos de 3 minutos, descreva seu contexto e receba propostas personalizadas, sem compromisso.

Encontrar fornecedores de TI no oHub

Sem custo, sem compromisso. Você recebe propostas e decide se e com quem avançar.

Perguntas frequentes

Como tratar falhas em integrações?

Implementar: (1) retry com exponential backoff, (2) idempotência para evitar duplicação, (3) circuit breaker para proteção contra cascata, (4) DLQ para análise manual de exceções.

O que é retry e exponential backoff?

Retry tenta novamente. Exponential backoff aumenta delay entre tentativas (1s, 2s, 4s...) evitando sobrecarregar servidor. Jitter adiciona variação aleatória.

Circuit breaker em integrações: quando usar?

Quando múltiplos consumidores chamam servidor. Circuit breaker detecta servidor down, para requisições rapidamente. Evita cascata de falhas.

Como implementar dead letter queue?

Quando mensagem falha e não pode ser automaticamente reprocessada, vai para DLQ. Operador analisa, corrige, reprocessa manualmente.

Recuperação de falhas em integração: estratégias?

Retry para transientes. Circuit breaker para proteção. DLQ para exceções. Compensação para reverter ações parciais. Combinação é apropriada.

Compensação de transações em integrações?

Se ação A sucesso, ação B falha, executar "undo A" para manter consistência. Padrão saga coordena múltiplas ações, compensação em cascata.

Referências

  1. Netflix. "Chaos Engineering and Release It! Patterns."
  2. Resilience4j Documentation. "Retry, Circuit Breaker, Rate Limiter Patterns."
  3. Google SRE Book. "Handling Overload and Cascading Failures."