Cos'è uno SLO? Guida con template Excel e Google Sheets

Riassunto

Cos'è uno SLO? Un service level objective è un target di affidabilità scritto come numero su un periodo, come il 99,9% di richieste riuscite in 30 giorni. Lo spazio tra il 100% e il tuo target è l'error budget: 43,2 minuti al mese al 99,9%. Questa guida spiega SLI, SLO e SLA, poi ti dà le formule per Excel e Google Sheets per tracciare budget, burn rate e status di rilascio.

Golden retriever sitting next to a laptop showing a green availability chart

Cos'è uno SLO? Un service level objective è un obiettivo di affidabilità che stabilisci per un servizio, scritto come un numero su un periodo di tempo. "Il 99,9% delle richieste ha successo in 30 giorni" è un SLO. Dice al tuo team quanto guasto è accettabile prima di smettere di rilasciare e cominciare a riparare. La matematica dietro è una divisione semplice, ecco perché un foglio di calcolo la gestisce benissimo. Biscuit ha già trovato le formule. Ora tocca a te portare i numeri.

I tre acronimi che continui a vedere, spiegati bene

SLI, SLO, SLA. La gente li confonde nelle riunioni, quindi ecco la versione breve.

Il test più pulito viene dal libro SRE di Google: chiediti cosa succede se non raggiungi l'obiettivo. Se non succede niente dal punto di vista contrattuale, stai guardando un SLO, non un SLA. Il tuo SLO dovrebbe essere più stringente di qualsiasi SLA che hai firmato, così ricevi un avviso prima che un cliente riceva un rimborso.

In termini di foglio di calcolo: l'SLI è una colonna di misurazioni, l'SLO è una cella con l'obiettivo, e l'SLA è un PDF che qualcuno ufficio legale conserva gelosamente.

Perché il 99,9% e il 99,99% sono promesse molto diverse

Ogni nove in più riduce il tempo di inattività consentito di un fattore dieci. In un mese di 30 giorni (43.200 minuti), ecco cosa lascia ogni obiettivo:

Quest'ultima è la trappola. Quattro minuti al mese significa che un umano non riesce nemmeno a finire di leggere l'avviso prima che il budget sia esaurito. La maggior parte degli strumenti interni, dashboard e piccoli prodotti SaaS non ne ha bisogno, e inseguirlo costa soldi veri in ridondanza e ore on-call.

Salta il 99,99% a meno che un cliente non ti stia pagando specificamente per averlo. Anche il consiglio di Google è diretto: inizia con un obiettivo che puoi poi stringere, perché uno troppo rigido che devi poi rilassare insegna a tutti a ignorare il numero.

Close-up of a fuel gauge needle, a picture of an error budget being spent

L'error budget: il numero su cui il tuo team discute davvero

L'error budget è tutto quello che l'SLO lascia di avanzo. Obiettivo 99,9%, quindi il budget è 0,1%. In 30 giorni, sono 43,2 minuti di tempo "cattivo" che puoi spendere.

Pensalo come un indicatore di carburante. I rilasci rischiosi bruciano carburante. Una migrazione pessima del database brucia carburante. Un'interruzione alle 3 di mattina brucia un sacco di carburante. Quando il serbatoio è pieno, rilascia più veloce. Quando è vuoto, smetti di aggiungere funzionalità e inizia a riparare l'affidabilità.

La stessa politica di Google è concreta al riguardo: se un servizio brucia il suo budget in una finestra di quattro settimane, tutti i cambiamenti si fermano eccetto i fix P0 e le patch di sicurezza finché il servizio non è di nuovo dentro il suo SLO. L'error budget è uno strumento di negoziazione, non una punizione. Permette a un product manager e a un ingegnere di discutere dalla stessa cella invece che da sensazioni istintive.

Vale la pena farci caso se hai più di un team che tocca lo stesso servizio. È eccessivo se sei un founder da solo con una landing page e un form di contatto.

Scegliere un SLI che i tuoi utenti riconoscerebbero

Gli SLI migliori descrivono un momento che una persona noterebbe. Tre coprono la maggior parte dei servizi:

Scrivi l'SLI come una frazione: eventi buoni diviso eventi validi. Quel singolo abito rende ogni SLO calcolabile in una sola cella, e ti costringe a decidere cosa conta come "buono" prima dell'incidente, non durante.

