Esplorare la resilienza con la progettazione dell'affidabilità del sito

Completato

Uno degli obiettivi principali di DevOps è aumentare l'affidabilità e l'efficienza della distribuzione del software attraverso l'integrazione tra le procedure di sviluppo e operazioni e attraverso la collaborazione tra i team di sviluppo e operazioni. In questo contesto DevOps condivide i propri obiettivi e principi con Site Reliability Engineering (SRE). Combinandole, le organizzazioni che sviluppano e mantengono soluzioni software (come quella descritta nello scenario di esempio di questo modulo), saranno in grado di aumentare la resilienza e la disponibilità. Per comprendere meglio come eseguire questa operazione, questa unità descrive la correlazione tra SRE e DevOps e fornisce indicazioni generali sull'implementazione di SRE.

Qual è la correlazione tra SRE e DevOps?

SRE, pioniere di Google nei primi anni '2000 ma ampiamente adottato da allora, promuove l'applicazione di pratiche di ingegneria software alle attività operative. Queste procedure guidano il processo di compilazione, distribuzione e funzionamento di sistemi software affidabili, scalabili e altamente efficienti. Probabilmente si è notato che DevOps offre indicazioni simili. Ciò che distingue SRE da DevOps è il suo obiettivo sulla progettazione dell'affidabilità . Il termine engineering trasmette l’idea di un utilizzo di pratiche specifiche ben definite per il raggiungimento dei suoi obiettivi.

Come implementare SRE?

L'implementazione di SRE richiede l'esecuzione di queste procedure ben definite. Tuttavia, le implementazioni di SRE potrebbero comportare anche cambiamenti culturali e organizzativi più ampi. Per iniziare, esaminare i concetti di base di SRE e definirli in base ai propri requisiti specifici. La SRE si basa sulla definizione esplicita e sulla misurazione dell'affidabilità attraverso obiettivi del livello di servizio (SLO) che determinano il livello accettabile di caratteristiche del servizio, come disponibilità, latenza o percentuali di errore. gli indicatori del livello di servizio (SLI) vengono usati per misurare diversi aspetti del comportamento del servizio che influiscono sull'affidabilità. I contratti di servizio (SLA) fanno riferimento agli SLI per definire le prestazioni accettabili. Gli SLA fungono da base per gli SLO.

SRE introduce anche il concetto di budget di errore, che rappresenta il grado accettabile di riduzione del livello di servizio entro un intervallo di tempo specificato. L'intenzione alla base di questo concetto è ottimizzare, invece di massimizzare l'affidabilità. Questo è importante per due motivi:

  • L'aumento dell'affidabilità si traduce in un maggiore sforzo e in un costo più elevato.
  • Il ritmo elevato delle modifiche tende a essere dirompente e, di conseguenza, potrebbe influire negativamente sull'affidabilità.

L'uso dei budget degli errori facilita la ricerca di un equilibrio tra affidabilità, costo e ritmo delle modifiche.

I passaggi iniziali dell'implementazione devono includere la definizione degli obiettivi di livello di servizio (SLO), l'istituzione degli indicatori di livello di servizio (SLI) e degli accordi sul livello di servizio (SLA), e la configurazione dei budget degli errori. I passaggi rimanenti includono:

  • L'applicazione dell'automazione durante il processo di distribuzione del software (anche se l'obiettivo di SRE è l'automazione delle attività operative, ad esempio il ridimensionamento, il monitoraggio e la risposta agli eventi imprevisti).
  • Configurazione di processi completi di monitoraggio e osservabilità.
  • Definizione dei processi di gestione degli eventi imprevisti.
  • Definizione dei processi di gestione delle modifiche.
  • Pianificazione proattiva delle esigenze di capacità.
  • Promuovere l'apprendimento continuo e il miglioramento continuo tramite revisioni regolari post-evento imprevisto e analisi della causa radice. Esaminare regolarmente gli SLO, i budget degli errori e le procedure operative.
  • Integrazione di procedure SRE con i processi di sviluppo.
  • Promuovere la comunicazione tra il team SRE e altri stakeholder.