segunda-feira, 27 de julho de 2026 · Edição online
PosUp
PosUp

Circuit Breaker: como implementar em microsservicos (guia)

ResumoCircuit Breaker é um padrão de resiliência para microsserviços que previne falhas em cascata. A implementação envolve selecionar bibliotecas como Hystrix ou Resilience4j, configurar thresholds de falha e timeouts, e testar cenários de abertura e fechamento do circuito. O guia prático cobre desde a escolha da ferramenta até testes de resiliência para garantir estabilidade do sistema.

Implementar circuit breaker em microsservicos evita que uma falha em um serviço derrube todo o sistema. Neste guia, mostramos o passo a passo para configurar o padrão, desde a escolha da biblioteca até os testes de resiliência.

Patrícia Lemos Patrícia Lemos · Especialista em dados e analytics
· · 3 min de leitura
Circuit Breaker: como implementar em microsservicos (guia)
Foto: Imagem ilustrativa · PosUp

Implementar circuit breaker em microsservicos evita que uma falha em um serviço derrube todo o sistema. Neste guia, mostramos o passo a passo para configurar o padrão, desde a escolha da biblioteca até os testes de resiliência.

Implementar circuit breaker em microsservicos significa proteger seu sistema contra falhas em cascata. Quando um serviço dependente falha, o circuit breaker interrompe as chamadas automaticamente, evitando que a instabilidade se espalhe. O resultado esperado: um sistema resiliente que se recupera sozinho. Pré-requisitos: conhecimento básico de microsservicos e uma biblioteca de resiliência (Resilience4j, Hystrix ou Spring Cloud Circuit Breaker).

Passo 1: Escolha a biblioteca e configure o monitoramento

Selecione uma biblioteca compatível com sua stack. Resilience4j é a escolha mais comum para Java moderno, pois substituiu o Hystrix (descontinuado). Configure o monitoramento para registrar o número de chamadas, falhas e tempos de resposta. Sem monitoramento, você não consegue ajustar os thresholds.

Erro comum: usar a biblioteca sem configurar métricas. Você precisa de um dashboard (Prometheus + Grafana, por exemplo) para enxergar quando o circuito abre.

Passo 2: Defina os thresholds de abertura do circuito

Determine quantas falhas consecutivas ou qual percentual de erro deve disparar o circuit breaker. Um valor inicial comum: 5 falhas em 10 segundos, ou 50% de taxa de erro. Ajuste conforme o comportamento real do serviço.

Dica: comece com thresholds mais baixos (menos tolerância a falhas) e aumente gradualmente. Um circuito que abre cedo demais protege mais, mas pode causar falsos positivos.

Passo 3: Implemente o estado half-open e o timeout

O circuit breaker tem três estados: fechado (normal), aberto (bloqueia chamadas) e half-open (testa recuperação). Configure o tempo que o circuito fica aberto antes de tentar uma requisição de teste (ex.: 30 segundos). Se a chamada de teste falhar, volta para aberto; se bem-sucedida, fecha o circuito.

Erro comum: esquecer de configurar o timeout. Sem timeout, uma chamada lenta mantém o circuito aberto por tempo indefinido. Defina um timeout agressivo (ex.: 2 segundos) para serviços críticos.

Passo 4: Adicione fallback para quando o circuito abrir

Quando o circuit breaker abre, sua aplicação precisa de uma resposta alternativa (fallback). Pode ser um valor em cache, uma mensagem padrão ou uma chamada a um serviço secundário. O fallback evita que o usuário veja um erro 500.

Dica: registre logs sempre que o fallback for acionado. Isso ajuda a identificar padrões de falha e ajustar os thresholds.

Passo 5: Teste com injeção de falhas

Simule falhas nos serviços dependentes usando ferramentas como Chaos Monkey ou Toxiproxy. Verifique se o circuit breaker abre no tempo esperado, se o fallback é chamado e se o sistema se recupera sozinho.

Erro comum: testar apenas em ambiente de desenvolvimento. O comportamento em produção (latência real, volume de requisições) é diferente. Faça testes de carga com falhas injetadas.

Checklist do que foi implementado

  • [ ] Biblioteca de circuit breaker configurada com métricas
  • [ ] Thresholds de falha definidos (ex.: 5 falhas em 10s)
  • [ ] Timeout configurado para chamadas lentas
  • [ ] Estado half-open com tempo de espera ajustado
  • [ ] Fallback implementado para cada serviço crítico
  • [ ] Testes de injeção de falhas realizados

FAQ

Qual a diferença entre circuit breaker e retry?

Retry tenta novamente a chamada que falhou, geralmente com backoff. Circuit breaker bloqueia todas as chamadas por um período quando a taxa de erro ultrapassa o limite. Eles são complementares: use retry para falhas transitórias e circuit breaker para falhas persistentes.

Como escolher entre Resilience4j e Hystrix?

Hystrix foi descontinuado pela Netflix. Resilience4j é a alternativa moderna, com menor overhead e suporte a Spring Boot 3. Para projetos novos, prefira Resilience4j. Para sistemas legados, planeje a migração.

O circuit breaker funciona para chamadas síncronas e assíncronas?

Sim. Em chamadas síncronas (HTTP), ele bloqueia a thread. Em assíncronas (filas, eventos), ele impede o envio da mensagem. A configuração de thresholds e timeout se aplica a ambos os casos.

Como monitorar o estado do circuit breaker em produção?

Exponha métricas via endpoints (ex.: /actuator/health no Spring) e colete com Prometheus. Crie alertas para quando o circuito abrir com frequência, indicando degradação do serviço dependente.

O que acontece se o fallback também falhar?

O fallback deve ser projetado para não depender do serviço original. Se falhar, a aplicação precisa retornar um erro amigável (ex.: "Serviço temporariamente indisponível") e registrar o incidente. Considere um fallback em cache estático como última opção.

Compartilhar:
Patrícia Lemos

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 →

Leia também

11 métricas de observabilidade essenciais para monitorar aplicações
Apps e Software

11 métricas de observabilidade essenciais para monitorar aplicações

Monitorar aplicações exige mais que logs. Conheça as 11 métricas de observabilidade que todo time de operações precisa acompanhar para garantir performance e disponibilidade.

27 de julho de 2026 · Patrícia Lemos
Nginx vs Apache: qual servidor web escolher para produção
Apps e Software

Nginx vs Apache: qual servidor web escolher para produção

Nginx vs Apache: a escolha do servidor web certo depende do perfil do seu projeto. Enquanto um brilha com conteúdo estático e alta concorrência, o outro oferece flexibilidade e configuração simples. Veja o comparativo direto.

27 de julho de 2026 · Patrícia Lemos
Dependency Injection: Por que usar em arquiteturas escaláveis
Apps e Software

Dependency Injection: Por que usar em arquiteturas escaláveis

Dependency injection reduz o acoplamento entre módulos, facilitando testes e evolução do sistema. Entenda por que esse padrão é fundamental em arquiteturas escaláveis e como aplicá-lo na prática.

27 de julho de 2026 · Mariana Vasques

Gostou? Receba mais análises

Newsletter quinzenal · curadoria editorial · sem spam