Cos'è un site reliability engineer?
I site reliability engineer (SRE) hanno una vasta conoscenza della tecnologia alla base del sito web o dell'applicazione della loro organizzazione. Comprendono anche le esigenze e i requisiti aziendali dei propri clienti.
Un site reliability engineer (SRE) è qualcuno che applica i principi fondamentali dell'informatica e dell'ingegneria del software per progettare e sviluppare sistemi informatici scalabili, distribuiti e affidabili. Il termine, coniato da Google, si riferisce al trattamento delle operazioni in modo molto simile a un problema di software, in quanto mira a sviluppare sistemi software su larga scala per fornire soluzioni automatizzate a problemi operativi complessi.
Fondamentalmente, un site reliability engineer si affida a una serie di pratiche di sviluppo che incorporano aspetti dell'informatica e dell'ingegneria del software nelle operazioni per migliorare il flusso di lavoro quotidiano, nonché l'efficienza e l'affidabilità del sistema. In sostanza, gli SRE sono incaricati di fornire, proteggere e far progredire i sistemi e i servizi software di un'azienda.
Qui, esploreremo le attività quotidiane dei site reliability engineer, il valore che apportano ai team e alle aziende DevOps e le loro responsabilità chiave. Approfondiremo anche come misurare l'affidabilità del sito e spiegare la differenza tra SRE e DevOps. Infine, questo articolo esplorerà il site reliability engineering come scelta di carriera.
I SRE si destreggiano tra molte attività diverse, dividendo il loro tempo tra le attività di amministratore di sistema e la creazione di software. In generale, ciò significa gestire più progetti, configurare l'infrastruttura e partecipare a riunioni tecniche.
Le attività di amministratore di sistema in genere includono il mantenimento dell'affidabilità e delle prestazioni, la risoluzione di problemi ed errori, l'automazione delle attività, la risposta agli incidenti e la gestione delle responsabilità di reperibilità.
Quando si tratta di attività di sviluppo, i site reliability engineer dedicano tanto tempo alla creazione di processi o metodologie basati sull'infrastruttura che saranno utilizzati dagli ingegneri del software nel team di site reliability o in ambienti interfunzionali. Ad esempio, potrebbero sviluppare un processo per il monitoraggio 24 ore su 24 delle prestazioni e della latenza del servizio.
Nello sviluppo, collaborano a stretto contatto con i product manager e i loro team, garantendo che la visione dichiarata per un prodotto sia compatibile con i requisiti di sistema non funzionali, ovvero prestazioni, latenza, disponibilità e sicurezza. Lavorano anche con i team tecnici nella fase di staging del processo di creazione, per garantire la massima efficienza nella distribuzione.
Applicando una rigorosa mentalità da ingegneria del software all'amministrazione del sistema, i SRE fungono da ponte tra lo sviluppo del software e le operazioni. Generano e documentano conoscenze specifiche per settore e progetto e garantiscono che siano accessibili. Forniscono un solido manuale di linee guida operative, eliminando il lavoro pratico e la ridondanza. I migliori SRE trovano un equilibrio tra la promozione di una crescita costante dei prodotti e il mantenimento dell'affidabilità per i clienti.
Attraverso la loro rigorosa applicazione dei principi di ingegneria del software alle operazioni, i site reliability engineer aumentano significativamente l'affidabilità del software dei prodotti dell'organizzazione.
Un Site Reliability Engineer è responsabile del mantenimento dell'affidabilità. Ciò significa facilitare risposte di errore automatizzate, semplificate ed efficienti e ridurre l'errore umano su larga scala. I site reliability engineer trascorrono molto tempo a rimuovere criticità, configurare gli strumenti interni e impostare e testare i benchmark del sistema. Inoltre, sviluppano e monitorano solide pipeline tecniche per l'operatività quotidiana dei prodotti. I site reliability engineer lavorano a stretto contatto con i team di sviluppo, applicando una mentalità da ingegneria del software per affrontare le sfide operative e migliorare l'affidabilità del sistema.
In generale, i site reliability engineer sono responsabili delle prestazioni, della disponibilità, dell'affidabilità, dell'efficienza, della gestione delle modifiche, del monitoraggio e della risposta alle emergenze di un sistema. Altri compiti principali dei site reliability engineer includono:-
-
Monitoraggio degli indicatori del livello di servizio (SLI) e impostazione degli obiettivi del livello di servizio (SLO) – I site reliability engineer facilitano il corretto SLI per prestazioni efficienti attraverso il corretto utilizzo delle risorse, con errori minimi. Stabiliscono inoltre gli SLO per la revisione degli obiettivi interni, come l'alta disponibilità.
-
Valutazioni dei rischi e definizione di un budget di errore: i site reliability engineer sono responsabili della definizione dell'obiettivo di affidabilità per i sistemi, anche assumendo rischi misurati con i successivi lanci di prodotti.
-
Monitoraggio degli output: creazione di ticket, accesso e avvisi (che necessitano di diversi livelli di interazione umana) sono attività critiche per un site reliability engineer.
-
Previsione della domanda e pianificazione della capacità: i progetti richiedono valutazioni accurate per pianificare la domanda, le interruzioni del servizio e le emergenze future. Un site reliability engineer lavora in collaborazione con i responsabili di prodotto per eseguire queste attività.
-
Collaborazione: i site reliability engineer devono collaborare con molti team diversi, diffondendo le best practice e rivedendo le migliori decisioni sull'affidabilità per migliorare lo sviluppo di prodotti tra reparti.
-
Scrivere retrospettive: i report retrospettivi aiutano il team a imparare dagli incidenti per prevenirne il ripetersi.
L'affidabilità del sito viene in genere misurata in tre dimensioni.
In primo luogo, ci sono gli SLI, che vengono utilizzati per misurare l'utilizzo a livello di sistema, i rallentamenti, le interruzioni di servizio, gli errori, il traffico e molti altri fattori. Gli SLI sono direttamente legati all'esperienza dell'utente: se i numeri non sono desiderabili, la soddisfazione del cliente ne risente.
In secondo luogo, ci sono gli SLO, che definiscono il livello target per l'affidabilità di un prodotto o servizio. Ad esempio, se abbiamo uno SLI che richiede che la latenza della richiesta sia inferiore a 500 ms negli ultimi 15 minuti con 95° percentile, uno SLO del 99 % richiederebbe che lo SLI sia del 99 %. Questi sono obiettivi interni che il team di site reliability e le parti interessate interne (inclusi sviluppatori e product manager) devono concordare.
Infine c'è il contratto di servizio (SLA). Questo può essere un accordo implicito o esplicito a livello aziendale tra un'azienda e i suoi clienti, rilevando le conseguenze se l'organizzazione non soddisfa lo SLA. Possono anche includere dei budget di errore, che misurano il rischio che un site reliability engineering può correre per fornire servizi, come manutenzione e miglioramenti, senza compromettere gli SLA.
La differenza tra le due posizioni è principalmente che i site reliability engineer concentrano i loro sforzi sul miglioramento della disponibilità e dell'affidabilità del sistema, mentre gli ingegneri DevOps orientano il loro lavoro alla velocità e all'automazione dello sviluppo e del deployment.
Ci si aspetta che i site reliability engineer scrivano il software e ne eseguano il deployment in modo efficiente, studiando l'affidabilità del codice e trovando soluzioni innovative per correggere gli errori. Mentre i tecnici DevOps cercano di automatizzare i processi e il monitoraggio durante l'intero ciclo di vita del prodotto, i site reliability engineer riducono al minimo i rischi valutando le ridondanze e accelerando la crescita.
Per diventare un site reliability engineer, un professionista della tecnologia ha bisogno di alcuni anni di esperienza e conoscenza di uno o più linguaggi di programmazione, come Python, Ruby o Java. Dovrebbe anche avere esperienza nello shell scripting, nell'uso dei sistemi di controllo della versione come Git con GitLab e nell'automatizzazione delle pipeline di test e distribuzione continue (CI/CD).
Inoltre, i potenziali site reliability engineer dovrebbero anche avere familiarità con i database SQL e NoSQL. Anche l'esperienza nella containerizzazione, come Docker e Kubernetes, è altamente auspicabile.
Il site reliability engineering riguarda la progettazione e lo sviluppo di sistemi informatici scalabili, distribuiti e affidabili. La giornata lavorativa di un SRE è dedicata all'esecuzione di attività di amministratore di sistema e allo sviluppo di software. Adottando una mentalità da ingegneria del software nell'ambito dell'amministrazione del sistema, questa figura funge da ponte tra lo sviluppo del software e le operazioni.
Il site reliability engineering offre una carriera varia, gratificante e redditizia.
Vuoi iniziare?
Scopri cosa è capace di fare il tuo team grazie a una piattaforma DevSecOps unificata.