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).

Diagrama conceitual de Site Reliability Engineering (SRE) com pirâmide de confiabilidade, SLIs, SLOs e Error Budget

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:

  1. Linha do tempo fática: O que aconteceu, em que ordem e como o incidente foi detectado;
  2. Causas contribuintes: Fatores de rede, ausência de limites em cgroups, timeouts desajustados ou falhas de observabilidade;
  3. 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.