Cos'è la Site Reliability Engineering (SRE)?

L'ingegneria dell'affidabilità del sito (SRE) è la pratica di utilizzare strumenti software per automatizzare le attività dell'infrastruttura IT come la gestione del sistema e il monitoraggio delle applicazioni. Le organizzazioni utilizzano SRE per garantire che le loro applicazioni software rimangano affidabili in presenza di frequenti aggiornamenti da parte dei team di sviluppo. SRE migliora in particolare l'affidabilità dei sistemi software scalabili perché la gestione di un sistema di grandi dimensioni utilizzando software è più sostenibile rispetto alla gestione manuale di centinaia di macchine. 

Perché la Site Reliability Engineering (SRE) è importante?

Con Site Reliability (affidabilità del sito) si intende la stabilità e la qualità del servizio offerto da un'applicazione e reso disponibile agli utenti finali. La manutenzione del software a volte influisce sulla sua affidabilità nel caso in cui i problemi tecnici non vengano rilevati. Nuove modifiche apportate dagli sviluppatori, ad esempio, potrebbero avere un impatto negativo sull'applicazione esistente, causandone l'arresto anomalo per determinati casi d'uso.

Di seguito sono riportati alcuni vantaggi delle pratiche di Site Reliability Engineering (SRE).

Miglioramento della collaborazione

La SRE migliora la collaborazione tra team di sviluppo e operativi. Gli sviluppatori hanno spesso la necessità di apportare rapidamente modifiche a un'applicazione per rilasciare nuove funzionalità o correggere bug critici. D'altra parte, il team operativo deve garantire un'erogazione del servizio senza soluzione di continuità. Grazie alle pratiche di Site Reliability Engineering (SRE), il team operativo può monitorare attentamente ogni aggiornamento e rispondere prontamente a eventuali problemi che emergono a causa di modifiche.

Migliore esperienza dei clienti

Le organizzazioni utilizzano un modello SRE per evitare che gli errori software influiscano sull'esperienza del cliente. Ad esempio, i team software utilizzano gli strumenti SRE per automatizzare il ciclo di vita dello sviluppo del software. La conseguente riduzione degli errori permette al team di dedicarsi allo sviluppo di nuove funzionalità e non esclusivamente alla correzione di bug.

Migliore pianificazione delle operazioni

 I team SRE accettano la reale possibilità che il software presenti degli errori. Grazie a questa consapevolezza, i team possono pianificare una risposta adeguata agli incidenti per ridurre al minimo l'impatto dei tempi di inattività sull'azienda e sugli utenti finali. Può inoltre stimare il costo dei tempi di inattività e comprendere l'impatto degli eventi imprevisti sulle operazioni aziendali. 

Quali sono i principi chiave di Site Reliability Engineering (SRE)?

Di seguito sono riportati alcuni principi chiave di Site Reliability Engineering (SRE).

Monitoraggio delle applicazioni

I team SRE accettano che gli errori facciano parte del processo di implementazione del software. Invece di cercare una soluzione perfetta, monitorano le prestazioni del software in termini di accordi sul livello di servizio (SLA), indicatori dei livello di servizio (SLI) e obiettivi del livello di servizio (SLO). I team osservano e monitorano i parametri prestazionali dopo aver implementato l'applicazione negli ambienti di produzione. 

Implementazione graduale delle modifiche

Le pratiche SRE incoraggiano il rilascio di modifiche piccole ma frequenti per mantenere l'affidabilità del sistema. Gli strumenti di automazione SRE utilizzano processi coerenti e ripetibili per eseguire le seguenti operazioni:

  • Ridurre i rischi dovuti alle modifiche
  • Fornire cicli di feedback per misurare le prestazioni del sistema
  • Aumentare la velocità e l'efficienza dell'implementazione delle modifiche

Automazione per il miglioramento dell'affidabilità

