Chaos engineering, gestione dei fallimenti nel cloud computing -2

Il Chaos Engineering consente di scovare bug e guasti ai sistemi cloud, anticipando futuri malfunzionamenti, grazie alla tecnica dell'automazione

Chaos engineering, gestione dei fallimenti nel cloud computing

Nella prima parte di questo articolo abbiamo introdotto la tecnica del Chaos Engineering, ossia un sistema che si occupa di introdurre volutamente degli errori all’interno di infrastrutture di testing per verificarne e migliorarne la sicurezza. Questa procedura è fortemente utilizzata in ambito cloud per prevenire i fallimenti del sistema, i bug riscontrati infatti, possono essere corretti prima che il tutto venga reso disponibile in produzione. Dopo la breve introduzione dell’articolo precedente, vediamo come funziona Chaos Engineering nel dettaglio.

L’ambiente che si vuole testare viene stressato in maniera regolare dal sistema chiamato Search Chaos Monkey. La serie di azioni condotte da quest’ultimo variano molto a seconda del grado di penetrazione che si vuole applicare e possono essere schematizzate in questi tre punti:

  • Low chaos: si riferisce a fallimenti che il nostro sistema può subire mediante una non interruzione del servizio o una sua minima interruzione. Tutti gli allarmi ricevuto sono considerati dei bug.
  • Medium chaos: performance o disponibilità possono abbassarsi ed è richiesto l’intervento manuale  degli ingegneri su chiamata.
  • High chaos: i fallimenti possono creare blocchi al sistema. La priorità d’intervento è molto elevata. Sono richiesti interventi immediati da parte degli ingegneri.

In tutti e tre i casi la priorità è la conservazione e l’integrità dei dati del cliente finale.

Chaos Engineering: come classificare gli errori

Nel momento in cui si riscontra un problema, il sistema di Netfix cerca di attribuire una scala di priorità e gravità. Inoltre viene fornito un percorso che aiuta gli ingegneri ad identificare in maniera quanto più circoscritta possibile la zona sulla quale intervenire. A qualsiasi guasto presente sul sistema viene assegnato un livello di caos, che consente di valutare quanto bene la struttura possa reagire. Il guasto potrebbe essere teorico qualora lo si introduca volutamente nel sistema per educare quest’ultimo a gestirlo, un bug trovato da un intervento di chaos engineering o un caso di fallimento riscontrato realmente da un servizio di ricerca.

Il team di Netfix commenta così la sua offerta: “Vogliamo che Search Chaos Monkey rompa il sistema di continuo e trovi bug prima che affliggano servizi lato utente. Ciò che ci piace di più è quando il nostro sistema scopre livelli estremi di fallimento. E’ molto più piacevole sistemare un bug prima che si trasformi in panico per il cliente”.

L’automazione è la chiave di questo processo di guida ai vari livelli di caos. Essere in grado di innescare un guasto specifico con il minimo sforzo ci permette di seguire liberamente un approccio di sviluppo volto alla riduzione dei livelli di caos. E una volta che il fallimento automatico è dato in pasto al Search Chaos Monkey  questo può funzionare come un test di regressione, per garantire che le future modifiche al nostro sistema non influenzino la sua capacità di gestire i fallimenti”.

Chaos Engineering: come viene affrontato un fallimento

La gestione manuale di un fallimento si conclude in tre fasi, che possono essere così riassunte:

  1. Scoperta iniziale: arriva un alert minimo da parte del sistema. Viene effettuata la prima verifica.
  2. Mitigazione: viene definito il problema e si cerca di ridurlo applicando un intervento contenitivo.
  3. Automazione: assicurato che i servizi per il cliente non sono stati coinvolti, si cerca di riprodurre l’errore e si controlla quali sono i componenti che ne vengono afflitti anche per via indiretta.

I vantaggi del Chaos Engineering

La filosofia di Netfix è basata sul tentativo di sopravvivere a qualsiasi tipo di fallimento.

Il Chaos Engineering aiuta a scovare bug  in fase di testing e prevenire la ricorrenza: operando tutte le tecniche specifiche il bug identificato e corretto non dovrà mai più ripresentarsi.

Per questa ragione è sempre bene prediligere sistemi che permettano di gestire ogni tipologia di problema e consentano di isolare i vari componenti: se una piccola parte del sistema viene affetta da bug o guasto, il danno non deve essere diffuso ad altri componenti . Solo così facendo con il Chaos Engineering sarà possibile anticipare fallimenti futuri.

Facci sapere cosa ne pensi!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *