best practices Site reliability engineering

Il web si sta evolvendo per svolgere task sempre più importanti e impegnativi, portando alla luce un tema che oggi più che mai è centrale nello sviluppo di applicazioni web, ovvero la loro affidabilità.

Per far fronte a questa sempre più impellente necessità diventa centrale il ruolo della disciplina chiamata Site Reliability Engineering (SRE), introdotta nel 2004 all’interno del team Google e da allora adottata da innumerevoli compagnie (come Netflix e Amazon) che necessitano di rendere grandi siti e applicazioni web efficienti, scalabili e affidabili.

 

Conosci già le potenzialità della Site Reliability Engineering?  Scarica la guida e dai una marcia in più alle tue applicazioni!

 

Site Reliability Engineering: i vantaggi

L’implementazione di SRE ha come obiettivi:

  • la riduzione o eliminazione del lavoro ripetitivo e inefficiente di manutenzione dei sistemi
  • lo sviluppo di soluzioni scalabili per problemi complessi
  • la creazione di spazio per l’innovazione in un contesto tecnologico stabile e maturo.

Il ruolo del Site Reliability Engineer si integra con le pratiche e l’approccio DevOps: questa figura si occupa dello sviluppo di soluzioni automatizzate che possano ridurre non solo i rischi dovuti ai processi manuali, ma anche tempi e costi di rilascio, così da abbattere le barriere tra team di sviluppo e operations e rendere la produzione e la manutenzione software più veloce e sicura possibile.

SCOPRI DI PIÙ: Cos'è DevOps e come adottarlo

6 Best Practice SRE

Nei prossimi paragrafi vedremo le principali best practice che permettono di adottare e applicare in modo efficace questo approccio.

1. Non ragionare a compartimenti stagni

Ogni tua azione avrà delle ricadute sul resto del team, l’approccio giusto è pensare alle conseguenze anche sugli altri prima di agire. È necessario tenere sempre a mente il quadro generale e non agire solo sotto la spinta di una necessità momentanea.

Per esempio: gli sviluppatori in un team SRE devono prendere una decisione riguardo una nuova funzionalità, per decidere tra un service-stack container-based e le soluzioni serverless fornite dal cloud-vendor selezionato. Prima di prendere una decisione con effetti sul team di sviluppo, è bene che discutano le opzioni con chi dovrà gestirlo in runtime, valutando pro e contro delle possibili soluzioni e degli impatti che avrà a valle del termine dello sviluppo.

2. Usa l’automation per eliminare i task ripetitivi e time-consuming

Immagina che il tuo team lavori ad un progetto che richiede backup molto frequenti. È bene che ogni backup sia testato, ma gestire questa operazione manualmente sarebbe estremamente inefficiente. Per evitarlo sarebbe buona pratica investire del tempo nello sviluppo di automation che testino i backup riducendo il carico di lavoro umano del team.

3. Riconosci e correggi cosa non è andato con un’analisi a posteriori

Il compito di un SRE engineer è anche quello di analizzare cosa è andato storto in un progetto o in uno specifico incidente. Quando qualcosa non ha funzionato è indispensabile effettuare un’analisi e capire le dinamiche che hanno portato al problema, ma è importante concentrarsi sul “cosa” e non sul “chi”. Il focus deve sempre essere la buona collaborazione all’interno del team e puntare il dito non porta a nessun buon risultato.

Inoltre, per aiutare gli sviluppatori, è anche importante usare in modo adeguato il proprio tempo e capire quando si sta raggiungendo un punto morto. Se il processo a cui stai lavorando non sta portando ai risultati sperati o, anzi, li sta intralciando, è bene cambiare direzione e concentrarsi su altro. Le stesse analisi a posteriori possono diventare un’ottima fonte per comprendere meglio il funzionamento del sistema, così da poterlo meglio supportare in futuro.

4. Credi nelle soluzioni che proponi e impara a convincere il management

Come SRE engineer, il tuo compito è uno e molto importante: rendere i tuoi sistemi affidabili. Non avere paura di avanzare richieste verso il management, quando pensi che siano giustificate, per risorse e strumenti che potrebbero comportare un costo oggi ma essere utili al team sul lungo periodo.

Prepara un documento in cui argomentare la tua richiesta, dimostrando come investire in uno strumento in cui credi non solo sarà un costo che si ammortizza nel tempo ma porterà significativi benefici all'azienda.

5. Fai analisi e misurazioni vivendo l’esperienza che vive l’utente

Proprio come in uno spettacolo teatrale, quello che l'utente finale vede non sono i processi che avvengono dietro le quinte ma quello che succede vivendo l’esperienza che viene lui presentata.

Prova quindi a metterti nei suoi panni e vivere la sua esperienza: questo ti darà l’opportunità di percepire gli errori e i punti deboli del livello applicativo non dal lato server, ma da quello di chi dovrà utilizzare il servizio. È importante tenere a mente anche questo punto di vista nel gestire gli errori, così da apportare modifiche che migliorino non solo il funzionamento lato server, ma l’intera esperienza dell’utente finale.

6. Utilizza ogni occasione per aumentare il livello di osservabilità degli elementi critici del tuo sistema

Ogni incidente e ogni sviluppo evolutivo devono diventare un’occasione per farsi le domande giuste sull’affidabilità del sistema: quali sono gli obiettivi e i requisiti operativi? Quali sono gli indicatori che mi aiutano a mantenere il focus sugli obiettivi? Quali sono quelli che invece creano “rumore” e riducono l’efficienza delle attività di supporto tecnico? Devo raccogliere più dati, visualizzarli meglio, elaborarli e incrociarli con altri dati?

Anche la produzione di dati ed elaborazioni rilevanti è un’attività da condividere con il team di sviluppo e si interseca con le altre best practice, ad esempio superare compartimenti stagni, aumentare l’automazione, fare e documentare analisi a posteriori.

Conclusioni: requisiti dell’approccio SRE

Diventare Site Reliability Engineer richiede un ampio bagaglio di skill specifiche che coprano sia l’ingegneria e lo sviluppo software che le operazioni tipiche di sistemi IT, come quelle di load balancing o di back-up. Perchè il modello SRE funzioni al meglio in azienda, però, è necessario che le abilità individuali siano affiancate da fiducia e collaborazione tra i team di produzione e di sviluppo.

Per adottare in modo efficace la cultura SRE è quindi necessario preparare il tuo team e avere fiducia nel metodo, tenendo sempre a mente le sue best practices. Solo così il metodo SRE ti aiuterà ad produrre e mantenere applicazioni efficienti e affidabili.

guida SRE