L'approccio SRE utilizza policy e processi che integrano i principi di affidabilità in ogni fase della pipeline di distribuzione. Alcune strategie volte a risolvere automaticamente i problemi includono:

  • Sviluppare controlli di qualità basati sugli obiettivi del livello di servizio per rilevare i problemi in anticipo
  • Automatizzare i test di compilazione utilizzando gli indicatori dei livello di servizio
  • Prendere decisioni architetturali che garantiscano la resilienza del sistema nella fase iniziale dello sviluppo del software

Cos'è l'osservabilità nella Site Reliability Engineering?

Il processo dell'osservabilità consente al team dedicato di affrontare le incertezze nel momento in cui il software viene distribuito agli utenti finali. I team SRE utilizzano diversi strumenti per rilevare i comportamenti anomali nel software e soprattutto per raccogliere informazioni che permettono agli sviluppatori di individuare le cause del problema. L'osservabilità implica la raccolta delle informazioni seguenti tramite gli strumenti SRE. 

Parametri 

I parametri sono valori quantificabili che riflettono le prestazioni di un'applicazione o lo stato di integrità di un sistema. I team SRE utilizzano tali parametri per determinare se il software consuma risorse eccessive o si comporta in modo anomalo.

Log

In risposta a eventi specifici, il software SRE genera informazioni dettagliate e con marche temporali chiamate log. I software engineer utilizzano i registri per comprendere la catena di eventi che ha condotto a un determinato problema. 

Tracce 

Le tracce sono osservazioni del percorso del codice di una funzione specifica in un sistema distribuito. Ad esempio, il check-out di un carrello potrebbe comportare quanto segue:

  • Confronto del prezzo con il database
  • Autenticazione con il gateway di pagamento
  • Invio degli ordini ai fornitori

Le tracce sono costituite da ID, nome e ora. Aiutano gli sviluppatori software a rilevare i problemi di latenza e migliorare le prestazioni del software. 

Cos'è il monitoraggio nella Site Reliability Engineering?

Il monitoraggio è un processo di osservazione di parametri predefiniti in un'applicazione. Gli sviluppatori stabiliscono i parametri fondamentali per determinare lo stato di integrità dell'applicazione e li impostano negli strumenti di monitoraggio. I team SRE raccolgono informazioni fondamentali che riflettono le prestazioni del sistema e le visualizzano in grafici.

Con l'approccio SRE, i team software monitorano questi parametri per ottenere informazioni dettagliate sull'affidabilità del sistema.

Latenza 

La latenza indica il ritardo con cui l'applicazione risponde a una richiesta. L'invio di un modulo su un sito Web, ad esempio, richiede 3 secondi prima di indirizzare gli utenti a una pagina Web di conferma. 

Traffico

Il traffico misura il numero di utenti che accedono contemporaneamente al servizio. Ciò consente ai team software di pianificare di conseguenza le risorse di calcolo in modo da garantire un livello di servizio soddisfacente per tutti gli utenti.

Errori

Un errore indica una condizione in cui l'esecuzione o la distribuzione di un'applicazione non si svolge secondo le aspettative. Quando, ad esempio, una pagina Web non si carica o una transazione non va a buon fine, i team SRE utilizzano strumenti software per tracciare e rispondere automaticamente agli errori nell'applicazione. 

Saturazione

La saturazione indica la capacità in tempo reale dell'applicazione. Un alto livello di saturazione comporta solitamente un peggioramento delle prestazioni. I team SRE monitorano il livello di saturazione e si assicurano che sia inferiore a una determinata soglia. 

Quali sono i parametri chiave per la Site Reliability Engineering?

I team SRE misurano la qualità della distribuzione e dell'affidabilità del servizio utilizzando i parametri seguenti. 

Obiettivi del livello di servizio

Gli obiettivi del livello di servizio (SLO) sono traguardi specifici e quantificabili che si è certi che il software possa raggiungere a un costo ragionevole rispetto ad altri parametri, come: 

  • Tempo di attività o di funzionamento di un sistema
  • Velocità di trasmissione effettiva del sistema
  • Output del sistema
  • Velocità di download o di caricamento dell'applicazione

