La tecnologia è ovunque. A seconda di quanto è alta la posta in gioco del tuo settore, il fallimento di un prodotto o sistema tecnologico può cadere ovunque tra del tutto trascurabile fino alla fine della vita come la conosci.

Mainframe ospedalieri? Un po' importante. La resilienza dell'app Candy Crush sul tuo cellulare? Probabilmente un po' più in basso nell'elenco generale delle priorità.

In un sistema distribuito di reti, il fallimento è inevitabile. La prevenzione delle catastrofi inizia con un design di sicurezza solido e a tenuta stagna. Oltre a questo, però, cos'altro si può fare?

Che cos'è l'ingegneria del caos di Netflix?

20 settembre 2015.

Tutto tranquillo sul fronte occidentale, quando, all'improvviso, diversi importanti server aziendali di Amazon Web Services si interrompono senza una parola.

Molte grandi aziende non sono state in grado di provvedere ai propri clienti per diverse ore. Netflix, tuttavia, è tornato in piedi in pochi minuti. Come? La cultura aziendale interna di Netflix si è evoluta per includere molte pratiche "che inducono errori" implementate in tempo reale per preparare sia i sistemi che gli ingegneri per quando si verifica un disastro.

instagram viewer

La leadership dell'azienda ha condotto intenzionalmente interruzioni dei server simulate in parti contenute del sistema per studiare e prepararsi a eventi come questi. Questo li ha aiutati a identificare i buchi nel sistema e creare ridondanze che hanno permesso di continuare il servizio senza interruzioni, anche in caso di un grave malfunzionamento come quello menzionato in precedenza.

Questi deliberati esercizi di "ingegneria del caos" hanno dato ai loro ingegneri un vantaggio competitivo sufficiente per vedere se stessi attraverso il fiasco, grazie in parte all'infrastruttura preventiva che avevano costruito con questa sorta di evento apocalittico in mente.

Nessun altro era pronto quando la grande onda ha colpito. Il sistema Netflix era abbastanza forte da cavarsela da solo. Conclusione? Queste menti caotiche potrebbero essere a qualcosa qui.

Annientare intenzionalmente coloro che ti amano

"Chaos Engineering è la disciplina della sperimentazione su un sistema al fine di rafforzare la fiducia nella capacità del sistema di resistere a condizioni turbolente in produzione".

Manifesto dei Principi del Caos

Questo è il cuore dell'ingegneria del caos: in sostanza, una "esercitazione antincendio" imposta al sistema durante l'orario di lavoro quando ci sono occhi e mani disponibili per affrontare la sfida presentata. La capacità di un determinato sistema di tollerare i guasti viene messa alla prova quando vengono esposte eventuali vulnerabilità.

Nel suo contesto originale del 2011, l'ingegneria del caos riguardava il dipartimento IT di Netflix. La loro leadership voleva testare la resilienza degli sforzi del team quando uno o più dei loro computer venivano disabilitati intenzionalmente. Queste battute d'arresto hanno permesso al team IT di identificare i punti deboli chiave prima che diventassero problemi a livello di sistema e potessero essere sfruttati dall'esterno.

Un vero fallimento? Può essere costoso come l'inferno, e questo va oltre le implicazioni monetarie. Anche i periodi di inattività, senza alcuna reale mancanza di sicurezza, porteranno probabilmente a molte opportunità mancate di guadagno. Perché aspettare che un'emergenza ti prenda alla sprovvista?

Le scimmie dietro la follia

Alcune aziende adotteranno un modello di "squadra rossa" che contrappone team di sviluppatori contro i loro fratelli attraverso le linee dipartimentali. Il classico esempio che Netflix ha creato, tuttavia, fa uso di un "esercito delle scimmie". Questi robot fanno il lavoro sporco per loro in modo equo e totalmente casuale.

pazzo? Al laico, forse. Nelle parole dell'autore di "Chaos Monkeys" Antonio Garcia Martinez:

"Immagina una scimmia che entra in un 'data center', queste 'fattorie' di server che ospitano tutte le funzioni critiche delle nostre attività online. La scimmia strappa casualmente i cavi e distrugge i dispositivi. La sfida è progettare il sistema informativo di cui sono responsabili in modo che possa funzionare nonostante queste scimmie, che nessuno sa mai quando arriveranno e cosa distruggeranno".

Un'analogia colorata. Tuttavia, non tutti i Simian sono crudeli: Doctor Monkey monitora le prestazioni del sistema, ad esempio. Quando Chaos Kong si ferma per una visita, tuttavia, tutte le scommesse vengono annullate; questo personaggio eliminerà un'intera zona di disponibilità AWS.

Relazionato: Come vengono valutate le vulnerabilità della sicurezza?

Ingegneria del caos e metodo scientifico