Per la finestra, 30 giorni rolling è la scelta usuale. Un mese di calendario è più semplice da riportare ma resetta il budget il primo del mese, il che attira i team a fare rilasci rischiosi alla fine del mese. In un foglio, una finestra rolling significa solo filtrare la scheda Incidents agli ultimi 30 giorni con SUMIFS(Incidents!C:C,Incidents!A:A,">="&TODAY()-30).

Costruisci un tracker SLO in Google Sheets o Excel in 10 minuti

Non hai bisogno di una piattaforma di monitoraggio per iniziare. Hai bisogno di due schede: Incidents e SLO.

Sulla scheda Incidents, registra ogni interruzione con un'ora di inizio nella colonna A, un'ora di fine nella colonna B, e la durata nella colonna C:

=(B2-A2)*24*60

Funziona sia in Excel che in Sheets, tutte le versioni.

Ora la scheda SLO. Metti queste etichette nella colonna A e le formule nella colonna B:

B1: 0.999                         (il tuo obiettivo SLO)
B2: 30                            (finestra in giorni)
B3: =B2*24*60                     (total minutes in the window)
B4: =B3*(1-B1)                    (error budget in minutes)
B5: =SUM(Incidents!C2:C)          (downtime so far)
B6: =1-B5/B3                      (actual availability)
B7: =B4-B5                        (budget left, in minutes)
B8: =B5/B4                        (share of budget burned)

Con un obiettivo 99,9%, B3 ritorna 43200 e B4 ritorna 43,2. Registra un'interruzione di 12 minuti e B8 mostra il 27,8%. Ecco cosa dà in una vera cella.

Una nota su C2:C in B5: la gamma aperta è la sintassi di Sheets. In Excel, usa una gamma fissa come Incidents!C2:C500 o un riferimento a tabella.

Aggiungi una cella di stato in modo che nessuno debba leggere il numero:

=IF(B8>=1,"Freeze releases",IF(B8>=0.5,"Careful","Ship it"))

Scegli le tue soglie. Cinquanta per cento è un'ipotesi iniziale, non una legge della fisica.

Bloccato sulla sintassi per la tua versione di questo foglio? Descrivila in italiano semplice e lascia che lo strumento la scriva.

Contare le richieste invece dei minuti

Il tracciamento basato sul tempo è facile da spiegare ma grezzo. Se il tuo servizio è "inattivo" per 5 minuti alle 4 del mattino quando nessuno è online, fa meno male di 5 minuti a mezzogiorno. La maggior parte dei team seri definisce l'SLI per richieste invece.

Incolla un'esportazione del tuo log di richieste in una scheda, con il codice di stato HTTP nella colonna B. Poi:

=1-COUNTIF(B2:B,">=500")/COUNTA(B2:B)

Il risultato è il tuo SLI di disponibilità come frazione. Confrontalo con la cella di obiettivo e hai il SLO intero in una riga. Excel 2016 e 365 accettano entrambi COUNTIF; basta scambiare B2:B con una gamma limitata.

Due avvertimenti onesti. I fogli di calcolo si bloccano su milioni di righe, quindi esporta i totali giornalieri invece dei log raw. E una risposta 4xx è solitamente l'errore dell'utente, non la tua interruzione, quindi decidi quella regola una volta e scrivila.

Notebook, pencil, coffee and a stopwatch laid out for tracking uptime by hand

Burn rate: la formula che ti avvisa prima che sia troppo tardi

Sapere che hai bruciato il 27,8% del tuo budget è bello. Sapere che lo stai bruciando più veloce del calendario è utile. Quel rapporto è il burn rate.

=B8/(B9/B2)

Un burn rate di 1 significa che finirai la finestra con esattamente zero budget rimasto. Sopra 1, stai andando verso un congelamento. Sotto 1, hai spazio. Se sei a 10 giorni in una finestra di 30 giorni e hai già bruciato il 60%, il burn rate è 1,8. Quel è il numero da mettere su uno schermo.

È la stessa idea che i grandi strumenti di monitoraggio usano per gli avvisi di burn rate. Un foglio non ti chiamerà alle 3 di mattina, però, quindi trattalo come uno strato di reporting, non un allarme.

