Scegli gli obiettivi del livello di servizio (SLO)

Last reviewed 2024-03-29 UTC

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

La cultura di Site Reliability Engineering (SRE) valorizza i servizi affidabili e la soddisfazione del cliente (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 utilizzata 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 di un aspetto specifico del servizio, come descritto in Scegliere gli SLI.
  • Durata: la finestra in cui viene misurato l'SLI. Può essere basata su un periodo di tempo o su una finestra mobile.
  • Un target: il valore (o l'intervallo di valori) che lo SLI deve raggiungere nel periodo di tempo specificato in un servizio in buono stato. Ad esempio, la percentuale di eventi validi rispetto al totale degli eventi che prevedi che il tuo servizio debba soddisfare, ad esempio il 99,9%.

La scelta degli SLO giusti per il tuo servizio è un processo. Inizia definendo i percorsi degli utenti che definiscono l'affidabilità e, in ultima analisi, i tuoi SLO. Gli SLO che scegli devono misurare l'intero sistema, bilanciando al contempo le esigenze di 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

Gli SLI e gli SLO dovrebbero idealmente essere basati sui percorsi dell'utente critici (CUJ). I CUJtengono conto degli obiettivi degli utenti e del modo in cui il tuo servizio li aiuta a raggiungerli. Definisci un CUJ senza considerare i confini del servizio. Quando viene soddisfatto un CUJ, il cliente è soddisfatto e questo è un indicatore di un servizio efficace.

La soddisfazione del cliente, o la sua insoddisfazione, determina l'affidabilità ed è la funzionalità più importante di qualsiasi servizio.

Pertanto, imposta lo SLO sufficientemente alto da soddisfare la maggior parte degli utenti, ma non di più. Proprio come la disponibilità al 100% non è l'obiettivo giusto, aggiungere più "9" agli SLO diventa rapidamente costoso e potrebbe non essere nemmeno importante per il cliente.

Per l'uptime e altre metriche vitali, scegli un target inferiore al 100%, ma vicino. Valuta il livello minimo di prestazioni e disponibilità del servizio richiesto. Non impostare i target 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 al rendimento precedente o alle esigenze dell'attività.

I CUJ non devono essere limitati a un singolo servizio né a un singolo team di sviluppo o organizzazione. Il tuo servizio potrebbe dipendere da decine o più altri servizi. Inoltre, potresti aspettarti che questi servizi funzionino al 99,5%. Tuttavia, se il rendimento end-to-end (dell'intero sistema) non viene monitorato, è difficile gestire un servizio affidabile.

Definisci il target e la durata

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

Monitorando la conformità allo SLO durante eventi come implementazioni, interruzioni e modelli di traffico giornaliero, otterrai informazioni sul target. Questi approfondimenti ti aiuteranno a capire meglio cosa è buono, cattivo o accettabile per i tuoi target e le tue durate.

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

Se non riesci a misurare l'esperienza del cliente e a definire gli obiettivi in base a questa, puoi rivolgerti a fonti esterne e all'analisi di benchmark. Se non esiste un benchmark paragonabile, misura la customer experience, anche se non puoi ancora definire gli obiettivi. Nel tempo, puoi raggiungere una soglia ragionevole di soddisfazione del cliente. Questa soglia è il tuo SLO.

Comprendere l'intero sistema

Il tuo servizio potrebbe esistere in una lunga serie di servizi con elaborazione sia a monte che a valle. La misurazione del rendimento di un sistema distribuito in modo frammentario (servizio per servizio) non riflette con precisione l'esperienza del cliente e potrebbe causare un'interpretazione eccessivamente sensibile.

Devi invece misurare le prestazioni rispetto allo SLO nella parte frontend del processo per capire cosa vivono gli utenti. L'utente non si preoccupa di un guasto del componente che causa il fallimento di una query se la query viene ripetuta automaticamente e con esito positivo.

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

È possibile creare un servizio ad alta disponibilità (ad es.99,99%) su un servizio meno disponibile (ad es.99,9%) utilizzando fattori di resilienza come i tentativi intelligenti, la memorizzazione nella cache e le code. Chiunque abbia una conoscenza pratica delle statistiche dovrebbe essere in grado di leggere e comprendere l'obiettivo di livello del servizio senza conoscere il servizio o il layout organizzativo sottostante, come descritto nella legge di Conway.

Scegli gli SLO corretti

Esiste una tensione naturale tra la velocità di sviluppo del prodotto e la stabilitá operativa. Più modifichi il sistema, più è probabile che si rompa. Gli strumenti di monitoraggio e osservabilità sono fondamentali per la stabilità operativa man mano che aumenti la velocità di implementazione delle funzionalità. Questi strumenti sono noti come strumenti di gestione delle prestazioni delle applicazioni (APM) e possono essere utilizzati anche 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à. L'SLO può anche allineare i team di sviluppo e delle operazioni su un unico obiettivo concordato. La condivisione di un unico obiettivo allevia la tensione naturale menzionata in precedenza: l'obiettivo del team di sviluppo di creare e perfezionare i prodotti e l'obiettivo del team operativo di mantenere l'integrità del sistema.

Utilizza questo documento e altri documenti sull'affidabilità nell'Architecture Framework per comprendere e sviluppare gli SLO. Dopo aver letto e compreso questi articoli, passa a informazioni più dettagliate sugli SLO (e su altre pratiche SRE) nel libro SRE e nel foglio di lavoro SRE.

Utilizza SLO interni rigidi

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

Consigliamo di utilizzare questi SLO interni più rigidi con un processo di revisione postuma senza responsabilità e una revisione degli incidenti. Per scoprire di più, consulta la sezione Creare un processo collaborativo di gestione degli incidenti.

Migliora gli SLO in modo iterativo

Gli SLO non devono essere invariati. Rivedi periodicamente gli SLO, trimestralmente o almeno una volta all'anno, e verifica che riflettano con precisione la soddisfazione degli utenti e siano correlati alle interruzioni del servizio. Assicurati che coprano le esigenze attuali dell'attività e eventuali nuovi percorsi degli utenti critici. Dopo queste revisioni, rivedi e aumenta gli SLO in base alle necessità.

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

I budget di errore indicano se il tuo servizio è più o meno affidabile di quanto necessario per un determinato intervallo di tempo. I budget di errore vengono calcolati come 100% - SLO per un determinato periodo di tempo, ad esempio 30 giorni.

Quando rimane della capacità nel budget di errore, puoi continuare a lanciare rapidamente miglioramenti o nuove funzionalità. Quando il budget di errore è vicino allo zero, rallenta o blocca le modifiche ai servizi e investi risorse di ingegneria per migliorare le funzionalità di affidabilità.

Google Cloud Observability include il monitoraggio degli SLO per ridurre al minimo lo sforzo necessario per configurare gli SLO e i budget di errore. La suite operativa include un'interfaccia utente grafica per aiutarti a 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 Creare un SLO.

Riepilogo dei consigli per gli SLO

  • Definisci e misura 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 esterno. Includi le conseguenze delle violazioni, come la sospensione della produzione.
  • Configura gli SLI di latenza per acquisire valori outlier, come il 90° o il 99° percentile, per rilevare le risposte più lente.
  • Esamina gli SLO almeno una volta all'anno e verifica che siano ben correlati alla soddisfazione degli utenti e alle interruzioni del servizio.

Passaggi successivi