L'ingegneria del caos è una preziosa fonte di informazioni sistemiche per coloro che conducono gli esperimenti. Non sono solo gli sviluppatori ad essere messi alla prova qui; è anche il sistema in quanto esiste autonomamente.

Prima di scaricare il barile di scimmie sul tavolo, l'ingegneria del caos richiede un po' di basi da gettare.

  1. Devi prima identificare quello che consideri uno stato "stabile", salutare e funzionale per il tuo sistema. Questo sarà il "controllo" con cui misuri qualsiasi risultato tangibile.
  2. Inizia a pensare a come questo stato sarà sbilanciato dall'intrusione di un fallimento orchestrato. Pianifica il rilevamento del malware in modo che influisca solo su un'area contenuta e controllabile del sistema.
  3. Introduci l'"intruso" e consenti al sistema di rispondere.
  4. Osserva e interpreta eventuali differenze tra il sistema così com'è ora e come si comportava prima, mentre era in omeostasi. Aumenta il "raggio di esplosione" dell'impatto fino a quando non rilevi una vulnerabilità o raggiungi la scala completa, a seconda dell'evento che si verifica prima.

L'idea è che più è difficile distruggere un sistema funzionale, più si può avere fiducia nella sua resilienza al cambiamento e al bombardamento. Questo approccio mostra come i diversi aspetti del sistema compenseranno i reciproci guasti in caso di interruzione.

"Dal momento che nessun singolo componente può garantire il 100% di uptime (e anche l'hardware più costoso alla fine si guasta), dobbiamo progettare un'architettura cloud in cui i singoli componenti possano guastarsi senza compromettere la disponibilità dell'intero sistema."

Il Netflix Blog

A volte, giocare con il sistema in questo modo non si avvicina nemmeno all'impatto sull'esperienza del cliente. Altre volte, verranno alla luce gravi falle di sicurezza. Ora, in particolare su Netflix, la contingenza intesa a mascherare l'errore del sistema a livello dell'utente è incorporata nelle fondamenta del sistema.

Relazionato: Che cos'è un exploit zero-day?

Ne vale la pena l'ingegneria del caos?

Se vuoi capire un sistema complesso, disturbalo

— Farhan Thawar (@fnthawar) 26 maggio 2021

I critici diranno che nessun gioco di back-end ha un impatto sull'esperienza di un cliente, anche se solo brevemente e per incidente. Coloro che sono a favore dell'ingegneria del caos, tuttavia, ribatteranno con il fatto che queste "interruzioni pianificate" dovrebbero essere molto più piccole di quelle sperimentate da AWS nel 2015. Se un piccolo problema pianificato ti mette in condizione di evitare che si presenti un problema molto più grande, pianificare l'incidente iniziale potrebbe essere il modo migliore per prepararsi. Meno utenti saranno interessati in totale. La matematica funziona.

Dal punto di vista umano della questione, la mentalità è che, ora, questi ingegneri che hanno avuto un crash del server davanti a loro e affrontato con competenza sarà sia più vigile in futuro sia anche più intellettualmente attrezzato per gestire qualunque cosa accada loro modo. Il sistema più forte che ne risulta, in molti casi, parla da sé.

Silicon Valley: dove i sogni vanno a morire

Dicono che se vuoi fare le cose in grande, devi essere disposto a uccidere i tuoi cari, o, in questo caso, essere disposto a lasciare che gli altri li uccidano per te. Quando la sicurezza è in prima linea fin dall'inizio dello sviluppo, è molto più probabile che il tuo team finisca con qualcosa di impenetrabile e sicuro che i clienti possano usare liberamente.

L'esperienza ludica sul posto di lavoro rende entusiasmante la prospettiva di successo in questo campo; quando il risultato finale è di qualità, tutti possono salire di livello. Il mio Netflix funziona bene e dobbiamo ringraziare solo i pazzi dietro il caos.

Ora che hai una solida conoscenza dell'ingegneria del caos, perché non ampliare le tue conoscenze con un'altra metodologia di sviluppo software? Agile è un sistema eccellente che puoi incorporare per unificare una forza lavoro e produrre codice pulito ed efficiente.

E-mail
Qual è la metodologia di programmazione agile?

Sia che tu stia facendo domanda per lavori di programmazione o desideri un modo di lavorare più efficiente, dovrai conoscere Agile.

Leggi Avanti

Argomenti correlati
  • Programmazione
  • Programmazione
Circa l'autore
Emma Garofalo (25 articoli pubblicati)

Emma Garofalo è una scrittrice che attualmente vive a Pittsburgh, in Pennsylvania. Quando non lavora alla sua scrivania in cerca di un domani migliore, di solito si trova dietro la telecamera o in cucina.

Altro da Emma Garofalo

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!

Ancora un passo…!

Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.

.