Le DevOps sono una metodologia di sviluppo software che punta alla comunicazione, collaborazione e integrazione tra sviluppatori e addetti alle “operation”, ovvero quelle funzioni di un’azienda che si occupano della fornitura di un prodotto/servizio al cliente. Il ruolo degli addetti alle operation sta via via venendo inglobato in altre figure come ad esempio quella dello sviluppatore.
Se dunque si hanno già ottime competenze nella DevOps e si vuole passare ad un "livello successivo", magari per dare una svolta alla propria carriera lavorativa, allora probabilmente la figura del site reliability engineer potrebbe fare per voi. Il primo vero site reliability engineer ha origine ben prima delle idee del DevOps, nel 2003 Google aveva la necessità di rendere la propria infrastruttura più efficiente, affidabile e scalabile. Le pratiche che vennero sviluppate dal team di sviluppatori e ingegneri furono cosi efficienti che Big G volle proporle anche ad altre aziende come Amazon o Netflix, cosi da poter lavorare meglio anche a livello interaziendale.
Il site reliability engineer è dedito allo sviluppo delle soluzioni automatizzate per gli aspetti operativi come ad esempio la pianificazione delle performance, della capacità operativa, del monitoraggio e della risposta agli incidenti. Si tratta dunque di una figura complementare alle pratiche di DevOps che crea collegamenti tra lo sviluppo e operation.
Tale professionalità è descritta nel dettaglio in Site Reliability Engineering - How Google Runs Production Systems. L'opera, gratuita, introduce diversi concetti come i service level objective, gli errori di budget e descrive le pratiche redatte da Google per l'automazione dei task e la gestione delle emergenze e degli incidenti, fornendo diverse indicazioni su come risolvere determinati problemi e su come monitorare la propria infrastruttura gestendo i rischi e creando un sistema scalabile.
Dunque, come opera un site reliability engineer? A rispondere a questa domanda è stato Ben Traynor, vice presidente del team engineering di Google e fondatore del Google SRE:
"Il site reliability engineer esegue fondamentalmente un lavoro storicamente è svolto dall'operation team, l'SRE però sfrutta ingegneri con competenze ed esperienze nell'automazione software e, dunque, in quelle tecnologie che permettono all'uomo di delegare sempre più compiti ad un sistema informatico. In generale un team SRE è responsabile della disponibilità del servizio, della gestione della latenza, delle prestazioni, dell'efficienza del sistema, della gestione delle modifiche, del monitoraggio, della risposta alle emergenze e della pianificazione delle operazioni."
I site reliability engineer dividono il loro tempo tra operazioni, compiti di monitoraggio e sviluppo di sistemi e software che aiutano ad aumentare l'affidabilità e le prestazioni. Il suo obbiettivo primario è assicurarsi che un task non richieda l'intervento umano. Per arrivare a ciò deve essere dotato dei giusti strumenti di lavoro, come ad esempio dei tool per il provisioning automatico negli ambienti di test, la lettura dei log e la creazione di statistiche.
Gli SRE possono ridurre il carico di lavoro per tutto il team e aiutare gli sviluppatori a focalizzarsi unicamente sullo sviluppo delle funzionalità core. Stanno poi a stretto contatto con i product developer in modo da assicurarsi che le soluzioni progettate rispondano a determinati requisiti di disponibilità, prestazioni, sicurezza e manutenibilità. Inoltre collaborano anche con i release engineer per assicurarsi che la pipeline di consegna del software sia più efficiente possibile.
Chi dovrebbe considerare una carriera da site reliability engineer? È possibile diventarlo con una buona dose di skill ed esperienza riguardanti sviluppo software e system engineering, sopratutto se si ha la propensione a sviluppare soluzioni automatizzate.
Quindi se sei un system engineering e vuoi consolidare le tue abilità di programmazione o, viceversa, se sei un programmatore e vuoi migliorare la tua esperienza nella gestione dei sistemi, l'SRE è il ruolo che fa per te. A seconda dell'area di competenze le tue conoscenze possono essere molto utili come SRE e permetteranno di migliorare il progetto su cui si sta lavorando, acquisendo una visione d'insieme del processo di creazione, distribuzione e manutenzione di un servizio o di un software.
Via Silvia Fressard