Software · Infraestrutura & Sistemas
Site Reliability Engineering (SRE): SLIs, SLOs, Error Budgets e a Redução do Toil Operacional
Como o Google transformou a confiabilidade de sistemas em disciplina de engenharia de software: métricas de SLI e SLO, gestão pragmática de Error Budgets e estratégias de automação para eliminar o trabalho repetitivo (Toil).
Historicamente, o relacionamento entre equipes de desenvolvimento de software e times de infraestrutura e operações era pautado por incentivos conflitantes. Os desenvolvedores eram cobrados pela velocidade de lançamento de novas funcionalidades no mercado (features), enquanto a equipe de operações era avaliada exclusivamente pela estabilidade e disponibilidade do ambiente de produção. Como toda novidade introduzida no código carrega o risco intrínseco de falha, os operadores tendiam a erguer barreiras burocráticas para desacelerar o ritmo de publicações.
Criado no Google por Ben Treynor Sloss no início dos anos 2000, o Site Reliability Engineering (SRE) é o que acontece quando você encarrega um engenheiro de software de projetar e operar uma equipe de infraestrutura. Em vez de tratar a confiabilidade como uma esperança abstrata, o SRE a quantifica matematicamente através de contratos objetivos entre produto e engenharia, alinhando a velocidade de inovação com a tolerância a falhas do usuário real.
A Hierarquia de Métricas: SLI, SLO e SLA
Para evitar discussões subjetivas durante incidentes, o SRE estabelece três níveis estritos de compromissos operacionais:
flowchart TD
SLI["1. SLI: Service Level Indicator<br/>'O que estamos medindo exatamente agora?'<br/>(ex: Taxa de requisições HTTP 200 bem-sucedidas em < 200ms)"] --> SLO["2. SLO: Service Level Objective<br/>'Qual a nossa meta interna de qualidade?'<br/>(ex: 99.9% de sucesso no intervalo móvel de 30 dias)"]
SLO --> SLA["3. SLA: Service Level Agreement<br/>'Qual a consequência contratual/jurídica se falharmos?'<br/>(ex: Reembolso financeiro de créditos de fatura se disponibilidade cair de 99.5%)"]
1. Service Level Indicator (SLI)
A medição pontual e factual de um aspecto do serviço. Bons SLIs são expressos como a razão percentual entre eventos bem-sucedidos e o total de eventos válidos:
$$\text{SLI} = \frac{\text{Contagem de Requisições Rápidas e Sem Erro}}{\text{Total de Requisições Válidas}} \times 100$$
Os quatro sinais de ouro da observabilidade para SLIs são: Latência (tempo de resposta), Tráfego (taxa de requisições por segundo), Erros (taxa de falhas HTTP 5xx ou falhas de domínio) e Saturação (quanto da capacidade máxima de memória ou I/O está comprometida).
2. Service Level Objective (SLO)
A meta alvo estipulada pela equipe de engenharia e liderança de produto para o SLI ao longo de um período fixo (geralmente uma janela móvel de 28 ou 30 dias). Exemplo: 99,9% das requisições de pagamento processadas com sucesso e latência inferior a 350 milissegundos.
3. Service Level Agreement (SLA)
O contrato comercial e legal formalizado com clientes externos ou terceiros, contendo consequências financeiras explícitas caso o serviço descumpra o patamar mínimo acordado (como concessão de créditos de nuvem). Um princípio básico de SRE dita que o SLO deve ser sempre mais estrito que o SLA, proporcionando uma margem de segurança para que a equipe técnica corrija desvios antes que o contrato seja violado.
O Conceito de Error Budget: A Moeda da Inovação
Uma das maiores inovações culturais do SRE foi reconhecer que 100% de disponibilidade é a meta errada para praticamente qualquer sistema digital. Exigir 100% de confiabilidade tornaria o custo de infraestrutura proibitivo (com redundâncias extremas) e paralisaria qualquer lançamento de novas funcionalidades.
O Error Budget (Orçamento de Erro) é o complemento matemático direto do SLO:
$$\text{Error Budget} = 100% - \text{SLO}$$
Se o SLO de uma API é definido em 99,9%, o Error Budget disponível para o período é de 0,1%:
| Meta de SLO (Disponibilidade) | Error Budget Permitido (30 dias) | Tempo de Indisponibilidade Total Aceitável |
|---|---|---|
| 99,0% (Dois Noves) | 1,0% | 7 horas e 12 minutos |
| 99,5% | 0,5% | 3 horas e 36 minutos |
| 99,9% (Três Noves - Padrão Web) | 0,1% | 43 minutos e 12 segundos |
| 99,95% | 0,05% | 21 minutos e 36 segundos |
| 99,99% (Quatro Noves - Missão Crítica) | 0,01% | 4 minutos e 19 segundos |
A Mecânica da Política de Error Budget
O orçamento de erro funciona como uma moeda de risco compartilhada:
- Enquanto há saldo no Error Budget: Os desenvolvedores têm carta branca para acelerar entregas, lançar novas funcionalidades, experimentar arquiteturas e realizar testes em produção.
- Se o Error Budget for esgotado: Todos os lançamentos de novas funcionalidades são automaticamente congelados. A capacidade de engenharia de todo o time é temporariamente redirecionada para corrigir causas-raiz de falhas, melhorar a cobertura de testes e otimizar a infraestrutura até que o SLO se recupere.
Redução Contínua do Trabalho Braçal (Toil)
No vocabulário de SRE, Toil (trabalho braçal ou fardo operacional) refere-se a tarefas manuais, repetitivas, sem valor de engenharia duradouro e que escalam linearmente com o crescimento do serviço. Exemplos clássicos:
- Reiniciar servidores travados manualmente via terminal;
- Executar scripts de concessão de acessos em banco de dados;
- Fazer rotação manual de certificados SSL ou chaves de API;
- Atender alertas de monitoramento que não exigem nenhuma ação humana real.
Uma regra rígida preconizada pelo Google estabelece que engenheiros de SRE devem dedicar no máximo 50% do seu tempo operacional em Toil. Os 50% restantes devem ser obrigatoriamente dedicados a trabalho genuíno de engenharia: automação de esteiras, desenvolvimento de ferramentas internas, auto-recuperação de falhas (self-healing) e projetos de arquitetura de alta escala. Se a carga operacional manual ultrapassar 50%, a equipe recusa a absorção de novos serviços até que a automação seja concluída.
Postmortems Sem Culpa (Blameless Postmortems)
Falhas em sistemas complexos são inevitáveis. Quando um incidente crítico ocorre, a abordagem tradicional procura culpados ("qual desenvolvedor subiu o commit com defeito?"), o que gera cultura de medo, silenciamento de problemas e ocultação de erros.
No SRE, adota-se a premissa de que os seres humanos vêm trabalhar com boa intenção e que falhas são decorrência de fragilidades na arquitetura, na automação ou nos processos de teste, não de negligência pessoal.
Um relatório de Postmortem Sem Culpa investiga:
- Linha do tempo fática: O que aconteceu, em que ordem e como o incidente foi detectado;
- Causas contribuintes: Fatores de rede, ausência de limites em cgroups, timeouts desajustados ou falhas de observabilidade;
- Ações preventivas com responsáveis e prazos: Automações e testes adicionais criados especificamente para que aquela classe de erro nunca mais consiga atingir a produção.