# Health Checks em Microsserviços: Guia Passo a Passo

> Health Checks em Microsserviços são mecanismos de monitoramento que verificam a disponibilidade e a saúde de cada serviço. A implementação passo a passo envolve definir endpoints de liveness e readiness, configurar verificações periódicas e integrar com orquestradores como Kubernetes. Health checks permitem detecção precoce de falhas, isolamento de instâncias degradadas e recuperação automática, garantindo resiliência e disponibilidade contínua do sistema distribuído.

*PosUp · Apps e Software · 30 de agosto de 2026 · Patrícia Lemos*

Health checks são essenciais para manter microsserviços confiáveis. Este guia mostra como implementá-los passo a passo, desde o conceito até a prática.

Health checks são a base para manter microsserviços confiáveis em produção. Eles permitem que orquestradores como Kubernetes saibam quando um serviço está saudável ou deve ser reiniciado. Sem eles, falhas se propagam silenciosamente pela cadeia de chamadas. Este guia mostra como implementar health checks em microsserviços passo a passo, do conceito à prática.

Antes de começar, você precisa de um serviço existente, de preferência com um framework que suporte endpoints HTTP (Spring Boot, Express, Go net/http). O resultado esperado é um endpoint /health que retorna status 200 ou 503, com informações sobre dependências.

## Passo 1: Defina os tipos de health check

Existem dois tipos principais: liveness e readiness. Liveness indica se o processo está vivo e não em deadlock. Readiness indica se o serviço consegue receber requisições, ou seja, se dependências como banco de dados, cache ou filas estão acessíveis.

Dica: use liveness para reiniciar o processo, readiness para remover tráfego. Não confunda os dois, pois isso causa reinícios desnecessários ou tráfego para um serviço sem condições.

Erro comum: retornar apenas 200 sem verificar dependências. Isso esconde problemas reais.

## Passo 2: Implemente o endpoint de liveness

O endpoint de liveness deve ser simples e sem dependências externas. Por exemplo, em Spring Boot, use o atuador com management.endpoint.health.probes.enabled=true. Em Node.js, um middleware que retorna {status: 'UP'}.

Dica: mantenha o liveness o mais leve possível. Se ele depender de banco, uma falha momentânea pode derrubar o serviço inteiro.

## Passo 3: Implemente o endpoint de readiness

O readiness deve verificar cada dependência crítica. Em Spring Boot, use HealthIndicator para banco, fila, etc. Em Express, faça um Promise.all com pings para cada recurso.

Exemplo: verifique se o banco responde a um SELECT 1 e se a fila aceita conexão. Se qualquer um falhar, retorne 503.

Erro comum: checar dependências em todo request, causando lentidão. Faça com timeout curto, por exemplo, 2 segundos.

## Passo 4: Exponha métricas e detalhes

Além do status, retorne informações úteis: versão do serviço, tempo de atividade (uptime), e o status de cada dependência. Isso facilita o debug quando um orquestrador marca o serviço como não saudável.

Dica: use um formato padrão como JSON com campos status, checks[] e timestamp.

## Passo 5: Configure o orquestrador

No Kubernetes, defina livenessProbe e readinessProbe no deployment. Aponte para os endpoints criados, com initialDelaySeconds e periodSeconds adequados.

Exemplo de configuração: livenessProbe com httpGet: path: /health/live, readinessProbe com path: /health/ready. Não use o mesmo endpoint para ambos.

Erro comum: usar o mesmo endpoint para liveness e readiness. Isso impede que o Kubernetes diferencie reinício de remoção de tráfego.

## Passo 6: Teste e monitore

Simule falhas: derrube o banco e veja se o readiness muda para 503. Reinicie o serviço e veja se o liveness responde. Monitore a taxa de sucesso dos probes no dashboard do Kubernetes.

Dica: automatize testes de health check no CI, chamando o endpoint após o deploy.

## Checklist final

- Endpoint /health/live implementado e leve.
- Endpoint /health/ready verificando dependências críticas.
- Probes configurados no orquestrador com endpoints distintos.
- Métricas de status visíveis no dashboard.
- Testes de falha executados e documentados.

## FAQ

### O que é health check em microsserviços?

É um endpoint HTTP que informa se um serviço está operacional e pronto para receber requisições. Ele permite que orquestradores tomem ações automáticas, como reiniciar o serviço ou remover tráfego, com base no status retornado.

### Qual a diferença entre liveness e readiness?

Liveness indica se o processo está vivo e sem deadlock. Readiness indica se o serviço consegue processar requisições, ou seja, se dependências estão acessíveis. Liveness deve ser simples; readiness pode ser mais complexo.

### Como implementar health check em Spring Boot?

Use o Spring Boot Actuator. Habilite as probes com management.endpoint.health.probes.enabled=true e crie HealthIndicator personalizados para dependências. O endpoint /actuator/health retorna status agregado.

### Health check precisa verificar banco de dados?

Sim, no readiness. Se o banco estiver fora, o serviço não deve receber tráfego. No liveness, evite checar banco para não causar reinícios desnecessários.

### Posso usar o mesmo endpoint para liveness e readiness?

Não. Usar o mesmo endpoint impede que o orquestrador diferencie reinício de remoção de tráfego. Crie endpoints separados, como /health/live e /health/ready.

### Como testar health checks?

Simule falhas nas dependências e verifique se o endpoint retorna 503. Use ferramentas como curl para chamar os endpoints e monitore os probes no orquestrador.

Com esses passos, seus microsserviços ficam mais resilientes e o orquestrador consegue agir com precisão. O próximo passo é adicionar alertas baseados nos status dos probes, para responder antes que o usuário perceba o problema.

---

Fonte (canonical): https://posup.com.br/apps-e-software/health-checks-em-microsservicos-guia-passo-a-passo/
