Circuit Breaker em microsserviços: o padrão que impede seu sistema de entrar em colapso

Quem trabalha com microsserviços logo descobre uma verdade meio cruel: quando um serviço falha, ele quase nunca falha sozinho. Em sistemas distribuídos, um endpoint lento ou fora do ar pode virar um efeito dominó, derrubando APIs, filas, front-ends e, no fim, a experiência do usuário. É exatamente para isso que existe o Circuit Breaker.

Esse padrão de arquitetura atua como um disjuntor digital. Ele observa as chamadas entre serviços e, ao detectar que algo está dando errado, interrompe temporariamente o tráfego para o componente problemático. A ideia não é “esconder” o erro, mas evitar que um serviço instável contamine todo o ecossistema.

O que é Circuit Breaker na prática

Em um ambiente de microsserviços, cada aplicação depende de várias outras. Um serviço de pedidos pode depender de outro de pagamentos, que por sua vez depende de um serviço de antifraude, e assim por diante. Quando uma dessas peças começa a falhar ou ficar lenta, todas as requisições que passam por ela também sofrem.

O Circuit Breaker fica entre esses serviços. Ele monitora taxas de erro, timeouts e falhas consecutivas. Se perceber que um serviço está se comportando mal, ele “abre o circuito” e passa a bloquear novas chamadas, respondendo imediatamente com erro ou com algum fallback, como dados em cache. Isso reduz latência, evita sobrecarga e dá tempo para o serviço instável se recuperar.

Por que esse padrão é tão importante

Sem Circuit Breaker, um microsserviço lento pode gerar filas, esgotar threads, travar pools de conexão e acabar derrubando serviços que, em teoria, estavam funcionando bem. Esse tipo de falha em cascata é um dos maiores pesadelos em sistemas distribuídos.

Com o Circuit Breaker, o impacto é isolado. Um serviço pode até falhar, mas ele não leva todo o resto junto. Além disso, o padrão ajuda o sistema a se recuperar sozinho, sem precisar de intervenção humana a cada incidente.

Os três estados do Circuit Breaker

O funcionamento do Circuit Breaker gira em torno de três estados bem definidos.

No estado fechado, tudo opera normalmente. As requisições passam pelo circuito e seguem para o serviço de destino. Enquanto isso, o Circuit Breaker monitora os resultados. Se o número de falhas ou o tempo de resposta ultrapassar os limites configurados, ele muda de estado.

No estado aberto, o circuito é interrompido. Nenhuma requisição chega ao serviço problemático. Em vez disso, o sistema devolve imediatamente uma resposta alternativa, como um erro controlado ou dados de cache. O objetivo é proteger tanto o serviço que falhou quanto os consumidores dele.

Depois de um tempo pré-configurado, o circuito entra no estado meio-aberto. Nesse modo, apenas uma quantidade limitada de requisições é liberada para testar se o serviço se recuperou. Se essas chamadas funcionarem, o circuito volta ao estado fechado e o tráfego é normalizado. Se falharem, o circuito se abre novamente e o ciclo recomeça.

O estado inicial de todo Circuit Breaker é o fechado. Ele só muda quando os indicadores mostram que algo saiu do controle.

Um padrão simples com impacto gigante

O Circuit Breaker não resolve falhas, mas impede que elas se espalhem. Em arquiteturas modernas, onde tudo depende de tudo, esse padrão é o que separa um incidente isolado de um apagão completo.

Para quem constrói ou opera microsserviços, ele não é um luxo. É parte do kit básico de sobrevivência em produção.