SLI SLO SLA e Error Budget
Falar em DevOps o objetivo é entregar os projetos da melhor forma possível e criar a melhor experiência para ele. Mas para saber se estamos atingindo esse objetivo é necessário medir.
Nem sempre o que achamos que esta bom de fato é bom.
SLI, SLO, SLA e Error Budget ajudam a alinhar as expectativas como seu usuário. São os pilares para medir a entrega e a qualidade de qualquer serviço de TI.
É necessário alinhar com a sua equipe esse níveis de serviço
para ter sucesso. São usados para medir e estabelecer metas para a qualidade da aplicação e da sua infraestrutura além de alinhar com o usuário o desempenho e a disponibilidade do produto que vamos entregar.
Eficiência e Confiabilidade são peças chaves no mundo DevOps sendo o diferencial entre o serviço bom e o excelente.
Aprende sobre essas siglas envolvem na melhoria contínua da aplicação.
SLI (Service Level Indicator)
O indicador de nível de serviço são as métricas que definem o bom funcionamento do sistema. Tudo depende de qual tipo de sistema estamos falando, mas se colocando no lugar do usuário o que seria um bom sistema funcionando? Algumas métricas que poderiam ser consideradas para medir um desempenho. Não precisa usar todos fica só como idéia, pois cada sistema é um sistema diferente.
- Tempo de carregamento da página. Uma espera de mais de 3 segundos pode fazer um cliente desistir de uma compra. Poderiamos criar uma métrica para medir o percentual de vezes que a página carrega em menos de 2 segundos. O que poderíamos fazer para melhorar esse percentual?
- Melhorar o tamanho das imagens?
- Melhorar a infra do servidor?
Exemplos:
Disponibilidade
: Percentual de tempo que o serviço esteve disponível (uptime).- Exemplo de valor de métrica: 99.9%.
Latência
: Tempo médio de resposta de uma API (em milissegundos).- Exemplo de valor de métrica: p95 ≤ 200ms.
Erro/Taxa de Sucesso
: Percentual de requisições bem-sucedidas.- Exemplo de valor de métrica: HTTP 2xx / Total Requests. Taxa de Falhas:
Percentual de erros
: (HTTP 4xx e 5xx) em relação ao total de requisições. Exemplo: Erros ≤ 1%.Throughput
: Número de requisições processadas por segundo (RPS).- Exemplo de valor de métrica: 500 RPS.
Capacidade
: Utilização média de recursos, como CPU, memória ou banco de dados.- Exemplo: Uso de CPU ≤ 75%.
Saturação
: Percentual de uso de filas ou conexões simultâneas.ß- Exemplo: ≤ 90% de conexões simultâneasß
Retentividade
: Percentual de usuários que retornam ao serviço.- Exemplo de valor de métrica: ≥ 70% dos usuários retornam em 30 dias
SLO (Service Level Objective)
É a meta de desempenho que queremos alcançar nos indicadores de SLIs. Poderíamos definir que o SLO para o SLI de carregamento da página principal fosse 90%, ou seja, ela carrega 90% das vezes em menos de 2 segundos.
100% não existe, é utopia! Picos de tráfego existe, problemas no hardware acontecem, ataques acontecem, etc, etc. Vamos ser realistas, nem a AWS garante 100%, quem dirá nós.
Exemplos de SLOs
Disponibilidade
: O sistema deve estar disponível pelo menos 99.95% do tempo em um mês.Latência
: 95% das requisições devem ter latência menor ou igual a 200ms.Erro/Taxa de Sucesso
: Pelo menos 99.9% das requisições devem retornar códigos 2xx.Taxa de Falhas
: O percentual de erros 5xx deve ser menor ou igual a 0.5% por semana.Throughput
: O sistema deve processar pelo menos 10.000 RPS durante picos de uso.Capacidade
: A utilização de CPU/memória não deve exceder 80% durante 99% do tempo.Saturação
: As filas de mensagens não devem exceder 90% de utilização por mais de 5 minutos consecutivos.Retentividade
: Pelo menos 75% dos usuários devem voltar a usar o serviço no prazo de 30 dias.
SLA (Service Level Agreements)
Os SLA são acordo de níveis de serviço. São contratos formais entre prestadores de serviço e seus clientes que detalha todo o serviço prometido, os padrões de desempenho e as consequências caso o prometido não seja cumprido.
Na maioria das vezes quando o objetivo não é atingido envolve pagamento de multa, desconto na fatura e até quebra de contrato.
É comum que o SLA não seja o mesmo valor do SLO para que exista uma folga para trabalhar e uma margem de erro.
Error Budget
O Error Budget é a quantidade de falhas ou indisponibilidades aceitáveis que um sistema pode ter em um determinado período de tempo sem violar o SLO.
Por exemplo:
SLO de disponibilidade: 99.9%. Tempo total em um mês: 30 dias = 43.200 minutos. Tempo permitido de indisponibilidade (Error Budget): 43.200 x (1 - 0.999) = 43.2 minutos.
Neste caso, o sistema pode estar indisponível por até 43.2 minutos no mês sem quebrar o SLO. Ou seja é a falha folga que temos.
Esse valor incentiva o equilibrio entre inovação e estabilidade. Quando há possibilidade, pode-se priorizar a entrega de novas funcionalidades mesmo que aumente o risco de instalabilidade. É um jeito de ajudar a tomar decisões baseado em dados e definir limites operacionais.
Saber definir SLIs E SLOs é importante no papel do DevOps e pode ser um grande diferencial.
Não adinta começar com muito SLIs e SLOs, defina poucos e aqueles que são mais importante para o projeto, os stackholders e os clientes. Ao longo do caminho, conhecendo melhor a capacidade da equipe, os números devem ser cada vez mais desafiador e eles devem ser de responsabilidade de TODOS.
A dica é tentar iniciar com SLOs menores e ir ajustando e nunca prometer um SLA que você não possa cumprir.