Pular para o conteúdo
Rizzygo Ako
Voltar para o tópico SLI, SLO e error budget

SLI, SLO e error budget, com contas

"O sistema nunca pode cair" parece boa meta, mas trava o time e custa uma fortuna. Esta lição mostra como combinar quanto de falha é aceitável, com contas que você faz no papel.

Cerca de 50 minutosTrilha Platform EngineeringMaterial gratuito em português

1. Por que não 100%

Cada "nove" a mais na disponibilidade (99%, 99,9%, 99,99%) custa muito mais caro que o anterior: mais redundância, mais testes, mudanças mais lentas. E, acima de certo ponto, o usuário nem percebe. O Wi-Fi da casa dele e o celular dele costumam falhar mais que o seu serviço.

Por isso o SRE troca "nunca cair" por uma meta combinada. O que sobra da meta vira um orçamento para mudar e experimentar.

2. SLI: o que medir

SLI (Service Level Indicator) é o indicador. Ele deve medir o que o usuário sente. O formato mais útil é uma proporção:

SLI como proporção:
SLI = eventos bons / eventos válidos

Exemplo de disponibilidade:
  requisições com resposta de sucesso / todas as requisições

Exemplo de latência:
  requisições respondidas em menos de 300 ms / todas as requisições

Exemplos de bons SLIs: compras concluídas com sucesso, páginas carregadas em menos de 2 segundos, dados do painel atualizados há menos de 10 minutos. CPU, memória e número de pods não são SLIs: são causas internas, que podem ou não afetar alguém.

3. SLO: a meta

SLO (Service Level Objective) é a meta para o SLI, sempre numa janela de tempo. Por exemplo: "99,5% das requisições de checkout com sucesso, medido em 30 dias corridos".

Para escolher o primeiro SLO, olhe o histórico do serviço e pergunte ao time de produto quanto de falha os usuários aceitam. Comece com uma meta que o serviço já cumpre na maior parte do tempo. Dá para apertar depois.

4. Error budget: as contas

O error budget é 100% menos o SLO. Em 30 dias há 43.200 minutos. Veja quanto de falha total cada meta permite:

SLO em 30 diasError budgetMinutos de falha total
99%1%432 minutos (7 horas e 12 minutos)
99,5%0,5%216 minutos (3 horas e 36 minutos)
99,9%0,1%43,2 minutos
99,99%0,01%4,32 minutos

Na prática, falha raramente é total. Se o serviço recebe 1 milhão de requisições no mês e o SLO é 99,9%, o budget é de 1.000 requisições com erro, não importa se vieram todas juntas ou espalhadas.

5. A política do error budget

O budget só funciona se o time combinar antes o que fazer com ele. Um modelo simples:

Política de error budget de exemplo:
1. Budget acima de 50%: deploys normais, experimentos liberados.
2. Budget entre 0% e 50%: deploys continuam, mas toda mudança arriscada
   precisa de plano de volta testado.
3. Budget esgotado: só entram correções de confiabilidade e de segurança
   até a janela recuperar. Produto e engenharia revisam juntos as causas.

Produto e operação decidem juntos, com um número na mesa, e não no grito.

6. SLA: o contrato com o cliente

SLA (Service Level Agreement) é um contrato com o cliente, com consequência se for quebrado, como crédito ou multa. O SLA fica mais folgado que o SLO interno. Assim o time percebe o problema e age bem antes de quebrar o contrato.

7. Missão final

1. Escreva dois SLIs

Escolha um serviço que você usa todo dia, como um app de banco. Escreva um SLI de disponibilidade e um de latência no formato "eventos bons / eventos válidos".

2. Faça as contas

Calcule o error budget em minutos para um SLO de 99,95% em 30 dias. Depois, para o mesmo SLO numa janela de 7 dias.

3. Escreva a política

Adapte o modelo da parte 5 para o seu serviço e coloque no repositório template do projeto final, num arquivo SLO.md.

Para fixarExplique para alguém por que ter error budget sobrando é uma boa notícia para quem quer lançar coisas novas. Depois, marque no tópico que você ensinou alguém.

Lição baseada no capítulo Service Level Objectives do livro de SRE do Google e no capítulo Implementing SLOs do The Site Reliability Workbook. As contas usam meses de 30 dias. O texto e os exemplos são próprios, escritos em português pelo Ako, da Rizzygo All.

Conteúdo aberto sob a licença CC BY 4.0. Viu um erro? Abra uma issue.