Il caos engineering si ha quando si causano in modo intenzionale e controllato guasti nell'ambiente di produzione o pre-produzione per comprendere il loro impatto e pianificare una migliore posizione difensiva e una strategia di manutenzione degli incidenti.
Ogni giorno c'è il rischio che un'applicazione o un'infrastruttura critica di un'organizzazione non funzionino, minacciando potenzialmente la sua capacità di fornire servizi ai clienti. Le cause di malfunzionamento possono variare tra diversi problemi, come violazioni della sicurezza, configurazioni errate o interruzioni del servizio. La probabilità di errori o interruzioni aumenta di pari passo con l'aumento delle applicazioni e dei dati ospitati nel cloud, che può creare maggiori problemi di sicurezza.
Un modo per affrontare le interruzioni è il chaos engineering. Non si tratta di un processo casuale in cui gli ingegneri interrompono le istanze o i servizi o altrimenti causano il malfunzionamento dei sistemi senza alcuno scopo. Questo processo identifica i potenziali problemi futuri, consentendo ai team di ingegneria di risolvere i problemi in modo proattivo e di evitarli nell'ambiente live più avanti nel tempo.
Il chaos engineering è importante perché errori o interruzioni possono rallentare lo slancio di un'organizzazione, facendo perdere tempo prezioso per trovare una soluzione rapidamente mentre i tempi di inattività aumentano. Netflix ha imparato questo concetto in prima persona quando è passata dal sistema on-premise al cloud1: ha sperimentato un guasto che ha portato a un'interruzione di tre giorni della fornitura del servizio nel 2008.
Questa interruzione precede la trasformazione in un'operazione di streaming video, il che avrebbe reso il guasto stesso immensamente più costoso. Di conseguenza, Netflix ha deciso che avrebbe fatto tutto il possibile per ridurre al minimo le interruzioni e ha iniziato a introdurre il chaos engineering nei suoi workflow. Questo processo consente di identificare i problemi prima che si verifichino e di minimizzare i danni se e quando si verifica un guasto inevitabile.
Netflix ha creato chaos monkey2, uno strumento open source che crea errori casuali nei servizi e nelle infrastrutture IT destinato a identificare i punti deboli che possono essere corretti o risolti tramite procedure di ripristino automatiche. Hanno implementato chaos monkey durante lo spostamento da un data center privato ad Amazon Web Services (AWS) in risposta all'inaffidabilità del cloud. Molte organizzazioni ora usano chaos monkey per eseguire i loro esperimenti di chaos engineering.
Il chaos engineering è una difesa importante contro i guasti dell'infrastruttura, le interruzioni o i componenti mancanti nell'ambiente di produzione di un'organizzazione. Aiuta i tecnici dell'affidabilità del sito (SRE) e gli altri membri del team DevOps a fornire una fornitura continua di servizi evitando interruzioni significative del loro servizio. Il chaos engineering li aiuta a comprendere meglio le vulnerabilità e informa su come minimizzare l'impatto in caso di interruzione.
Anche un piccolo problema nel codice può avere un effetto catastrofico sull'ambiente di produzione complessivo, date le varie dipendenze del programma. Ad esempio, un errore nel sistema software delle transazioni di una società di servizi finanziari può comportare la perdita di milioni di dollari3.
Forse le organizzazioni non sono in grado di evitare tutti gli incidenti IT, ma possono ridurre al minimo i danni utilizzando il chaos management per comprendere gli scenari probabili e le migliori soluzioni possibili.
È consigliabile che le organizzazioni con elevata resilienza, maturità digitale e alta osservabilità attraverso dashboard e altri strumenti adottino il chaos engineering per intervenire immediatamente sui problemi che si verificano attraverso gli esperimenti. Le organizzazioni che mancano di questa osservabilità4 possono impiegare troppo tempo per risolvere gli esperimenti che creano attraverso il chaos engineering.
Il chaos engineering è un must anche per le organizzazioni che utilizzano il cloud, in particolare il quello pubblico, e app cloud-native. Il cloud pubblico introduce potenziali problemi di interruzione che richiedono il coordinamento con il provider, il che comporta un approccio diverso rispetto alla gestione dei problemi on-premise.
Secondo Constellation Research5, le aziende che utilizzano il cloud spesso affrontano ancora gli incidenti IT senza considerare il modo in cui il cloud e il Software-as-a-Service (SaaS) influiscono diversamente su tali incidenti.
Inoltre, l'aumento dell'uso dei microservizi, che aumenta il numero di host o container in esecuzione in un sistema, crea sfide uniche che possono essere scoperte e risolte attraverso esperimenti di caos. Questo sposta le complessità dalla progettazione del codice alle operazioni di sistema, il che non elimina le complessità ma consente una maggiore automazione.
Il chaos engineering aiutare le organizzazioni a migliorare anche la velocità delle loro pipeline di integrazione continua e di consegna continua (CI/CD). Incorporare il chaos engineering nella CI/CD, come ha fatto Netflix6, consente alle organizzazioni di automatizzare gli esperimenti continui controllando al contempo il loro impatto potenziale.
Infine, il fatto che le organizzazioni siano sempre più connesse con i partner tramite API significa che un problema nei sistemi può avere un impatto a effetto domino su altre organizzazioni. L'implementazione del chaos engineering aiuta le organizzazioni a comprendere i punti deboli della loro architettura e a correggerli, creando in definitiva la capacità di anticipare i guasti futuri.
Un caos engineering di successo aiuta le organizzazioni a ridurre al minimo i problemi tecnici con un impatto significativo sui clienti, e supporta anche la costruzione di architetture di sistema complesse più forti e resilienti. Una volta che un'organizzazione decide di perseguire il caos engineering, il passaggio successivo consiste nel determinare se eseguirlo nell'ambiente di pre-produzione o di produzione.
I team DevOps hanno diverse opzioni per eseguire esperimenti di caos engineering per testare vari processi di sistema.
La creazione del processo di chaos engineering ideale richiede diversi principi per garantire che un'organizzazione possa avere un sistema distribuito su larga scala.
Le organizzazioni che utilizzano il chaos engineering devono decidere se utilizzare i test di caos nei propri ambienti di produzione o pre-produzione. Esistono diversi motivi per cui il chaos engineering è più vantaggioso se applicato agli ambienti di produzione.
Gli ambienti dal vivo forniscono l'ambiente più accurato per comprendere l'impatto di un incidente sull'esperienza del cliente. Un altro motivo è che l'ambiente di pre-produzione potrebbe non avere le impostazioni definitive dell'ambiente dal vivo, introducendo quindi una certa variabilità negli esperimenti.
Ad esempio, un incidente in un ambiente di pre-produzione potrebbe non creare una risposta realistica perché non ha gli stessi livelli di traffico dell'ambiente dal vivo. Inoltre potrebbe non avere le stesse configurazioni di sicurezza.
Alcune organizzazioni hanno paura di causare intenzionalmente problemi al loro sito dal vivo, quindi eseguono i loro esperimenti sul sito di pre-produzione o di sviluppo. Ciò garantisce che eventuali problemi non influiscano sull'esperienza del cliente dal vivo. Per mitigare questo problema, alcune organizzazioni iniziano in ambienti di pre-produzione per gestire il processo prima di passare all'ambiente di produzione dal vivo.
Le organizzazioni scelgono quale ambiente utilizzare in base alla loro tolleranza al rischio. In definitiva, il chaos engineering mira a testare problemi reali su larga scala, motivo per cui gli ambienti di produzione forniscono il quadro più accurato di ciò che sta accadendo e di ciò che deve essere risolto.
Il caos engineering offre alle organizzazioni diversi vantaggi chiave.
I clienti hanno grandi aspettative riguardo alla disponibilità dei servizi che acquistano dalle aziende. Qualsiasi downtime o incapacità di accedere a quanto hanno pagato può avere un effetto serio sulla soddisfazione del cliente, portando a una perdita di entrate e danni alla reputazione. I sistemi di test e l'identificazione delle soluzioni riducono il rischio che un sistema sia inattivo per un lungo periodo di tempo.
Le interruzioni possono derivare da codice errato, problemi al server o minacce esterne. Quest'ultimo può colpire anche con pratiche di sicurezza eccellenti. Il chaos engineering aiuta a identificare i problemi che possono essere sfruttati, in modo che le organizzazioni possano introdurre patch e correzioni di bug per mantenere i loro servizi sicuri.
Il chaos engineering consente alle organizzazioni di creare un progetto più informato su come affrontare i problemi che si presenteranno in futuro. Le organizzazioni che adottano il chaos engineering avranno piani di intervento specifici per molti incidenti, consentendo una riparazione più rapida e tempi di inattività ridotti. Il chaos engineering può ridurre i tempi di inattività7 di oltre il 20%.
Gli esperimenti di caos engineering identificano il modo in cui un sistema alloca le risorse. L'introduzione degli esperimenti dimostrerà in che modo il sistema gestisce i carichi, mostrando dove sono o dove è probabile che si verifichino i colli di bottiglia.
Il caos engineering aiuta i team a creare maggiore resilienza e flessibilità del sistema nel proprio software. Pertanto, le organizzazioni possono affrontare la codifica di nuovi software e soluzioni in modo più intelligente, perché sanno come il sistema attuale gestisce i problemi.
Scopri cosa pensano della sostenibilità i CEO e come la inseriscono nelle loro attività.
Scopri sette tendenze aziendali che gli esperti prevedono influenzeranno il mondo nei prossimi tre anni e sette sfide che vale la pena affrontare per trarne vantaggio.
Scopri come Climate Service ha integrato i dati climatici nelle decisioni finanziarie utilizzando la tecnologia IBM.
Scopri come l'utilizzo della metodologia IBM Garage ha aiutato Kraft Heinz Company ad aumentare la velocità di vendita dei prodotti.
Reinventa la modalità di lavoro grazie al collegamento tra trasformazione aziendale e tecnologica per sbloccare l'agilità aziendale.
Reinventa e modernizza le risorse umane con l'AI al centro per ottenere risultati aziendali migliori e sbloccare il potenziale dei dipendenti.
Migliora le prestazioni finanziarie e sblocca il valore aziendale con servizi end-to-end che integrano analisi dei dati, AI e automazione in tutti i processi fondamentali.
1 Chaos Engineering: System Resiliency in Practice (link esterno a ibm.com), Casey Rosenthal, Nora Jones, 2020.
2 What is Chaos Monkey? Chaos engineering explained (link esterno a ibm.com), InfoWorld, 13 maggio 2020.
3 Knight Capital Says Trading Glitch Cost It USD 440 Million (link esterno a ibm.com), New York Times, 2012.
4 There Is No Resilience without Chaos (link esterno a ibm.com), The New Stack, 13 aprile 2023.
5 Incident Management in the Cloud Era (link esterno a ibm.com), Constellation Research, 2023.
6 ChAP: Chaos Automation Platform (link esterno a ibm.com), Netflix Blog, 26 luglio 2017.
7 The I&O Leader’s Guide to Chaos Engineering (link esterno a ibm.com), Gartner, 28 ottobre 2021.