Cos'è Chaos Monkey? Spiegazione dell'ingegneria del caos

Pioniere fuori dalle sale di Netflix durante il suo passaggio dalla distribuzione di DVD alla creazione di sistemi cloud distribuiti per lo streaming video, Chaos Monkey ha introdotto un principio ingegneristico che è stato abbracciato dalle organizzazioni di sviluppo software di tutte le forme e dimensioni: vale a dire, che rompendo intenzionalmente i sistemi tu può imparare a renderli più resilienti.

Secondo il post del blog originale di Netflix sull'argomento, pubblicato nel luglio 2011 da Yury Izrailevsky, allora direttore dell'infrastruttura cloud e di sistema, e Ariel Tseitlin, direttore delle soluzioni cloud presso la società di streaming, Chaos Monkey è stato progettato per disabilitare casualmente le istanze di produzione su la sua infrastruttura Amazon Web Services, esponendo così i punti deboli che gli ingegneri Netflix potrebbero eliminare costruendo migliori meccanismi di ripristino automatico.

Il nome accattivante deriva da "l'idea di scatenare una scimmia selvaggia con un'arma nel tuo data center (o regione cloud) per abbattere le istanze in modo casuale e masticare cavi - per tutto il tempo continuiamo a servire i nostri clienti senza interruzioni", il post del blog stati.

In pratica ciò comporterebbe una semplice applicazione "che preleva un'istanza a caso da ciascun cluster e, a un certo punto durante l'orario lavorativo, la spegne senza preavviso. Lo farebbe ogni giorno lavorativo ", come spiegato in dettaglio dagli ex ingegneri di Netflix Nora Jones e Casey Rosenthal nel loro libro completo sull'argomento, Chaos Engineering , pubblicato da O'Reilly Media.

L'idea è che, imparando dove sono i tuoi punti più deboli, gli ingegneri possono impostare trigger automatici per combattere un problema, risparmiando loro una chiamata nel cuore della notte se qualcosa dovesse andare storto. Da allora Chaos Monkey si è evoluto in un'intera gamma di principi del caos, sotto la bandiera dell'ingegneria del caos.

Chaos Monkey su Netflix

Chaos Monkey è nato dagli sforzi ingegneristici di Netflix intorno al 2010, quando Greg Orzell, che ora lavora presso GitHub di proprietà di Microsoft, è stato incaricato di creare resilienza nella nuova architettura basata su cloud dell'azienda.

"Il modo in cui penso a Chaos Monkey non è una grande impresa di ingegneria", ha detto Orzell. "Il valore che apporta è un cambiamento di mentalità che era fondamentale al momento in cui siamo passati dalla spedizione di DVD allo streaming via Internet."

All'inizio, gli ingegneri di Netflix hanno introdotto un'intera gamma di interruzioni e problemi nei sistemi utilizzando un "esercito di Simian" di strumenti open source, ciascuno dei quali tiene conto di determinati tipi di errori, a partire da Chaos Monkey che elimina i cluster AWS.

L'esercito originale (ora per lo più ritirato a favore di nuovi strumenti) includeva Latency Monkey, che induceva ritardi artificiali al livello di comunicazione client-server RESTful, e Doctor Monkey, che attingeva ai controlli di integrità eseguiti su ogni istanza , oltre a monitorare altri segni esterni di salute (ad esempio il carico della CPU) per rilevare istanze non integre e rimuoverle dal servizio se necessario.

Chaos Kong ha portato Chaos Monkey al livello successivo simulando un'interruzione in un'intera zona di disponibilità di AWS. "È molto raro che una regione AWS non sia disponibile, ma succede", sottolinea un post del blog Netflix del 2015. 

"Eseguendo regolarmente esperimenti che simulano un'interruzione regionale, siamo stati in grado di identificare tempestivamente eventuali punti deboli sistemici e risolverli", continua il post. "Quando US-EAST-1 è diventato effettivamente non disponibile, il nostro sistema era già abbastanza potente per gestire un failover del traffico."

Come sottolineano Jones e Rosenthal nel loro libro, lasciare che Chaos Kong si sia liberato dell'infrastruttura è stato "un affare irrisorio con una 'sala di guerra' assemblata per monitorare tutti gli aspetti del servizio di streaming, ed è durato ore".

Due anni dopo, nel luglio 2017, Netflix ha introdotto ChAP, la Chaos Automation Platform, che “interroga la pipeline di distribuzione per un servizio specificato dall'utente. Quindi avvia i cluster di sperimentazione e controllo di quel servizio e indirizza una piccola quantità di traffico a ciascuno di essi ", afferma il post del blog.

Principi di ingegneria del caos

Le pratiche di base di Chaos Monkey si sono rapidamente evolute, con implementazioni sempre più grandi attraverso Chaos Kong, a quella che è stata successivamente formalizzata come ingegneria del caos. Netflix non ha creato un proprio team formale di ingegneri del caos fino al 2015. Quel team era guidato da Bruce Wong, ora direttore dell'ingegneria di Stitch Fix.

