Observabilidade
Observabilidade é a capacidade de entender o que um sistema está fazendo — e por quê — a partir de fora, usando os sinais que ele emite. Ela nunca fica no caminho da requisição: estes componentes são canais laterais que observam os serviços. Mas sem eles você voa às cegas: não vê qual caixa está saturada, não distingue uma dependência lenta de um banco lento e descobre as quedas pelos usuários irritados. A regra do curso é simples: não dá para consertar o que você não mede.
A paleta tem três sinais e duas ações. Sinais: métricas (números ao longo do tempo — algo está errado?), logs (eventos detalhados — o que exatamente aconteceu?) e traces (uma requisição atravessando serviços — para onde foi o tempo?). Ações: alertas (acordar um humano quando os usuários são afetados) e health checks (permitir que load balancers e orquestradores desviem automaticamente de instâncias quebradas). No BoxOffice, um dashboard RED por serviço, traces do gateway até o provedor de pagamento e um alerta de burn rate do SLO do checkout são o que dizem ao plantonista, às 10:01 do dia da venda, que o provedor de pagamento está lento — e não o banco.
| Componente | Em uma frase | Id no playground |
|---|---|---|
| Metrics | Séries temporais numéricas (taxas, erros, percentis de latência, utilização) | metrics |
| Logs | Registros com data e hora de eventos discretos, de preferência estruturados (JSON) | logs |
| Tracing | O caminho e os tempos de uma requisição através dos serviços (spans) | tracing |
| Alerting | Regras sobre os sinais que notificam um humano quando os usuários são afetados | alerting |
| Health Check | Sondas em endpoints que dizem a LBs/orquestradores se uma instância pode atender | healthcheck |
flowchart LR
S1[gateway] -.->|OTLP| COL[OpenTelemetry Collector]
S2[order] -.->|OTLP| COL
S3[payment] -.->|OTLP| COL
COL -.-> M[Métricas]
COL -.-> L[Logs]
COL -.-> T[Tracing]
M -.->|burn rate do SLO| AL[Alertas]
AL -.->|aciona| ONCALL((plantão))
LB[Load Balancer] -.->|GET /health/ready| S2 | Pergunta | Sinal | Exemplo |
|---|---|---|
| Algo está errado? Quanto? | Métricas | A taxa de erros do checkout saltou de 0,1% para 4% |
| Para onde vai o tempo nesta requisição lenta? | Tracing | 3,8 s de 4 s dentro de payment → provedor |
| O que exatamente aconteceu com o pedido 81234? | Logs | provider timeout after 2000 ms, retry 2/3 |
| Alguém precisa agir agora? | Alertas | SLO consumindo 14× mais rápido que o sustentável |
| O tráfego deve ir para esta instância? | Health check | /health/ready devolve 503 durante o aquecimento |
Metrics
O que é. Métricas são medidas numéricas agregadas ao longo do tempo: contadores (requisições atendidas, erros), gauges (tamanho da fila, memória em uso) e histogramas (distribuição de latência, da qual se leem p50/p95/p99). Cada série temporal é identificada por um nome e um conjunto de labels (http_requests_total{service="order", route="/orders", status="500"}). São baratas de guardar e consultar porque já vêm agregadas, o que faz delas o sinal certo para dashboards, SLOs e alertas. As receitas padrão: RED para serviços (taxa, erros, duração), USE para recursos (utilização, saturação, erros) e os quatro sinais de ouro do Google (latência, tráfego, erros, saturação).
Quando usar.
- Sempre, para todo serviço e todo recurso: o dashboard RED dos serviços
order,inventoryepaymentdo BoxOffice. - SLIs e SLOs: "fração das requisições de checkout abaixo de 500 ms" é calculada a partir de um histograma de latência.
- Planejamento de capacidade e autoscaling: utilização de CPU, tamanho da fila e lag do consumidor movem o autoscaler.
- Métricas de negócio ao lado das técnicas: ingressos vendidos por minuto, tamanho da sala de espera, conversão.
Quando não usar (ou cuidado).
- Para investigar uma requisição específica: métricas são agregados — use traces e logs.
- Cardinalidade: cada combinação única de valores de labels é uma série separada. Labels como
user_id,order_idou URLs completas explodem o número de séries e o custo → mantenha os labels limitados (modelos de rota, classe do status). - Médias escondem a cauda: registre histogramas e olhe os percentis; nunca tire a média de percentis entre instâncias.
- Intervalo de amostragem: uma coleta a cada minuto apaga um pico de 10 segundos.
Números-chave.
| Métrica | Valor típico | Observação |
|---|---|---|
| Intervalo de coleta / exportação | 15–60 s | O padrão global do Prometheus é 1 min; 15 s é comum |
| Número de séries | ≈ métricas × combinações de labels × instâncias | 50 métricas × 200 combinações × 20 pods = 200 mil séries (≈ ilustrativo) |
| Custo por amostra | ≈ 1–2 bytes comprimidos em TSDBs modernos | ≈ ilustrativo; o número de séries pesa mais que o de amostras |
| Retenção | ≈ 15 dias brutos localmente; meses a anos com redução de resolução | Armazenamento de longo prazo no Mimir/Thanos ou num serviço gerenciado |
| Percentis a acompanhar | p50, p95, p99 (p99.9 nos caminhos de alto volume) | A partir de histogramas, por rota |
Modos de falha.
- Explosão de cardinalidade — alguém acrescenta
user_idcomo label; memória e custo disparam, o backend de métricas cai → listas de labels permitidos, limites por cliente, revisão das mudanças em métricas. - Métrica ausente onde importava — a dependência lenta não tinha métrica de latência do lado do cliente → instrumente as chamadas de saída (a autoinstrumentação do OpenTelemetry faz isso).
- Médias enganosas → histogramas e percentis; detalhamento por rota.
- Monitoramento que morre junto com o sistema — a pilha de métricas roda no mesmo cluster que caiu → monitore também de fora (verificações sintéticas, outra região ou um serviço gerenciado).
- Dashboards que ninguém lê → poucos dashboards, construídos em torno dos SLOs e de RED/USE, linkados a partir dos alertas.
No playground. metrics é um canal lateral, fora do caminho da requisição. Conecte serviços a ele e a utilização deles fica visível no canvas; um serviço sem nó metrics conectado mostra a utilização como "?" — não dá para consertar o que você não mede (um botão "god mode" revela tudo, para fins didáticos). Ele acrescenta um custo mensal. Cenários: observability-stack, scale-out.
Produtos reais.
- Amazon CloudWatch (métricas, dashboards) — métricas nativas dos serviços da AWS e métricas customizadas.
- Amazon Managed Service for Prometheus e Amazon Managed Grafana.
- Cloud Monitoring — métricas, dashboards e monitoramento de SLOs.
- Google Cloud Managed Service for Prometheus.
- Azure Monitor (Metrics) e Azure Monitor managed service for Prometheus.
- Azure Managed Grafana.
- Prometheus — coleta de métricas por pull, PromQL, o padrão de fato no Kubernetes.
- Grafana — dashboards sobre muitas fontes de dados.
- Grafana Mimir, Thanos, VictoriaMetrics — armazenamento escalável de métricas de longo prazo.
- OpenTelemetry (SDKs e Collector) — instrumentação e exportação neutras em relação a fornecedores (usado no Hands-on 8 com
grafana/otel-lgtm).
Na entrevista
"Todo serviço exporta métricas RED — taxa, erros e um histograma de latência por rota — e todo recurso, métricas USE. Meus SLIs e alertas saem desses histogramas, eu olho o p99, não a média, e mantenho os labels limitados para a cardinalidade não explodir."
Saiba mais: Observabilidade › Sinais · Observabilidade › OpenTelemetry · Estimativas › Percentis · Desempenho › Metodologia · Hands-on 8
Logs
O que é. Logs são registros com data e hora de eventos discretos: "pedido 81234 criado", "timeout do provedor de pagamento após 2000 ms", "usuário 77 errou o login". A prática moderna é o log estruturado — um objeto JSON por evento, com campos (level, service, trace_id, order_id, duration_ms) — para que os logs possam ser filtrados e agregados, e não só vasculhados com grep. Os logs são enviados por um agente ou pelo OpenTelemetry Collector a um repositório central, onde são indexados e pesquisados. Incluir o trace id em cada linha liga os logs aos traces.
Quando usar.
- Investigar uma requisição ou um usuário específico: "o que aconteceu com o pedido 81234?" — busque por
order_idoutrace_id. - Erros com contexto: stack traces, a entrada que os causou, qual tentativa de retry falhou.
- Trilhas de auditoria para segurança e conformidade: quem reembolsou o quê, quem mudou permissões (guardadas à parte, com retenção mais longa e acesso restrito).
- Eventos raros que não valem uma métrica.
Quando não usar (ou cuidado).
- Como principal forma de detectar problemas: contar linhas de log para calcular taxas de erro é lento e caro → use métricas e link para os logs.
- Registrar o corpo de toda requisição em alto volume: o custo cresce linearmente com o tráfego → amostre os logs de sucesso, guarde todos os erros.
- Dados sensíveis: senhas, tokens, números de cartão e dados pessoais nunca devem ir para o log (LGPD/GDPR, PCI DSS) → mascare na origem.
- Texto não estruturado com formatos inconsistentes torna a busca quase impossível.
Números-chave.
| Métrica | Valor típico | Observação |
|---|---|---|
| Estimativa do volume de logs | requisições/s × linhas por requisição × bytes por linha | 2.000 req/s × 5 linhas × 500 B = 5 MB/s ≈ 430 GB/dia (≈ ilustrativo) |
| Linha típica de log estruturado | ≈ 200 B – 2 KB | Cresce rápido com stack traces e payloads |
| Atraso da ingestão até ficar pesquisável | ≈ segundos | Depende do pipeline |
| Retenção quente | ≈ 7–30 dias | Logs mais antigos vão para object storage barato; logs de auditoria ficam mais tempo |
| O que move o custo | GB ingeridos e indexados | Indexe menos, amostre os logs de sucesso |
Modos de falha.
- Enxurrada de logs — uma dependência falhando faz cada requisição registrar um stack trace; o pipeline engasga e a fatura explode → limitar logs repetidos, amostrar, desligar o debug em produção.
- Falta de correlação — logs de 6 serviços não podem ser cruzados → propagar e registrar o
trace_id. - Vazamento de segredos ou dados pessoais → campos estruturados com mascaramento, revisões, varreduras.
- Log bloqueando a aplicação — escritas síncronas num destino lento somam latência → appenders assíncronos, buffer local, stdout + agente.
- Logs perdidos quando um pod morre → escreva no stdout e deixe o agente do nó enviá-los; buffers com backpressure.
No playground. logs é um canal lateral: conectar serviços a ele habilita os detalhes do log de eventos (o que aconteceu com as requisições amostradas, quais erros e retries) na aba Events. Ele custa por GB, então aparece no painel de custo. Cenários: observability-stack, cascading-failure.
Produtos reais.
- Amazon CloudWatch Logs — coleta, retenção e consultas com Logs Insights.
- Amazon OpenSearch Service — busca e análise sobre logs.
- Cloud Logging — coleta, Log Explorer, métricas baseadas em logs, envio para BigQuery ou Cloud Storage.
- Azure Monitor Logs (workspaces do Log Analytics) — armazenamento de logs consultado com KQL.
- Grafana Loki — agregação de logs indexada só por labels (barata); consultada com LogQL.
- OpenSearch / Elasticsearch — busca de logs com indexação de texto completo (a pilha "ELK", com Logstash e Kibana).
- Fluent Bit, Vector, OpenTelemetry Collector — coletores e processadores de logs.
Na entrevista
"Os serviços escrevem logs JSON estruturados no stdout, com o trace id em cada linha; um agente os envia para um repositório central. Uso métricas para detectar, traces para localizar e logs para explicar. Erros são sempre guardados, requisições bem-sucedidas são amostradas e nada sensível vai para o log."
Saiba mais: Observabilidade › Sinais · Observabilidade › OpenTelemetry · Observabilidade › Resposta a incidentes · Rede e segurança › Zero trust · Hands-on 8
Tracing
O que é. O tracing distribuído acompanha uma requisição por todos os serviços que ela toca. Cada unidade de trabalho é um span (nome, início, duração, atributos, status) e os spans formam uma árvore sob um mesmo trace id, propagado entre os serviços em cabeçalhos das requisições (o cabeçalho W3C traceparent) e nos metadados das mensagens. O resultado é uma cascata: você vê que um checkout de 4 s passou 3,8 s esperando o provedor de pagamento, ou que uma página faz 40 chamadas sequenciais ao banco (N+1). Como registrar todas as requisições é caro, os traces são amostrados: amostragem na cabeça (decide no início, por exemplo 5%) ou na cauda (decide no fim, guardando todos os erros e as requisições lentas).
Quando usar.
- Qualquer sistema com mais de dois ou três serviços: descobrir de onde vêm a latência ou os erros.
- Diagnosticar o caminho crítico: o que é sequencial e poderia ser paralelo, qual dependência domina o p99.
- Entender fan-out e retries: um trace mostra os três retries que triplicaram a carga.
- Aplicações com LLM: um trace por execução de agente mostra cada chamada ao modelo, cada chamada de ferramenta, tokens e latência.
Quando não usar (ou cuidado).
- Sem propagação de contexto em cada salto (HTTP, gRPC, cabeçalhos do Kafka, jobs assíncronos), os traces se quebram em fragmentos → use instrumentação do OpenTelemetry em todo lugar.
- Amostrar 100% em alto volume é caro; amostrar pouco demais perde as raras requisições lentas → amostragem na cauda para erros e traces lentos.
- Traces mostram uma requisição; para tendências, use métricas (ou métricas derivadas de spans).
- Dados sensíveis em atributos de spans são tão perigosos quanto em logs.
Números-chave.
| Métrica | Valor típico | Observação |
|---|---|---|
| Spans por trace | ≈ dezenas a centenas | Um por chamada de serviço, consulta, acesso ao cache |
| Taxa de amostragem na cabeça | ≈ 1–10% em produção de alto volume | ≈ ilustrativo; 100% em desenvolvimento e em serviços de baixo volume |
| Overhead da instrumentação | pequeno (≈ microssegundos por span) | A exportação é em lotes e assíncrona |
| Cabeçalho de propagação | traceparent (W3C Trace Context) | Leva o trace id, o id do span pai e a flag de amostragem |
| Retenção | ≈ dias a poucas semanas | Traces servem a investigações recentes |
Modos de falha.
- Traces quebrados — um serviço ou o broker de mensagens descarta o contexto → instrumente cada salto, propague pelos cabeçalhos do Kafka e pelos payloads dos jobs.
- A amostragem esconde o problema — a rara requisição de 10 segundos não foi amostrada → amostragem na cauda (guardar erros e traces lentos), exemplars ligando métricas a traces.
- Collector sobrecarregado no pico → lotes, escalar o Collector horizontalmente, amostrar na borda do pipeline.
- Diferença de relógio faz spans filhos parecerem começar antes do pai → confie em durações medidas num mesmo host, NTP em todo lugar.
No playground. tracing é um canal lateral: quando presente, a aba Trace mostra a cascata de uma requisição lenta amostrada, com o tempo gasto em fila e em serviço em cada nó — o jeito mais rápido de achar uma dependência lenta ou uma retry storm. Ele acrescenta custo. Cenários: observability-stack, cascading-failure, retry-storm, ai-assistant.
Produtos reais.
- AWS X-Ray — tracing distribuído para cargas na AWS (aceita dados do OpenTelemetry).
- Amazon CloudWatch Application Signals — monitoramento de desempenho de aplicações construído sobre OpenTelemetry.
- Cloud Trace — tracing distribuído, compatível com OpenTelemetry.
- Azure Monitor Application Insights — monitoramento de desempenho de aplicações com tracing distribuído (distro do OpenTelemetry).
- OpenTelemetry — as APIs, SDKs, agentes de autoinstrumentação e o Collector padrão.
- Jaeger — backend e interface de tracing (CNCF).
- Grafana Tempo — armazenamento de traces em object storage, integrado ao Grafana.
- Zipkin — o sistema de tracing de código aberto original.
Na entrevista
"Com o OpenTelemetry, o trace id flui do gateway por todos os serviços e pelos cabeçalhos do Kafka, então um checkout lento aparece como uma cascata: 3,8 s de 4 s esperando o provedor de pagamento. Guardo todos os traces de erro e lentos com amostragem na cauda, e alguns por cento do resto."
Saiba mais: Observabilidade › OpenTelemetry · Observabilidade › Sinais · Desempenho › Gargalos · Sistemas de IA › Segurança e avaliações · Hands-on 8
Alerting
O que é. Os alertas transformam sinais em notificações para humanos: regras avaliadas continuamente sobre métricas (ou logs) que, quando verdadeiras por tempo suficiente, encaminham uma mensagem à pessoa certa — um acionamento (page) para problemas urgentes, um ticket ou mensagem de chat para o resto. Bons alertas tratam de sintomas que os usuários sentem (erros, latência, violações de SLO), são acionáveis e vêm com o link de um runbook. O padrão moderno são os alertas baseados em SLO com burn rate: alertar quando o orçamento de erros está sendo consumido muito mais rápido que o sustentável, usando duas janelas (por exemplo, 1 h e 5 min) para que o alerta seja rápido e não barulhento.
Quando usar.
- Todo SLO voltado ao usuário: "disponibilidade do checkout 99,9% em 28 dias", com alertas de consumo rápido (acionamento) e lento (ticket).
- Indicadores antecipados de quedas iminentes: disco enchendo em poucas horas, certificado expirando em 7 dias, lag do consumidor se aproximando da retenção.
- Escalas de plantão com políticas de escalonamento e reconhecimento.
Quando não usar (ou cuidado).
- Alertar sobre causas em vez de sintomas ("CPU > 80%") aciona pessoas por coisas que não afetam os usuários → fadiga de alertas, e os acionamentos reais passam a ser ignorados.
- Alertas sem dono ou sem runbook.
- Limiares estáticos sobre métricas ruidosas ficam oscilando → use janelas, burn rates, histerese.
- Os alertas dependem de a pilha de monitoramento estar viva → um "dead man's switch" (um alerta de batimento sempre disparado, que aciona alguém quando para).
Números-chave.
| Métrica | Valor típico | Observação |
|---|---|---|
| Orçamento de erros de um SLO de 99,9% numa janela móvel de 28 dias | ≈ 40 minutos de queda total | 0,1% × 28 dias × 24 h × 60 min |
| Acionamento de consumo rápido (SRE Workbook) | burn rate de 14,4 em 1 h (com verificação de 5 min) | Consome 2% de um orçamento de 28 dias em uma hora |
| Ticket de consumo lento | burn rate ≈ 1–6 em 6 h – 3 dias | ≈ ilustrativo; pega degradações graduais |
| Acionamentos sustentáveis por turno de plantão | poucos, no máximo | O livro de SRE do Google sugere ≤ 2 incidentes por turno de 12 horas |
| Meta de tempo para reconhecer | ≈ 5–15 min para acionamentos | ≈ ilustrativo; definida pela política do time |
Modos de falha.
- Fadiga de alertas — alertas ruidosos demais, o verdadeiro passa despercebido → apagar ou rebaixar alertas não acionáveis, acionar só por SLO.
- Falha silenciosa — a métrica parou de ser reportada, então o limiar nunca dispara → alertar sobre ausência de dados, dead man's switch.
- Pilha de alertas cai junto com o sistema → monitorar o monitor de fora (verificações sintéticas, outro provedor).
- Sem runbook / dono errado → cada alerta linka um runbook e vai para o time dono.
- Oscilação → janelas de avaliação mais longas, durações
for, histerese.
No playground. alerting é um canal lateral conectado a metrics: quando presente, as falhas aleatórias são detectadas e corrigidas mais rápido — o modelo reduz o MTTR em 50%, o que aparece como disponibilidade maior no relatório da execução. Ele custa dinheiro, como os outros nós de observabilidade. Cenários: observability-stack, multi-region.
Produtos reais.
- Alarmes do Amazon CloudWatch (com alarmes compostos) encaminhados pelo Amazon SNS.
- AWS Incident Manager (Systems Manager) — plantão, escalonamento e planos de resposta.
- Políticas de alerta do Cloud Monitoring — inclusive alertas de burn rate de SLO, com canais de notificação.
- Alertas do Azure Monitor com action groups (e-mail, SMS, webhooks, ITSM).
- Prometheus Alertmanager — agrupamento, silenciamento e roteamento dos alertas do Prometheus.
- Grafana Alerting — regras de alerta sobre qualquer fonte de dados do Grafana.
- Sloth / Pyrra — geram alertas de burn rate em múltiplas janelas a partir de definições de SLO.
- Serviços comerciais de acionamento como o PagerDuty são comuns para escalas de plantão.
Na entrevista
"Aciono por sintomas, não por causas: alertas de burn rate em múltiplas janelas sobre o SLO do checkout — consumo de 14× em uma hora aciona o plantonista, consumos lentos abrem um ticket. Todo alerta tem um dono e um runbook, e um alerta de batimento avisa se o próprio monitoramento caiu."
Saiba mais: Observabilidade › Alertas · Observabilidade › SLOs · Observabilidade › Resposta a incidentes · Estimativas › Matemática da disponibilidade · Hands-on 8
Health Check
O que é. Um health check é uma sonda que algo fora da instância — um load balancer, o Kubernetes, um serviço de failover por DNS — envia periodicamente para decidir se aquela instância deve receber tráfego ou ser reiniciada. O Kubernetes distingue três: liveness ("o processo travou? se falhar, reinicie"), readiness ("pode atender tráfego agora? se falhar, tire do load balancer, não reinicie") e startup ("ainda está subindo? segure as outras sondas até terminar"). Load balancers usam verificações ativas parecidas (uma requisição HTTP para /health a cada poucos segundos) e às vezes passivas (detecção de outliers pelos erros do tráfego real).
Quando usar.
- Toda réplica atrás de um load balancer ou de um Service do Kubernetes: sem isso, o LB continua mandando tráfego para instâncias mortas ou ainda aquecendo.
- Readiness durante a inicialização e o aquecimento (JIT, caches, pools de conexão) e durante o desligamento gracioso (falhe a readiness primeiro, depois drene).
- Failover regional: health checks de DNS decidem quando mandar os usuários para a outra região.
- Descarte de carga: uma instância sobrecarregada pode falhar a readiness temporariamente.
Quando não usar (ou cuidado).
- Não verifique dependências na liveness: se o banco fica lento e a liveness de todos os pods o verifica, o Kubernetes reinicia todos os pods de uma vez — uma tempestade de restarts que piora a queda.
- Uma readiness que verifica uma dependência compartilhada pode tirar todas as réplicas de uma vez → verifique só o que a própria instância precisa, e degrade com elegância.
- Endpoints de saúde devem ser baratos, rápidos e sem autenticação, mas não públicos (sem detalhes sensíveis).
- Limiares agressivos demais oscilam; frouxos demais deixam instâncias mortas em rotação.
Números-chave.
| Métrica | Valor típico | Observação |
|---|---|---|
| Padrões das sondas do Kubernetes | periodSeconds 10, timeoutSeconds 1, failureThreshold 3 | Padrões documentados |
| Tempo de detecção | ≈ intervalo × limiar de falhas | Padrões do K8s: ≈ 30 s; 2 s × 2 ≈ 4 s se ajustado |
| Padrões do health check de alvos do AWS ALB | intervalo de 30 s, limiar de não saudável 2, de saudável 5 | Padrões documentados; ≈ 60 s para marcar como não saudável |
| Latência do endpoint da sonda | ≈ milissegundos | Não deve fazer trabalho pesado |
| Efeito na disponibilidade | detecção mais rápida ⇒ menos requisições falhas por incidente | Requisições falhas ≈ fração do tráfego × tempo de detecção |
Modos de falha.
- Tempestade de restarts — a liveness depende do banco; o banco fica lento; todos os pods reiniciam → a liveness verifica só o próprio processo.
- Remoção da frota inteira — a readiness falha em todo lugar por causa de uma dependência compartilhada; o LB fica sem alvos saudáveis → degradar em vez de falhar a readiness; LBs que "falham aberto" quando todos os alvos estão não saudáveis.
- Instância zumbi — o endpoint de saúde devolve 200, mas as requisições reais falham (por exemplo, um pool de threads quebrado) → health checks passivos / detecção de outliers no tráfego real, verificações de readiness mais profundas.
- Detecção lenta → intervalos mais curtos nos caminhos críticos, mais verificações passivas.
- Oscilação → limiares de saudável/não saudável com histerese.
No playground. healthcheck é um canal lateral: conectá-lo a um serviço atrás de um load balancer reduz o tempo de detecção de falhas do LB de 30 s para 3 s, então, depois da queda de uma réplica, muito menos requisições vão para a instância morta. Compare o pico de erros após uma queda com e sem ele. Cenários: scale-out, multi-region, observability-stack.
Produtos reais.
- Health checks de alvos do Elastic Load Balancing (ALB/NLB).
- Health checks do Amazon Route 53 — para failover por DNS.
- Health checks do Cloud Load Balancing.
- Uptime checks do Cloud Monitoring — sondas sintéticas externas.
- Health probes do Azure Load Balancer e do Application Gateway.
- Testes de disponibilidade do Application Insights — sondas sintéticas externas.
- Sondas de liveness, readiness e startup do Kubernetes (usadas no Hands-on 10).
- Grupos de saúde do Spring Boot Actuator (
/actuator/health/liveness,/actuator/health/readiness). - Prometheus Blackbox Exporter — sondas HTTP/TCP/ICMP de fora.
- Detecção de outliers do Envoy — health check passivo em proxies e service meshes.
Na entrevista
"Cada réplica expõe liveness e readiness separadamente: a liveness só diz que o processo não travou, a readiness diz que ele pode atender agora — ela falha durante o aquecimento e o desligamento. O load balancer para de rotear para uma réplica com falha em segundos, e eu nunca coloco verificação do banco na liveness, senão um banco lento reinicia a frota inteira."
Saiba mais: Observabilidade › Sinais · Cloud-native › Kubernetes · Confiabilidade › Padrões · Borda › Balanceamento de carga · Load Balancer · Hands-on 3 · Hands-on 10