- Desmistificando a Tríade da Confiabilidade: SLI, SLO e SLA
- Service Level Indicator (SLI): A Métrica Bruta
- Service Level Objective (SLO): A Meta Interna
- Service Level Agreement (SLA): O Contrato com o Cliente
- Como Definir SLIs Efetivos: A Base de Tudo
- A Arte de Criar SLOs Realistas e Significativos
- Error Budget: O Combustível para a Inovação
- Exemplos Práticos: SLOs em Ação
- Exemplo 1: API de Pagamentos de um E-commerce
- Exemplo 2: Plataforma de Streaming de Vídeo
- Exemplo 3: Sistema de Processamento de Dados (Batch)
- Monitoramento e Alertas Baseados em SLOs
- Implementando a Cultura de SLOs na Organização
Desmistificando a Tríade da Confiabilidade: SLI, SLO e SLA
No universo da engenharia de software e operações, a busca por sistemas confiáveis é uma constante. Contudo, a ‘confiabilidade’ é um conceito abstrato se não for quantificada. Para transformar essa abstração em metas tangíveis e acionáveis, a engenharia de confiabilidade de sites (SRE) se baseia em três pilares fundamentais: service Level Indicator (sli), service level objective (SLO) e Service Level Agreement (sla). Compreender a distinção e a relação entre eles é o primeiro passo para construir uma cultura de confiabilidade orientada por dados.
Service Level Indicator (SLI): A Métrica Bruta
Um SLI é uma medida quantitativa, um indicador direto de um aspecto específico do serviço que você está fornecendo. É a evidência empírica da performance do seu sistema. Pense nos SLIs como os sensores do seu serviço. Eles devem ser mensuráveis e refletir diretamente a experiência do usuário.
A fórmula geral para um bom SLI é a proporção de eventos válidos que foram bem-sucedidos:
SLI = (Eventos Bons / Eventos Válidos) * 100%
Exemplos de SLIs comuns incluem:
- Disponibilidade: A proporção de requisições HTTP que retornaram com sucesso (códigos 2xx ou 3xx) em relação ao total de requisições válidas.
- Latência: A proporção de requisições que foram atendidas abaixo de um determinado limiar de tempo (ex: 500ms). É crucial medir latência usando percentis (p90, p95, p99) em vez de médias, pois as médias podem mascarar outliers que afetam negativamente a experiência do usuário.
- Taxa de Erro: A proporção de requisições que resultaram em erro (códigos 5xx) em relação ao total de requisições válidas.
Service Level Objective (SLO): A Meta Interna
Um SLO é a meta que você define para um SLI específico ao longo de um período de tempo. É uma declaração precisa sobre o nível de confiabilidade que seu serviço se compromete a atingir. O SLO é um acordo interno entre as equipes de desenvolvimento, produto e operações, e serve para alinhar as expectativas e guiar as decisões de engenharia.
Um SLO bem definido possui os seguintes componentes:
- O SLI a ser medido: Ex: Latência da requisição na API de checkout.
- O alvo de performance: Ex: 99.9%.
- O período de medição (janela de tempo): Ex: últimos 28 dias (janela rolante).
Juntando tudo, um exemplo de SLO seria: ‘99.9% das requisições à API de checkout devem ser concluídas em menos de 300ms, medido em uma janela rolante de 28 dias.’
Service Level Agreement (SLA): O Contrato com o Cliente
Um SLA é um contrato formal e externo, geralmente com um cliente pagante. Ele especifica o nível de serviço que o cliente pode esperar e as consequências (geralmente financeiras, como créditos ou reembolsos) caso o serviço não atinja esses níveis. SLAs são, por natureza, mais conservadores que os SLOs internos. Uma prática comum é definir um SLA com uma meta de confiabilidade ligeiramente inferior ao SLO interno, criando uma margem de segurança para a equipe de engenharia.
Por exemplo, se o SLO interno para a disponibilidade de uma API é 99.95%, o SLA prometido ao cliente pode ser de 99.9%.
Como Definir SLIs Efetivos: A Base de Tudo
A escolha dos SLIs corretos é fundamental. Um SLI ineficaz levará a SLOs que não refletem a real experiência do usuário, resultando em um falso senso de segurança ou em pânico desnecessário. O processo deve sempre começar com foco no usuário.
Pergunte-se: ‘O que define uma boa experiência para o usuário nesta jornada específica?’
- Disponibilidade: O usuário consegue acessar o serviço? O SLI mais comum aqui é a contagem de requisições bem-sucedidas (HTTP 2xx) dividida pelo total de requisições. Requisições com falhas rápidas (HTTP 5xx) são claramente eventos ruins.
- Latência: O serviço é rápido o suficiente? Para uma API de login, talvez 200ms seja um bom limiar. Para uma busca complexa, 1000ms pode ser aceitável. O SLI seria a proporção de requisições abaixo desse limiar.
- Qualidade/Correção: O serviço está retornando a resposta certa? Este é mais difícil de medir, mas pode ser implementado através de validações no lado do cliente ou verificações de integridade dos dados. Exemplo: proporção de buscas que retornam resultados relevantes versus resultados vazios ou errôneos.
- Freshness (Atualidade): Quão atualizados estão os dados que o serviço fornece? É crucial para pipelines de dados. O SLI poderia ser o percentual de execuções do pipeline que terminam dentro da janela de tempo esperada.
A Arte de Criar SLOs Realistas e Significativos
Definir um SLO não é apenas escolher um número. É um processo de negociação e alinhamento entre as partes interessadas. Um SLO excessivamente rigoroso (ex: 99.999%) pode paralisar a inovação, pois qualquer mudança se torna arriscada. Um SLO muito frouxo (ex: 99%) pode levar a uma má experiência do usuário e perda de confiança no produto.
O processo ideal envolve:
- Identificar as jornadas críticas do usuário: Mapeie os fluxos mais importantes para o seu negócio, como login, busca de produtos, finalização de compra, etc.
- Selecionar os SLIs apropriados: Para cada jornada, escolha os SLIs que melhor representam a qualidade da experiência do usuário (latência, disponibilidade, etc.).
- Analisar dados históricos: Observe o desempenho passado do seu sistema. Qual tem sido a performance nos últimos meses? Isso fornece uma linha de base realista.
- Negociar o alvo: Converse com a equipe de produto e de negócios. Qual é o nível de confiabilidade que satisfaz os usuários sem impedir o lançamento de novas funcionalidades? É aqui que o conceito de Error Budget se torna essencial.
Error Budget: O Combustível para a Inovação
O Error Budget (Orçamento de Erro) é a consequência direta de um SLO. Se o seu SLO de disponibilidade é de 99.9%, isso implica que você tem um Error Budget de 0.1% de indisponibilidade permitida. Esse orçamento não é um objetivo a ser gasto, mas sim um limite de falhas aceitáveis dentro de um determinado período.
Error Budget = 100% - SLO
Este conceito revoluciona a forma como as equipes de engenharia tomam decisões. Ele cria uma estrutura data-driven para balancear confiabilidade e inovação:
- Se há orçamento de erro sobrando: A equipe tem ‘permissão’ para assumir riscos calculados. É o momento ideal para fazer deploy de novas features, realizar manutenções planejadas, ou experimentar com novas tecnologias.
- Se o orçamento de erro está se esgotando ou esgotado: A prioridade máxima da equipe muda automaticamente. Todas as atividades de desenvolvimento de novas features são congeladas, e o foco se volta inteiramente para a estabilização do sistema, correção de bugs e melhorias de confiabilidade.
O Error Budget transforma a conversa de ‘Podemos fazer este deploy?’ para ‘Temos orçamento de erro suficiente para arriscar este deploy?’.
Exemplos Práticos: SLOs em Ação
Exemplo 1: API de Pagamentos de um E-commerce
- Jornada Crítica: Finalizar uma compra.
- SLI de Latência: Proporção de requisições POST para o endpoint
/api/v1/paymentsque são processadas e retornam uma resposta em menos de 800ms. - SLO: 99.5% das requisições de pagamento devem ser concluídas em menos de 800ms, medido sobre uma janela rolante de 30 dias.
- Error Budget: 0.5% das requisições podem exceder o limiar de 800ms. Isso se traduz em um número concreto de falhas permitidas por mês.
Exemplo 2: Plataforma de Streaming de Vídeo
- Jornada Crítica: Iniciar a reprodução de um vídeo.
- SLI de Disponibilidade: Proporção de tentativas de início de streaming que resultam em sucesso (o primeiro fragmento de vídeo é entregue ao cliente) em menos de 2 segundos.
- SLO: 99.9% das tentativas de início de streaming devem ser bem-sucedidas em menos de 2 segundos, medido sobre uma janela rolante de 28 dias.
- Error Budget: 0.1% de falhas ou lentidão no início da reprodução são permitidas.
Exemplo 3: Sistema de Processamento de Dados (Batch)
- Jornada Crítica: Disponibilizar o relatório de vendas do dia anterior.
- SLI de Freshness (Atualidade): Proporção de dias em que o pipeline de processamento de dados termina sua execução até as 05:00 AM.
- SLO: Em 95% dos dias do mês, o pipeline de dados deve concluir o processamento até as 05:00 AM.
- Error Budget: O pipeline pode atrasar e ultrapassar o horário limite em aproximadamente 1 a 2 dias por mês sem que seja considerada uma violação do objetivo.
Monitoramento e Alertas Baseados em SLOs
Uma vez que os SLOs estão definidos, a estratégia de monitoramento e alertas deve ser reformulada. Alertas baseados em causas (ex: ‘CPU > 90%’) geram muito ruído e fadiga. Alertas baseados em SLOs focam no sintoma: o impacto real na experiência do usuário.
A métrica chave para alertas é o Burn Rate do Error Budget, que mede a velocidade com que o orçamento está sendo consumido. Um burn rate de 1 significa que o orçamento está sendo consumido na velocidade esperada para esgotar exatamente no final da janela. Um burn rate de 2 significa que ele será esgotado na metade do tempo.
A estratégia de alertas pode ser dividida:
- Alerta de alta urgência (Paging/Telefone): Disparado quando o burn rate é muito alto (ex: 10x), indicando que o Error Budget para o mês inteiro pode ser consumido em poucas horas ou dias. Isso exige intervenção humana imediata.
- Alerta de baixa urgência (Ticket/Slack): Disparado quando o burn rate é consistentemente um pouco acima de 1 (ex: 2x), indicando que o orçamento será esgotado antes do final da janela, mas há tempo (dias ou semanas) para investigar e corrigir sem pânico.
Esta abordagem reduz drasticamente o ruído de alertas e garante que as equipes de plantão só sejam acionadas para problemas que ameaçam significativamente a confiabilidade percebida pelo usuário.
Implementando a Cultura de SLOs na Organização
Adotar SLOs é mais uma mudança cultural do que puramente técnica. Requer colaboração e um entendimento compartilhado entre engenharia, produto e liderança.
Para começar:
- Comece pequeno: Escolha um ou dois serviços críticos, mas bem compreendidos, para definir seus primeiros SLOs.
- Eduque as equipes: Explique os conceitos de SLI/SLO e Error Budget para todas as partes interessadas. Mostre como isso ajuda a tomar decisões mais inteligentes.
- Automatize a medição: Use ferramentas de monitoramento e observabilidade (como Prometheus, Datadog, New Relic) para calcular e visualizar SLIs, SLOs e o consumo do Error Budget em dashboards.
- Itere e refine: SLOs não são imutáveis. Revise-os trimestralmente. Eles estão muito fáceis de atingir? Talvez seja hora de apertá-los. Estão sendo constantemente violados? Talvez sejam irrealistas ou indiquem uma necessidade séria de investimento em confiabilidade.
Ao usar SLOs e Error Budgets como uma linguagem comum, as organizações podem finalmente resolver o conflito histórico entre ‘acelerar o desenvolvimento’ e ‘manter a estabilidade’, transformando-o em uma conversa colaborativa e orientada por dados sobre riscos e prioridades.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.