I principi dell'ingegneria del caos sono stati formalmente raccolti da alcuni degli autori originali di Chaos Monkey, definendo la pratica come: "La disciplina della sperimentazione su un sistema al fine di creare fiducia nella capacità del sistema di resistere a condizioni turbolente nella produzione".

In pratica questo assume la forma di un processo in quattro fasi:

  1. Definizione dello "stato stazionario" di un sistema per impostare una linea di base per un comportamento normale.
  2. Ipotizzare che questo stato stazionario continuerà sia nel gruppo di controllo che nel gruppo sperimentale.
  3. Introduci variabili che riflettono eventi del mondo reale come server che si bloccano, dischi rigidi che non funzionano correttamente o connessioni di rete interrotte.
  4. Prova a confutare l'ipotesi cercando una differenza tra il gruppo di controllo e il gruppo sperimentale.

Se lo stato stazionario è difficile da interrompere, hai un sistema robusto; se c'è una debolezza allora hai qualcosa da sistemare.

"Nei cinque anni trascorsi dalla pubblicazione di 'The Principles', abbiamo assistito all'evoluzione dell'ingegneria del caos per affrontare nuove sfide in nuovi settori", osservano Jones e Rosenthal. "I principi e le fondamenta della pratica continueranno sicuramente a evolversi man mano che l'adozione si espande nel settore del software e in nuovi verticali".

Ingegneria del caos con Chaos Monkey

Per eseguire la versione open source di Chaos Monkey i tuoi sistemi dovranno soddisfare un certo insieme di prerequisiti, come indicato su GitHub.

Chaos Monkey non funziona come un servizio, quindi dovrai impostare un cron job come indicato nella pagina GitHub, che quindi chiama Chaos Monkey una volta nei giorni feriali per creare un programma di terminazioni.

Per utilizzare questa versione di Chaos Monkey, è necessario utilizzare la piattaforma di distribuzione continua open source di Netflix, Spinnaker, che può limitare la capacità di alcune organizzazioni di adottare il metodo. Chaos Monkey richiede anche un database compatibile con MySQL, versione 5.6 o successiva.

I proprietari dei servizi impostano le loro configurazioni di Chaos Monkey tramite Spinnaker. Chaos Monkey funziona tramite Spinnaker per ottenere informazioni su come i servizi vengono distribuiti e termina le istanze - macchine virtuali o container - in modo casuale su una frequenza e una pianificazione specificate.

Ovviamente, l'implementazione di Chaos Monkey è solo l'inizio del difficile e complesso compito di risolvere i problemi di resilienza del sistema. Chaos Monkey scopre semplicemente le debolezze del sistema; spetta quindi agli sviluppatori o ai team di ingegneri di sistema identificare le loro cause e trovare soluzioni.

"Gli utensili in sé non sono costosi, ma l'investimento che devi fare per reagire agli utensili lo è", afferma Orzell. Impegnarsi nell'ingegneria del caos richiede anche di spostare le risorse dalla creazione di nuove funzionalità al rafforzamento della resilienza. "Ogni azienda si trova in un punto diverso di quello spettro e ciascuna deve decidere quanto chiamare in alto o in basso in quello spazio", aggiunge.

Jones e Rosenthal affermano che all'inizio, gli ingegneri di Netflix "hanno ricevuto molti respingimenti in particolare dalle istituzioni finanziarie".

Nonostante la posta in gioco fosse più alta per le banche, hanno comunque subito interruzioni, quindi implementando con attenzione una "strategia proattiva come l'ingegneria del caos per comprendere i rischi al fine di prevenire risultati ampi e incontrollati", molte di queste organizzazioni hanno cambiato idea, con Capital One adottante, come descritto nel libro.

Risorse di ingegneria del caos

Ancora una volta, l'ultimo e definitivo libro sull'argomento è Chaos Engineering degli ex ingegneri di Netflix Nora Jones e Casey Rosenthal, pubblicato nell'aprile 2020, che si basa su gran parte del lavoro di quegli autori e altri, compilato nel libro del 2017 Chaos Engineering . Per una panoramica più pratica, vedere Learning Chaos Engineering di Russ Miles .

Netflix fornisce una vasta gamma di risorse sull'argomento su GitHub, tra cui un tutorial, molta documentazione, un contatore di errori, un controllo delle interruzioni e strumenti di decryptor.

Gremlin, un fornitore di strumenti commerciali per l'esecuzione di esperimenti di ingegneria del caos, offre il proprio set completo di risorse, che sono disponibili gratuitamente online e in formato PDF. L'azienda sostiene anche vari sforzi della comunità tra cui Chaos Conf e un canale Slack.

O'Reilly dispone anche di numerose risorse, inclusa questa comoda playlist di libri e video sull'argomento.