Ecco un esempio reale con numeri veri. Il tuo SLO è 99,9% in 30 giorni, quindi il budget è 43,2 minuti. Giorno 1 a 8: un rilascio cattivo porta la pagina di checkout giù per 14 minuti. È il 32,4% del budget consumato in un quarto della finestra, un burn rate di circa 1,2. Niente è in fiamme, ma il foglio ora dice "Careful", e la prossima migrazione rischiosa riceve una seconda occhiata. Giorno 15: un'interruzione del provider aggiunge 30 minuti. Totale 44 minuti, 101,9% bruciato. La cella di stato passa a "Freeze releases", e la conversazione sulle priorità accade con un numero sul tavolo invece che una sensazione.

Questo è il valore intero dell'esercizio. Non i nove, ma la cella condivisa che tutti possono indicare.

Quando il foglio di calcolo non basta più

Un tracker come questo funziona per uno o due servizi e una revisione settimanale. Si rompe quando hai dozzine di servizi, hai bisogno di raccolta dati automatica, o vuoi avvisi che scattano in minuti piuttosto che alla prossima riunione del lunedì.

È ora di guardare uno strumento di observability adeguato. Datadog e Grafana entrambi hanno funzionalità SLO native che tirano l'SLI direttamente dalle tue metriche e disegnano il budget per te.

Scegli Grafana se vuoi open source e stai già usando Prometheus. Scegli Datadog se preferisci pagare per non mantenere niente tu stesso. In entrambi i casi, mantieni il foglio in giro per il deck di revisione mensile, perché chiunque nella stanza può aprirlo e nessuno ha bisogno di un login presso un fornitore.

Se vuoi aiuto a stilare una prima serie di SLI per un servizio, un assistente generico è un partner di brainstorming decente. Verifica ogni numero che ti dà, perché sarà felice di inventare un obiettivo plausibile.

Gli errori che rendono un SLO inutile, e cosa fare lunedì

Alcuni pattern che Biscuit ha visto finire male:

Golden retriever asleep in a quiet home office at night while the dashboard stays green

Ora la parte del lunedì. Scegli un servizio. Scrivi uno SLI in una sola frase che un non-ingegnere potrebbe seguire. Imposta un obiettivo lasco, 99,5% o 99,9%. Costruisci le due schede di cui sopra, registra gli incidenti dell'ultimo mese, e vedi cosa dice il budget.

Se la risposta è "abbiamo bruciato il 300% di esso", hai appena scoperto perché tutti si sentono stanchi. Se la risposta è "abbiamo bruciato il 4%", stringi l'obiettivo o rilascia più veloce. In ogni caso, ora hai un numero di cui discutere invece di una sensazione.

Brav'attore. Ora vai a registrare quei incidenti.

Domande frequenti

Cos'è un SLO in parole semplici?
Un SLO (service level objective) è un target di affidabilità per un servizio, come "il 99,9% delle richieste ha successo in 30 giorni". Trasforma un obiettivo vago come "essere affidabile" in un numero che il tuo team può misurare e tracciare.
Qual è la differenza tra SLO e SLA?
Un SLO è un target interno. Un SLA è un contratto con conseguenze, solitamente rimborsi o crediti, se il target non è raggiunto. Se non raggiungere il numero non ha sanzioni contrattuali, è un SLO. Imposta il tuo SLO più stringente del tuo SLA.
Cos'è un error budget?
L'error budget è il margine di guasto che l'SLO consente. Un SLO del 99,9% lascia un budget dello 0,1%, che è 43,2 minuti di downtime in 30 giorni. I team lo spendono su incidenti e rilasci rischiosi, e rallentano quando finisce.
Come calcoli un SLO in Excel o Google Sheets?
Calcola i minuti totali nella finestra (giorni*24*60), moltiplicalo per (1 - target) per ottenere il budget, poi sottrai il downtime registrato. Per SLI basati su richieste, dividi le buone richieste per il totale, ad esempio con COUNTIFS e COUNTA.
Qual è un buon SLO target?
Inizia lasco, poi stringi. Il 99,5% o 99,9% si adatta alla maggior parte degli strumenti interni e piccoli prodotti. Il 99,99% lascia circa 4 minuti di downtime al mese ed è raramente utile a meno che un cliente non lo paghi.
Quanti SLO dovrebbe avere un servizio?
Due o tre che mappano quello che gli utenti sentono realmente, come disponibilità e latenza. Più di questo e nessuno ricorda quale guida le decisioni.