SLI, SLO, error budget e postmortem sem culpa
Objetivos desta aula
- Definir SLI e SLO do CloudShop
- Calcular e usar error budget
- Conduzir incidente e escrever postmortem
SLI é a medida da experiência (proporção de requisições bem-sucedidas abaixo de 500 ms, por exemplo). SLO é a meta interna sobre esse indicador. SLA é o compromisso contratual, geralmente mais frouxo que o SLO. Confiabilidade deixa de ser opinião quando existe número.
Error budget é o complemento do SLO: com meta de 99,9% em 30 dias, você tem cerca de 43 minutos de falha permitida. Esse número orienta decisão: budget sobrando permite acelerar entregas; budget estourado obriga a priorizar estabilidade. É a ferramenta que encerra a discussão entre 'entregar rápido' e 'ficar estável'.
Incidente tem papéis (comandante, comunicação, investigação), registro de linha do tempo e foco em mitigar antes de entender. Depois vem o postmortem sem culpa: fatos, impacto medido, causas contribuintes, o que funcionou e ações com responsável e prazo. Culpar pessoa esconde falha de sistema e garante repetição.
1. SLI, SLO e SLA
- SLI: a medida (ex.: % de requisições de checkout com sucesso em menos de 500 ms)
- SLO: a meta interna (99,5% em 30 dias)
- SLA: o contrato com o cliente, com multa — sempre mais frouxo que o SLO
2. Error budget
Um SLO de 99,5% permite 0,5% de falha: em 30 dias, cerca de 3h36min. Enquanto há orçamento, o time lança à vontade; quando acaba, prioriza estabilidade. Isso transforma briga entre produto e operação em regra combinada.
3. Alertas por burn rate
Em vez de alertar a cada erro, alerte quando o orçamento está sendo gasto rápido demais: queimar 2% em 1 hora (taxa 14,4) é página imediata; 10% em 3 dias é ticket.
4. Resposta a incidente
Papéis claros (comandante, comunicação, operação), canal único, linha do tempo registrada. Primeiro mitigar (rollback, desligar feature flag), depois investigar.
5. Postmortem sem culpa
Foco no sistema, não na pessoa: linha do tempo, impacto, causa raiz com 5 porquês, o que ajudou, o que atrapalhou e ações com dono e prazo. Se uma pessoa conseguiu derrubar produção com um comando, o problema é o processo que permitiu.
Na prática
SLO do CloudShop documentado
yaml
servico: cloudshop-api
janela: 30d
slis:
- nome: disponibilidade
definicao: proporcao de requisicoes com status < 500
consulta: |
sum(rate(http_request_duration_seconds_count{status!~"5.."}[30d]))
/ sum(rate(http_request_duration_seconds_count[30d]))
slo: 99.9%
budget: 43m 12s
- nome: latencia
definicao: proporcao de requisicoes abaixo de 500ms
consulta: |
sum(rate(http_request_duration_seconds_bucket{le="0.5"}[30d]))
/ sum(rate(http_request_duration_seconds_count[30d]))
slo: 95%
politica:
budget_esgotado: congelar entregas de funcionalidade e priorizar confiabilidade
budget_saudavel: liberar deploys frequentes e experimentos controladosModelo de postmortem
markdown
# Postmortem — Indisponibilidade da API (2026-09-14)
**Impacto:** 22 minutos com 78% das requisicoes em erro; 41% do error budget mensal consumido.
**Deteccao:** alerta TaxaDeErroAlta em 14:03 (usuarios comecaram a falhar 14:01).
## Linha do tempo (UTC)
- 14:01 deploy v1.4.0 aplicado
- 14:03 alerta critico disparado
- 14:07 hipotese: pool de conexoes esgotado (traces mostram espera no banco)
- 14:16 rollback para v1.3.2 iniciado
- 14:23 metricas normalizadas
## Causas contribuintes
1. Nova rota abria conexao por requisicao sem devolver ao pool.
2. Teste de carga nao cobria essa rota.
3. Alerta de saturacao do pool nao existia.
## O que funcionou
- Rollback automatizado levou 7 minutos.
- Runbook de 5xx acelerou o diagnostico.
## Acoes
| Acao | Responsavel | Prazo |
|---|---|---|
| Corrigir vazamento de conexao e cobrir com teste | Aluno | 2026-09-16 |
| Alerta de saturacao do pool | Aluno | 2026-09-18 |
| Teste de carga nas rotas de escrita no CI | Time | 2026-09-30 |
**Sem culpa:** a pessoa seguiu o processo existente; o sistema permitiu que a falha chegasse a producao.Cálculo do error budget
text
SLO 99,5% em 30 dias
30 dias = 43.200 min
Orçamento = 43.200 x 0,005 = 216 min (~3h36)
Incidente de 40 min -> restam 176 min (81% do orçamento)Alerta de burn rate rápido
promql
(
sum(rate(http_requests_total{route="/checkout",status=~"5.."}[1h]))
/ sum(rate(http_requests_total{route="/checkout"}[1h]))
) > (14.4 * 0.005)Por que isso importa
SLO e postmortem são o vocabulário de SRE em entrevistas de nível pleno e sênior.
Erro comum
Definir SLO de 99,99% sem arquitetura nem orçamento para sustentá-lo.
Dica de produção
Alerte por burn rate do error budget, não por qualquer desvio: reduz drasticamente ruído.
Alerta de segurança
Postmortem pode conter dado sensível de cliente; publique versão interna e versão sanitizada.
Pergunta de entrevista
Explique error budget e como ele influencia a decisão de lançar uma funcionalidade.
Glossário
- error budget
- Quantidade de falha permitida pelo SLO em uma janela de tempo.
- postmortem sem culpa
- Análise focada em falhas de sistema e processo, não em pessoas.
- Error budget
- Quantidade de falha permitida pelo SLO em um período.
- Burn rate
- Velocidade com que o error budget está sendo consumido.
- Blameless
- Postmortem focado em causas sistêmicas, sem culpar pessoas.
Conexão com o CloudShop
Publicar o SLO do CloudShop e o postmortem do incidente do módulo.
Quiz da aula
1. SLO de 99,9% em 30 dias permite aproximadamente quanto de indisponibilidade?
2. SLO de 99,9% em 30 dias permite aproximadamente quanto de indisponibilidade?
3. O error budget acabou. O que o time deve fazer?
Minhas anotações
Salvo automaticamente neste navegador.