Pular para o conteúdo

apps/patterns/health-check-pattern

019 · Padrões Fundamentais · ≈ 5 min de estudo

Health Check Pattern

Expõe três probes com perguntas diferentes: /live (o processo travou?), /ready (consegue atender tráfego agora?) e /health (como estão todas as dependências?). O orquestrador reinicia só pelo /live e tira do balanceamento só pelo /ready, então uma dependência lenta nunca reinicia o serviço.

passos
6
arquivos
7
teste
1
tecnologias
5
Infraestrutura realTypeScriptBunElysiaPostgreSQLDocker
Baixar cartão

Cenário

Um serviço de pagamentos depende do PostgreSQL de contas — sem ele não processa nada — e de um serviço de antifraude, sem o qual funciona pior. O Kubernetes consulta os probes a cada poucos segundos. O demo derruba o antifraude e mostra /health degradado enquanto /ready continua 200.

Planta

Sequência
9/9
GET /live1200 sem tocar dependência2GET /ready3SELECT 1 (timeout próprio)4200 ou 503 — só dependências críticas5GET /health6SELECT 17GET /health8200 ok, 207 degraded ou 503 critical9OrquestradorServiço de pagamentos :7030PostgreSQL (crítica)Antifraude :7031 (degradada)
9

9 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Endpoint expõe se o serviço responde.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    Criticidade declaradaPostgreSQL é critical (falha → 503); antifraude é degradada (falha → 207)

  2. 02

    /live responde sem tocar dependência: banco lento não pode reiniciar o pod

  3. 03

    /ready consulta só as críticas, com timeout de 5 s por check

  4. 04

    /health consulta todas, com timeout de 10 s por check, e agrega critical > degraded > ok

  5. 05

    Reuso de clienteO check do banco usa o pool Bun.sql já aberto, nunca uma conexão nova

  6. 06

    Cache de 5 sProbes repetidos não viram uma query nova a cada chamada numa dependência já degradada

apps/patterns/health-check-pattern

7 arquivos

src/

  • controller_health.tsPlugin Elysia com /live, /ready, /health, timeout por check e cache do relatório
  • api_payment.tsServiço de pagamentos (porta 7030) com os checks de PostgreSQL e antifraude
  • api_fraud.tsAntifraude (porta 7031) com PUT /mode up, down ou slow
  • config_payment.tsLê e valida PAYMENT_DATABASE_URL e PAYMENT_FRAUD_URL no boot
  • demo.tsdemoSobe os dois processos e consulta os probes antes e depois de derrubar o antifraude
  • controller_health.test.tstesteIntegração com PostgreSQL real: 207, 503, timeout de check travado e cache

./

  • docker.shinfraSobe o PostgreSQL (porta 5432)

Executar · com Docker

  1. ./docker.sh up# sobe PostgreSQL
  2. cp .env.example .env# variáveis de ambiente
  3. bun install# dependências
  4. bun run demo# roda o cenário

Testes: bun run test.

Requisitos
BunDocker
Sobe junto
PostgreSQL

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Health Check Pattern?

Próximo projeto · Padrões FundamentaisIdempotency Layer
Esc

↑ ↓ navegarEnter abrir191 resultados