11 Padroes de Fallback para Garantir Resiliencia em Sistemas
Fallback e o plano B da resiliencia: quando o caminho principal falha, o sistema precisa de uma alternativa. Estes 11 padroes cobrem desde respostas em cache ate degradacao graciosa.
Fallback e o plano B da resiliencia: quando o caminho principal falha, o sistema precisa de uma alternativa. Estes 11 padroes cobrem desde respostas em cache ate degradacao graciosa.
Fallback e o plano B da resiliencia: quando o caminho principal falha, o sistema precisa de uma alternativa que mantenha a experiencia minimamente utilizavel. Sem fallback, uma unica dependencia indisponivel derruba a operacao inteira. Estes 11 padroes cobrem desde respostas em cache ate degradacao graciosa, e a escolha certa depende do custo de cada alternativa versus o impacto da indisponibilidade.
1. Resposta em Cache
O padrao mais simples e eficaz: quando a chamada principal falha, retorne a ultima resposta bem-sucedida armazenada em cache. Funciona bem para dados que mudam pouco, como configuracao ou catalogo de produtos. O criterio de escolha e a tolerancia a dados desatualizados: se o usuario aceita informacao de 5 minutos atras, o cache resolve. O risco e servir dados muito antigos em cenarios de falha prolongada.
2. Valor Padrao (Default Value)
Quando a falha nao permite cache, retorne um valor padrao predefinido. Um sistema de recomendacao que falha pode retornar uma lista generica de produtos populares. Um gateway de pagamento indisponivel pode retornar "metodo de pagamento indisponivel" em vez de erro generico. O criterio e definir qual valor minimo mantem a funcionalidade util. Nao resolve tudo, mas evita a tela branca.
3. Degradacao Graciosa
Reduza a funcionalidade em vez de falhar por completo. Um site de e-commerce com o modulo de recomendacoes fora do ar continua exibindo o produto, apenas sem sugestoes. O criterio e priorizar o que e essencial: o carrinho de compras vale mais que o historico de visualizacao. Esse padrao exige arquitetura modular, onde cada componente pode falhar isoladamente.
4. Redirecionamento para Servico Alternativo
Se existe um segundo provedor ou regiao, direcione o trafego para ele. Um servico de SMS que falha pode usar um provedor reserva. Uma API de mapas pode usar o Google Maps se o Mapbox cair. O criterio e o custo: provedores alternativos geralmente tem limites de taxa ou precos diferentes. O failover precisa ser testado com frequencia, senao o plano B tambem falha.
5. Fila de Espera (Queue)
Quando o sistema nao pode responder na hora, coloque a requisicao em uma fila para processamento assincrono. Um servico de envio de email que falha pode enfileirar os emails e processar quando voltar. O criterio e a latencia aceitavel: se o usuario pode esperar 30 segundos, a fila resolve. O risco e acumulo de mensagens e perda de dados se a fila nao for persistente.
6. Retry com Backoff Exponencial
Repita a chamada com intervalos crescentes entre tentativas. Se a falha for transitoria, como um timeout de rede, o retry resolve. O criterio e a natureza da falha: retry nao ajuda em falha permanente, como servico fora do ar. O backoff exponencial evita sobrecarregar o servico ja fragil. Combinado com jitter, reduz o efeito de sincronizacao entre clientes.
7. Circuit Breaker com Fallback
O circuit breaker abre quando a taxa de falhas passa de um limite, e o fallback entra em acao durante o periodo aberto. O criterio e o limiar: 50% de falhas em 30 segundos, por exemplo, abre o circuito. Durante o aberto, o sistema usa cache ou valor padrao. O circuito fechado permite novas tentativas. Esse padrao protege o servico principal de sobrecarga.
8. Timeout com Resposta Parcial
Defina um tempo maximo de espera e retorne o que ja foi processado. Uma API de busca que demora mais de 2 segundos pode retornar os primeiros 10 resultados em vez de erro. O criterio e o que o usuario aceita como resposta incompleta. Timeout generoso demais aumenta a latencia; curto demais corta requisicoes validas.
9. Fallback Hierarquico
Cadeie varios fallbacks em ordem de preferencia. Tente o servico primario, depois o secundario, depois o cache, depois o valor padrao. O criterio e a complexidade: cada nivel adiciona latencia e pontos de falha. A hierarquia precisa ser testada em cada nivel, senao o sistema cai direto no ultimo recurso sem aviso.
10. Modo de Manutencao
Quando a falha e esperada, como deploy ou atualizacao, ative um modo que redireciona o usuario para uma pagina estatica ou fila de espera. O criterio e comunicacao: o usuario precisa saber que o sistema esta em manutencao, senao a experiencia fica confusa. Esse padrao nao resolve a falha, mas controla o impacto.
11. Resposta Vazia
Retorne uma lista ou objeto vazio em vez de erro. Uma API de notificacoes que falha pode retornar uma lista vazia, e o front-end exibe "nenhuma notificacao". O criterio e a semantica: resposta vazia e diferente de erro, e o cliente precisa tratar isso. Esse padrao e simples, mas pode esconder problemas reais por muito tempo.
Qual Fallback Escolher?
A escolha depende de tres perguntas: qual e o custo da alternativa, qual e o impacto da falha, e qual e a tolerancia do usuario a dados desatualizados ou incompletos. Para dados estaveis, cache resolve. Para servicos criticos, redirecionamento. Para funcionalidades nao essenciais, degradacao graciosa. Comece com cache e valor padrao, depois evolua para circuit breaker e hierarquia. Nenhum padrao substitui monitoramento: sem observabilidade, o fallback pode mascarar uma falha que deveria ser corrigida.
FAQ
O que e fallback em resiliencia?
Fallback e um padrao de resiliencia que define uma alternativa quando a operacao principal falha. Em vez de retornar erro, o sistema usa uma resposta em cache, um valor padrao ou um servico alternativo. O objetivo e manter a disponibilidade e a experiencia do usuario mesmo com falhas parciais.
Qual a diferenca entre retry e fallback?
Retry tenta novamente a mesma operacao, assumindo que a falha e transitoria. Fallback executa uma operacao alternativa, assumindo que a falha pode ser permanente. Retry e usado antes do fallback na cadeia de resiliencia: primeiro tenta de novo, depois cai para o plano B.
Como implementar fallback em microsservicos?
Use uma biblioteca como Resilience4j ou Hystrix, que oferecem circuit breaker, retry e fallback configurados por anotacao ou codigo. Defina o fallback como um metodo separado que retorna uma resposta alternativa. Teste cada cenario de falha com chaos engineering.
Quando nao usar fallback?
Nao use fallback para operacoes que exigem consistencia forte, como transferencias financeiras. Nesse caso, falhar explicitamente e melhor que responder com dados incorretos. Tambem evite fallback que mascare falhas reais por muito tempo sem alertar a equipe.
Fallback e o mesmo que degradacao graciosa?
Nao exatamente. Degradacao graciosa e um tipo de fallback que reduz a funcionalidade em vez de falhar. Fallback e o termo generico para qualquer alternativa. A degradacao graciosa foca em manter o essencial funcionando, enquanto outros fallbacks podem manter tudo funcionando com dados alternativos.
Patrícia Lemos
Especialista em dados e analytics
Transforma painel cheio de número em decisão. Cuida de mensuração, dashboard e a métrica que de fato move o negócio.
Ver todos os artigos →