Scegliere gli obiettivi del livello di servizio (SLO)

Last reviewed 2024-03-29 UTC

Questo documento nel framework dell'architettura Google Cloud definisce il modo in cui l'esperienza utente definisce l'affidabilità e come scegliere gli obiettivi del livello di servizio appropriati per raggiungere quel livello di affidabilità. Questo documento si basa sui concetti definiti in Componenti degli SLO.

La cultura della Site Reliability Engineering (SRE) apprezza i servizi affidabili e la felicità dei clienti (o soddisfazione del cliente). Senza un livello di servizio definito e un metodo per raccogliere le metriche, è difficile (se non impossibile) determinare dove e quanto investire per i miglioramenti.

La metrica principale che utilizzi per misurare il livello di servizio è l'obiettivo del livello di servizio (SLO). Uno SLO è costituito dai seguenti valori:

  • Un indicatore del livello del servizio (SLI): una metrica relativa a un aspetto specifico del servizio, come descritto nella sezione Scegliere gli SLI.
  • Durata: la finestra in cui viene misurato lo SLI. Può trattarsi di un evento basato sul calendario o con una finestra temporale continua.
  • Un target: il valore (o l'intervallo di valori) che lo SLI deve soddisfare nella durata specificata in un servizio integro. ad esempio la percentuale di eventi validi rispetto al totale degli eventi che ti aspetti vengano soddisfatti dal servizio, come il 99, 9%.

Scegliere gli SLO giusti per il tuo servizio è un processo. Per prima cosa, definisci i percorsi dell'utente che definiscono l'affidabilità e, in definitiva, i tuoi SLO. Gli SLO che scegli devono misurare l'intero sistema e bilanciare al contempo le esigenze dello sviluppo delle funzionalità con la stabilità operativa. Dopo aver scelto gli SLO, devi migliorarli in modo iterativo e gestirli utilizzando i budget di errore.

Definisci i percorsi degli utenti

Idealmente, i tuoi SLI e SLO sono basati su percorso dell'utente critico (CUJ). I CUJ prendono in considerazione gli obiettivi degli utenti e il modo in cui il tuo servizio li aiutano a raggiungerli. Puoi definire un CUJ senza considerare i confini del servizio. Quando viene soddisfatto un CUJ, il cliente è soddisfatto e questo è un segnale che il servizio è andato a buon fine.

La soddisfazione o l'insoddisfazione dei clienti in merito implica l'affidabilità ed è la caratteristica più importante di qualsiasi servizio.

Pertanto, imposta lo SLO in modo che sia sufficientemente alto da far sì che la maggior parte degli utenti sia soddisfatta del servizio e non oltre. Proprio come la disponibilità del 100% non è l'obiettivo giusto, aggiungere più "nove" ai tuoi SLO diventa rapidamente costoso e potrebbe non essere nemmeno importante per il cliente.

Per l'uptime e altre metriche fondamentali, punta a un target inferiore al 100%, ma vicino a questo. Valutare il livello minimo di disponibilità e prestazioni dei servizi richiesti. Non impostare obiettivi in base a livelli contrattuali esterni.

Utilizzare i CUJ per sviluppare gli SLO

Scegli i CUJ più importanti della tua azienda e segui questi passaggi per sviluppare gli SLO:

  1. Scegli una specifica SLI (ad esempio disponibilità o aggiornamento).
  2. Decidi come implementare la specifica SLI.
  3. Assicurati che il tuo piano copra tutti i CUJ.
  4. Imposta gli SLO in base alle prestazioni o alle esigenze aziendali precedenti.

I CUJ non devono essere vincolati a un singolo servizio né a un singolo team di sviluppo o organizzazione. Il tuo servizio può dipendere da decine o più altri servizi. Inoltre, potresti aspettarti che questi servizi operino al 99,5%. Tuttavia, se le prestazioni end-to-end (l'intero sistema) non vengono monitorate, l'esecuzione di un servizio affidabile è difficile.

Definisci il target e la durata

La definizione di target e durata (consulta la definizione precedente di SLO) può essere difficile. Un modo per iniziare il processo è identificare gli SLI e registrarli nel tempo. Ricorda, uno SLO non deve essere perfetto fin dall'inizio. Esegui l'iterazione del tuo SLO per assicurarti che sia in linea con la soddisfazione dei clienti e soddisfi le tue esigenze aziendali.

Man mano che monitori la conformità dello SLO durante eventi come deployment, interruzioni e pattern di traffico giornalieri, otterrai insight sul target. Grazie a questi approfondimenti, sarà più chiaro cosa è positivo, negativo o accettabile per i tuoi target e la tua durata.

Lo sviluppo di funzionalità, i miglioramenti del codice, gli upgrade dell'hardware e altre attività di manutenzione possono contribuire a rendere il servizio più affidabile. La possibilità di apportare queste modifiche piccole e frequenti consente di offrire funzionalità più rapidamente e di una qualità superiore. Tuttavia, la frequenza con cui il servizio cambia anche l'affidabilità. Gli obiettivi di affidabilità raggiungibili definiscono un ritmo e un ambito di modifica (chiamati velocità delle funzionalità) che i clienti possono tollerare e da cui possono trarre vantaggio.

Se non puoi misurare l'esperienza del cliente e definire i relativi obiettivi, puoi ricorrere a sorgenti esterne e all'analisi dei benchmark. Se non esiste un benchmark paragonabile, misura la customer experience, anche se non sei ancora in grado di definire obiettivi. Nel tempo, puoi raggiungere una soglia ragionevole di soddisfazione dei clienti. Questa soglia è il tuo SLO.

Informazioni sull'intero sistema

Il tuo servizio potrebbe esistere in una lunga linea di servizi con elaborazione sia upstream che downstream. Misurare le prestazioni di un sistema distribuito a pezzetti (servizio per servizio) non riflette accuratamente l'esperienza del cliente e potrebbe causare un'interpretazione troppo sensibile.

Dovresti invece misurare le prestazioni rispetto allo SLO nel frontend del processo per comprendere l'esperienza degli utenti. L'utente non è preoccupato per un errore di un componente che causa l'esito negativo di una query se viene effettuata un nuovo tentativo automatico e corretto.

Se sono presenti servizi interni condivisi, ogni servizio può misurare le prestazioni separatamente rispetto allo SLO associato, con i servizi rivolti agli utenti che agiscono come i loro clienti. Gestisci questi SLO separatamente.

È possibile creare un servizio ad alta disponibilità (ad esempio il 99,99%) in aggiunta a un servizio meno disponibile (ad esempio il 99,9%) utilizzando fattori di resilienza come i tentativi intelligenti, la memorizzazione nella cache e la coda. Chiunque abbia una conoscenza pratica delle statistiche dovrebbe essere in grado di leggere e comprendere il tuo SLO senza conoscere il servizio sottostante o il layout organizzativo, come descritto nella legge di Conway.

Scegli gli SLO corretti

Esiste una tensione naturale tra la velocità di sviluppo dei prodotti e la stabilità operativa. Più cambi impianto, maggiori sono le probabilità che si rompa. Gli strumenti di monitoraggio e osservabilità sono fondamentali per la stabilità operativa man mano che aumenta la velocità delle funzionalità. Questi strumenti sono noti come strumenti di gestione delle prestazioni delle applicazioni (APM) e possono essere utilizzati per impostare gli SLO.

Se definito correttamente, uno SLO aiuta i team a prendere decisioni operative basate sui dati che aumentano la velocità di sviluppo senza sacrificare la stabilità. Lo SLO può inoltre allineare i team operativi e di sviluppo in base a un unico obiettivo concordato. La condivisione di un singolo obiettivo allevia la tensione naturale menzionata in precedenza: l'obiettivo del team di sviluppo di creare e iterare i prodotti e l'obiettivo del team operativo di mantenere l'integrità del sistema.

Utilizza questo documento e altri documenti sull'affidabilità nel framework dell'architettura per comprendere e sviluppare gli SLO. Dopo aver letto e compreso questi articoli, passa alle informazioni più dettagliate sugli SLO (e altre pratiche SRE) in The SRE Book (Il libro SRE) e The SRE Workbook.

Usa SLO interni rigorosi

È buona norma avere SLO interni più rigidi rispetto agli SLA esterni. Poiché le violazioni dello SLA (accordo sul livello del servizio) tendono a richiedere l'emissione di un credito finanziario o rimborsi ai clienti, è consigliabile risolvere i problemi prima che abbiano un impatto finanziario.

Consigliamo di utilizzare questi SLO interni più rigidi con un processo retrospettivo senza colpa e una revisione degli incidenti. Per maggiori informazioni, consulta Creare un processo collaborativo di gestione degli incidenti nella categoria di affidabilità del Centro architetture.

Migliora gli SLO in modo iterativo

Gli SLO non devono essere stabili. Rivedi gli SLO periodicamente, ogni tre mesi o almeno una volta all'anno, e verifica che rispecchino accuratamente la soddisfazione degli utenti e correlano alle interruzioni del servizio. Assicurati che coprano le esigenze aziendali attuali e i nuovi percorsi critici degli utenti. Rivedere e migliorare i tuoi SLO in base alle tue esigenze dopo queste revisioni.

Utilizza i budget di errore per gestire la velocità di sviluppo

I budget di errore indicano se il servizio è più o meno affidabile di quello necessario per un periodo di tempo specifico. I budget di errore vengono calcolati come 100% (SLO) per un periodo di tempo, ad esempio 30 giorni.

Quando il budget di errore contiene ancora della capacità, puoi continuare ad implementare miglioramenti o nuove funzionalità rapidamente. Quando il budget di errore è vicino a zero, riduci o blocca le modifiche ai servizi e investi in risorse ingegneristiche per migliorare le funzionalità di affidabilità.

L'osservabilità di Google Cloud include il monitoraggio degli SLO per ridurre al minimo l'impegno per la configurazione di SLO e budget di errore. La suite operativa include una Graphic User Interface che consente di configurare manualmente gli SLO, un'API per la configurazione programmatica degli SLO e dashboard integrate per monitorare la burn rate del budget di errore. Per ulteriori informazioni, consulta la sezione Creazione di uno SLO.

Riepilogo dei suggerimenti SLO

  • Definire e misurare gli SLI incentrati sul cliente, come la disponibilità o la latenza del servizio.
  • Definisci un budget di errore incentrato sul cliente più rigoroso rispetto allo SLA (accordo sul livello del servizio) esterno. Includere le conseguenze per le violazioni, ad esempio il blocco della produzione.
  • Configura gli SLI di latenza per acquisire valori anomali, come il 90° o il 99° percentile, per rilevare le risposte più lente.
  • Esamina gli SLO almeno una volta l'anno e conferma che siano correlati bene alla soddisfazione degli utenti e alle interruzioni del servizio.

Passaggi successivi