Infraestrutura KPI e farmácias
Para quê?
As infraestruturas KPI transformam os «sentimentos» de estabilidade em objetivos mensuráveis, geram o risco e o foco do trabalho. As métricas corretas ligam a SLI técnica aos resultados de negócios (conversão, Time-to-Wallet, LTV) e permitem planejar o desenvolvimento, a carga e a taxa de inovação vs confiabilidade.
Conceitos básicos: SLI, SLO, SLA e orçamento de erros
SLI (Service Level Indicator) é um indicador de qualidade medível: proporção de solicitações de sucesso, p95 latency, farmácia por intervalo.
O SLO (Service Level Objectiva) é um alvo para o SLI (por exemplo, "sucesso ≥ 99. 9% em 30 dias").
O SLA é uma promessa externa com pagamentos/créditos indevidos. Sempre derivado do SLO, mas não igual a ele.
Orçamento de erro = '1 - SLO'. É a proporção máxima permitida de «inconclusivo» por janela de medição. Usado para tomar decisões sobre lançamentos de risco e experiências.
- SLO de disponibilidade 99. 95% em 30 dias → orçamento de erro 0. 05% ≈ 21. 6 minutos de «inconstância» no mês do calendário.
Quatro sinais de ouro e adicionais
1. Latência (p50/p90/p95/p99, tail mais importante do que a média).
2. Erros (5xx/timeout/erros empresariais).
3. Tráfego/largura de banda (RPS/QPS, MBps).
4. Saturação (CPU/RAM/IO/FD/conexão/GC/quotas).
Adicional: início frio, filas/beclogs, tempo de deploy, complacência SLO.
Modelo de SLI para diferentes tipos de serviços
HTTP/API
Disponibilidade: '(sucesso 2xx/3xx - erros lógicos )/( todas as solicitações)'
Latência: 'p95' para pedidos de sucesso; Alvo de rotas quentes.
Qualidade: Proporção de solicitações com 'audiência/scope' correta (sem erros athZ).
Filas/asinharão
Tempo de processamento da mensagem: pen95 end-to-end ≤ N segundos.
Backlog: mediana <X, cauda p99 <Y.
Erro de entrega: ≤ Z ppm.
BD/dinheiro
Latitude de operações: p95 get/put/commit.
Saturação: conexion pool usage, hit-ratio do cachê.
Erros: timeouts, deadlocks, evition storms.
CDN/estático
Hit Ratio: ≥ de destino; degradação → aumento da carga de trabalho sobre origin.
Disponibilidade POP: Disposição Anycast, recusas compensadas pelos vizinhos.
Pagamentos (Business SLI)
Time-to-Wallet p95, depósito/saída com sucesso%, rate de rejeição PSP.
Cálculo de disponibilidade e «farmácia»
Disponibilidade do serviço = 'solicitações de sucesso/todas as solicitações' (preferencialmente, em vez de 'minutos de farmácia').
Alternativa para nós de infraestrutura: 'tempo no estado verde/hora da janela'.
Janela de calendário: 28 a 31 dias, janela deslizante: últimos 30/90 dias.
Horas de trabalho/janelas críticas: para backoffice pode ser considerado uma farmácia de horário (por exemplo, 08: 00-22: 00 locais).
- 'Availability (A) ≈ Av (B) x Av (C) x Av (A' B, C) '- é importante colocar o SLO nas fronteiras.
Exemplo de conjunto SLO (amostra)
API Gateway: disponibilidade ≥ 99. 95 %/30d; p95 latency ≤ 120 ms; erro ≤ 0. 2%.
Checkout/Payments: êxito de depósito ≥ 98. 5 %/30d; Time-to-Wallet p95 ≤ 90 с; PSP-timeouts ≤ 0. 3%.
Banco de dados: p95 read ≤ 10 ms; p95 write ≤ 25 ms; replica lag p95 ≤ 150 мс.
Dinheiro: hit ratio ≥ 85%; eviction storms = 0/30д.
Pagamentos: p95 processamento ≤ 5 min; frod-falls positivo ≤ 0. 3%.
Orçamento de erro e gerenciamento de alterações
Se o orçamento de erros estiver esgotado em 50% + antes do meio da janela, será introduzido o «congelamento» de fichas/lançamentos, o foco será a estabilização.
Se o orçamento for gasto lentamente, você pode acelerar as experiências/canários.
Consumir o orçamento é associado a lançamentos/incidentes específicos através de 'release _ id'.
Alerting, como não ligar à noite para nada
As alertas são apenas por degradação SLO e sintomas vitais, não por cada métrica.
Multi-window, multi-burn rate: janela curta (5-15 min) + longa (1-6 h).
Exemplo: «Burn rate 14 x em 5 min e 6 x em 1 hora» → página on-call.
Relógio silencioso para sinais não-P1; rotação de responsabilidade (ownership).
Dashboards e práticas de visualização
Painel SLO: Compliance de serviços, orçamento restante, cartões de dependências.
Painel Latency: p50/p90/p95/p99, decomposição em rotas/tenantes/países/ASN.
Barra errante: códigos/causas, correlação com lançamentos/fichflagelos.
Painel Capacity: corte de CPU/RAM/IO/network/FD/conectórios, tendências e previsões.
Painel de negócios: Conversão, Time-to-Wallet, Depósitos/Conclusões, Efeito de Bloqueio (WAF/antibot).
Incidentes, MTTR e postmortem
Reações KPI:- MTTD, MTTA, MTTR/MTTC,% dos incidentes sem RCA dentro do prazo.
- Playbooks: quem está escalando, como ligar fichflags/blocos, como reverter o lançamento, comunicar com o negócio.
- Postmortem (blameless): factos, linha de tempo, causas primárias (aqueles/processos), ações imediatas/duradouras, testes de regressão, efeitos sobre o SLO.
Desempenho, saturação e degradação
Headroom: reserva de recursos de destino (por exemplo, CPU <70% p95, RAM <75% p95).
Hot paths: Perfilando rotas críticas; 'p99' é mais importante do que a média.
Degradation modes: dinheiro-apenas, read-only, mapeamento drop de solicitações irrelevantes, «limite de taxas «/quotas.
Fórmulas e exemplos de cálculo
1) Disponibilidade por solicitação
availability = (total_requests - error_requests) / total_requests
onde 'error _ requests' = 5xx + timeouts + erros empresariais (personalizado).
2) Orçamento de erros (minutos)
error_budget_minutes = window_minutes (1 - SLO)
Exemplo: 30 dias (43.200 min), SLO 99. 95% → 21. 6 min.
3) Burn rate
burn_rate = observed_error_ratio / (1 - SLO)
Se o SLO 99. 9% (orçamento 0. 1%) e erro 1% → burn _ rate = 10 x.
4) Disponibilidade composta
A_total ≈ A_gw × A_auth × A_db × A_psp
Pequenas baixas de multiplicador batem no geral A.
Políticas de medição e exclusão
Janelas não programadas (incidentes) são contabilizadas.
Janelas de serviço programadas - Contam-se apenas se a SLA é assim indicada; para SLO muitas vezes não são deduzidos (ou marcados separadamente como 'planned _ downtime').
Sintético vs usuários reais: é bom ter ambos os canais (RUM + verificação sintética).
Exemplos de artefatos
KQL/PromQL (ideias)
Erro SLI (5xx + timeouts) em 5 min:promql sum(rate(http_requests_total{status=~"5.. timeout"}[5m]))
/
sum(rate(http_requests_total[5m]))
p95 latency по route:
promql histogram_quantile(0. 95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, route))
Burn rate 5m/1h:
promql
(
sum(rate(errors_total[5m])) / sum(rate(requests_total[5m]))
) / (1 - 0. 999)
SQL (SQL)
sql
SELECT date_trunc('minute', finished_at) AS ts,
100. 0 sum((status='SUCCESS')::int)::float / count() AS payment_success_pct,
percentile_cont(0. 95) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (finished_at - started_at))) AS ttw_p95_sec
FROM payments
WHERE finished_at > now() - interval '30 days'
GROUP BY 1 ORDER BY 1;
Gerenciamento de dependências e cascatas
Contratos SLO entre equipes: gateway↔auth↔wallet↔PSP.
Degradation policies: quando a dependência cai, o serviço passa a ser um modo simplificado.
Função flags: desativação de funções não críticas, «saída cinzenta» para reduzir as caudas latency.
Capacity Planning e previsões
Schomes. a previsão de RPS/MBPS para tendências e eventos (torneios, jogos, promoções).
Load testing por «caminho de ouro», testes individuais para PSP/pagamento.
A reserva no pico é o coeficiente de destino 1. 3×–2. 0 x da carga de trabalho prevista.
Folha de cheque de implementação SLO/KPI
1. Definir caminhos críticos do usuário e negociar o SLI «do ponto de vista do cliente».
2. Selecionar alvos SLO e janela (30/90 dias); contar o orçamento dos erros.
3. Incorporar a coleta de métricas em gateways/serviços, normalizar códigos/causas.
4. Personalizar burn-rate alerts (janela curta + longa), routing e on-call.
5. Visualizar a complacência SLO, associar a lançamentos/fichflagelos.
6. Ter uma política de orçamento contra mudanças e um processo de congelamento.
7. Retrospectivas e RCA para cada excesso, testes de regressão.
8. Revalidar o SLO trimestralmente sobre a utilização real do orçamento e metas empresariais.
Erros típicos
Medem o «botequim de ping» ignorando os erros das aplicações.
O SLO está exposto «sobre o estoque» (99. 999%), mas são inalcançáveis e não resolvem nada.
Alertas em métricas de baixo nível em vez de sintomas personalizados.
Não há um mapa de dependências. Não sei onde está a arder.
Não há ligação do SLO com os comunicados → não sei quem comeu o orçamento.
Ignorar as caudas p99 → uma boa média, mas mau usuário UX VIP.
Especificidades para iGaming/Fintech
Picos programados: jogos/ivents/promoções - Aumentar a capacidade com antecedência, aquecer o dinheiro/CDN e incluir perfis de limite especiais.
Negócio SLI: Time-to-Wallet, depósito/saída bem-sucedido, «velocidade de pagamento» p95; na raiz dos dashboards.
PSP/associados: SLO/dashboards individuais por provedores, câmbio automático de rotas.
Antibot/antifrode: Não deve ter um orçamento de erros - separe os «blocos legais» dos «erros técnicos».
Regulação: armazenamento de revistas, reprodução de cálculos SLO/SLA, relatórios de incidentes.
FAQ
É preciso subtrair o trabalho de planejamento do SLO?
Normalmente não: o SLO reflete a experiência vivida pelo usuário. A SLA pode ter exceções.
Porquê p95 em vez da média?
O meio disfarça as caudas; Os UX definem as caudas (p95/p99).
Um SLO pode ser usado para todo o produto?
Você precisa de uma árvore SLO: agregada por produto e filiais por caminhos/componentes críticos.
Resultado
Um forte sistema de infraestrutura KPI é o SLI personalizado, o SLO realista, o orçamento de erros como alavanca de controle de mudanças, alerting inteligente e disciplina de incidentes e RCA. Vincule os indicadores técnicos às métricas de negócios, automatize a coleta e a visualização - e a infraestrutura se tornará previsível e a farmácia será controlada até em cenários de pico.