Un SLO garantisce la consegna al cliente tramite il software. Si pensi, ad esempio, alla configurazione di un tempo di attività di uno SLO al 99,95% per l'app di consegna del cibo di un'azienda.

Indicatori del livello di servizio

Gli indicatori del livello di servizio (SLI) rappresentano le valutazioni effettive del parametro definito da uno SLO. In situazioni reali si possono ottenere valori che corrispondono o differiscono dallo SLO. Ad esempio, l'applicazione è attiva e funzionante per il 99,92% delle volte, un valore inferiore allo SLO promesso. 

Accordi sul livello di servizio

Gli accordi sul livello di servizio (SLA) sono documenti legali che indicano le conseguenze del mancato rispetto di uno o più SLO. Ad esempio, lo SLA afferma che il team tecnico risolverà il problema del cliente entro 24 ore dalla ricezione della segnalazione. Se il team non è riuscito a risolvere il problema entro il periodo specificato, potresti essere obbligato a rimborsare il cliente.

Budget di errore

Il budget di errore rappresenta la tolleranza di non conformità per lo SLO. Un tempo di attività del 99,95% nello SLO significa che il tempo di inattività consentito è dello 0,05%. Se il tempo di inattività del software supera il budget di errore, il team software dedica tutte le risorse e l'attenzione per stabilizzare l'applicazione.

Come funziona la Site Reliability Engineering?

La Site Reliability Engineering (SRE) prevede la partecipazione di tecnici SRE in un team software. Il team SRE imposta i parametri chiave per la SRE e crea un budget di errore in base al livello di tolleranza al rischio del sistema. Se il numero di errori è basso, il team di sviluppo può rilasciare nuove funzionalità. Se gli errori, tuttavia, superano il budget di errore consentito, il team sospende le nuove modifiche e affronta i problemi esistenti.

Ad esempio, un tecnico SRE utilizza un servizio per monitorare i parametri prestazionali e individuare comportamenti anomali delle applicazioni. In caso di problemi con l'applicazione, il team SRE invia un rapporto al team di ingegneria del software. Gli sviluppatori risolvono i casi segnalati e pubblicano l'applicazione aggiornata.

DevOps

DevOps è una cultura del software che abbatte il tradizionale confine tra team di sviluppo e team operativi. Con DevOps, gli sviluppatori e gli ingegneri operativi non lavorano più in silos, ma utilizzano strumenti software per migliorare la collaborazione e seguire i ritmi sostenuti degli aggiornamenti software.

Confronto tra SRE e DevOps

SRE è l'implementazione pratica di DevOps. DevOps propone il fondamento filosofico delle operazioni da eseguire per mantenere intatta la qualità del software nonostante le tempistiche di sviluppo sempre più ridotte. La Site Reliability Engineering propone delle soluzioni sul modo in cui ottenere il successo di DevOps. La SRE garantisce che il team DevOps trovi il giusto equilibrio tra velocità e stabilità. 

Quali sono le responsabilità di un tecnico SRE?

Un tecnico SRE è un esperto IT che utilizza strumenti di automazione per monitorare e osservare l'affidabilità del software nell'ambiente di produzione. I tecnici SRE hanno anche esperienza nella ricerca di errori nel software e nella scrittura di codici per risolverli. In genere si tratta di ex amministratori di sistema o ingegneri operativi con buone capacità di codifica. Di seguito sono riportate alcune responsabilità relative all'affidabilità del sito.

Operatività

I tecnici SRE dedicano più della metà del loro tempo ad attività operative, come ad esempio: 

  • Risposta agli incidenti di emergenza
  • Gestione delle modifiche
  • Gestione dell'infrastruttura IT

Gli ingegneri utilizzano strumenti SRE per automatizzare diverse attività operative e aumentare l'efficienza del team.

Supporto di sistema

