Pular para o conteúdo

SLO e orçamento de erro

99,9% é uma promessa com uma sobra: as falhas que ela permite. O orçamento transforma 'dá para arriscar?' em conta.

Um SLO (objetivo de nível de serviço) diz quanto do tempo o serviço precisa estar certo — 99,9% dos pedidos respondidos com sucesso, por exemplo. O que sobra, 0,1%, é o orçamento de erro: as falhas que o objetivo permite. Com um milhão de pedidos, mil podem falhar.

dataforge
adopt Arcane.Observar as O

o := O.orcamento(0.999, 1000000, 400)
assert o["permitidas"] is 1000.0
assert o["consumido"] is 0.4            // quarenta por cento já foi
assert o["restante"] is 0.6
assert not o["esgotado"]

apertado := O.orcamento(0.999, 1000000, 1200)
assert apertado["esgotado"]             // passou do combinado

O que o orçamento decide#

RestanteO time
muitopode arriscar: deploy na sexta, migração, experimento
poucodesacelera: só correção, com mais revisão
esgotadocongela o que não é confiabilidade, até o orçamento voltar

É isso que o torna útil: a discussão "este deploy é seguro?" deixa de ser opinião contra opinião e passa a ser uma conta que os dois lados aceitaram antes.

A taxa de queima#

O orçamento diz quanto foi gasto; a taxa de queima diz a que velocidade. Queima 1 é gastar o orçamento exatamente no fim da janela do SLO. Queima 14,4 numa hora é gastar 2% de um orçamento de 30 dias em uma hora:

dataforge
adopt Arcane.Observar as O

assert O.queima(0.999, 10000, 10) is 1.0      // o ritmo sustentável
assert O.queima(0.999, 10000, 144) is 14.4    // o limiar clássico: 1,44% de erro
assert O.queima(0.999, 0, 0) is 0.0           // sem tráfego, sem queima