I tecnici SRE lavorano a stretto contatto con il team di sviluppo per creare nuove funzionalità e stabilizzare i sistemi di produzione. Creano un processo SRE per l'intero team software e sono a disposizione per supportare i problemi di escalation. Ma soprattutto, i team addetti all'affidabilità del sito forniscono procedure documentate dedicate all'assistenza clienti per gestire efficacemente i reclami. 

Miglioramento dei processi

Gli ingegneri dell'affidabilità del sito migliorano il ciclo di vita dello sviluppo del software effettuando revisioni post-incidente. Il team SRE documenta tutti i problemi software e le rispettive soluzioni in una knowledge base condivisa. Il team software sarà quindi in grado di rispondere in modo efficiente a problemi simili in futuro. 

Quali sono gli strumenti di Site Reliability Engineering più comuni?

I team SRE utilizzano diversi tipi di strumenti per agevolare il monitoraggio, l'osservazione e la risposta agli incidenti. 

Orchestratore di container 

Gli sviluppatori software utilizzano un orchestratore di container per eseguire applicazioni containerizzate su varie piattaforme. Tali applicazioni archiviano i file del codice e le relative risorse all'interno di un singolo pacchetto denominato container. Ad esempio, gli ingegneri del software utilizzano Amazon Elastic Kubernetes Service (Amazon EKS) per eseguire e dimensionare le applicazioni cloud. 

Strumenti di gestione della reperibilità 

Gli strumenti di gestione della reperibilità sono software che consentono ai team SRE di pianificare, organizzare e gestire il personale di supporto che si occupa dei problemi software segnalati. I team SRE utilizzano il software per garantire la continua presenza di un team di supporto in attesa per ricevere avvisi tempestivi relativi a problemi software. 

Strumenti di risposta agli incidenti 

Gli strumenti di risposta agli incidenti garantiscono un chiaro percorso di escalation per i problemi software rilevati. I team SRE utilizzano questi strumenti per classificare i casi segnalati in base alla gravità e per gestirli tempestivamente. Gli strumenti possono anche fornire report di analisi post-incidente per evitare il ripetersi di problemi simili. 

Strumenti di gestione della configurazione

Gli strumenti di gestione della configurazione sono software che automatizzano il flusso di lavoro. I team SRE utilizzano questi strumenti per rimuovere le attività ripetitive e aumentare la produttività. Gli ingegneri dell'affidabilità del sito, ad esempio, utilizzano AWS OpsWorks per configurare e gestire automaticamente i server negli ambienti AWS. 

In che modo AWS può essere utile per la Site Reliability Engineering?

 

I servizi di gestione e governance AWS offrono al team software gli strumenti necessari per creare, dimensionare e implementare le applicazioni distribuite senza compromettere l'affidabilità del sistema. Il team di ingegneria dell'affidabilità del sito (SRE) utilizza vari servizi di gestione e governance AWS per monitorare e governare le risorse di calcolo AWS e on-premise:

  • il Catalogo dei servizi AWS consente ai team SRE di catalogare, gestire e implementare rapidamente i servizi IT.
  • AWS Systems Manager offre agli ingegneri dell'affidabilità del sito un hub di gestione centralizzato per ottenere informazioni operative dettagliate sulle risorse di calcolo del software.
  • AWS Proton è uno strumento di gestione automatizzato per l'implementazione di applicazioni containerizzate e serverless.

Inizia a utilizzare l'ingegneria dell'affidabilità del sito su AWS creando un account AWS oggi stesso.

Passaggi successivi su AWS

Scopri ulteriori risorse correlate al prodotto
Scopri di più sull'ingegneria dell'affidabilità del sito in AWS 
Registrati per creare un account gratuito

Ottieni accesso istantaneo al Piano gratuito di AWS.

Registrati 
Inizia subito a creare nella console

Inizia a creare con l'ingegneria dell'affidabilità del sito nella console di gestione AWS.

Accedi