Home topics cos'è il caos engineering Che cos'è il caos engineering?
Esplora IBM Instana
Grafico che rappresenta una stringa di 1 e 0

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 il caos engineering. Non si tratta di un processo casuale in cui gli ingegneri terminano istanze o servizi o causano in altro modo il guasto dei sistemi senza alcuno scopo. Questo processo identifica potenziali problemi futuri, consentendo ai team di progettazione di risolverli in modo proattivo ed evitarli nell'ambiente dal vivo in futuro. 

Il caos 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 lo ha scoperto in prima persona quando è passato dall'on-premise al cloud(link esterno a ibm.com). In quell'occasione, ha subito un'interruzione che ha portato a un'interruzione dell'erogazione del servizio durata tre giorni nel 2008. Si è trattato di un episodio precedente la sua trasformazione in un’operazione di streaming video, che avrebbe reso tale interruzione immensamente più costosa. Di conseguenza, Netflix ha deciso di fare tutto il possibile per ridurre al minimo le interruzioni e ha iniziato a introdurre il caos engineering nei suoi workflow per identificare i problemi in modo proattivo e ridurre al minimo i danni se e quando si verifica un guasto inevitabile.

Netflix ha creato Chaos Monkey2(link esterno a ibm.com), uno strumento open source che crea incidenti casuali nei servizi e nell'infrastruttura IT volto a identificare i punti deboli da correggere o risolvere tramite procedure di ripristino automatiche quando si sposta 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 caos engineering. 

Il caos engineering è un'importante difesa contro guasti dell'infrastruttura, interruzioni o componenti mancanti nell'ambiente di produzione di un'organizzazione. Aiuta i Site Reliability Engineer (SRE) e gli altri membri del team DevOps a fornire in modo continuo i servizi evitando interruzioni significative, comprendendo meglio le vulnerabilità e sapendo come ridurre al minimo 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 di transazione per una società di servizi finanziari può comportare la perdita di milioni di dollari(link esterno a ibm.com). Forse le organizzazioni non sono in grado di evitare tutti gli incidenti IT, ma possono ridurre al minimo i danni utilizzando il caos management per comprendere gli scenari probabili e le migliori soluzioni possibili. 

Fai un tour

IBM Instana Observability offre a tutti, in tutta l'azienda, un accesso di facile utilizzo ai dati desiderati con il contesto necessario per fornire una rapida prevenzione e correzione dei problemi.

Contenuti correlati

Iscriviti alla newsletter IBM

Organizzazioni che traggono vantaggio dal caos engineering

È consigliabile che le organizzazioni con elevata resilienza, maturità digitale e alta osservabilità attraverso dashboard e altri strumenti adottino il caos engineering per intervenire immediatamente sui problemi che si verificano attraverso gli esperimenti. Le organizzazioni che non dispongono di questa osservabilità4 (link esterno a ibm.com) possono impiegare troppo tempo per risolvere gli esperimenti che creano attraverso il caos engineering.

Il caos 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. (link esterno a ibm.com) 

Inoltre, l'aumento dell'uso dei microservizi, che aumenta il numero di host o container in esecuzione in un sistema, crea sfide uniche (link esterno a ibm.com) 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 caos engineering aiutare le organizzazioni a migliorare anche la velocità delle loro pipeline di integrazione continua e di consegna continua (CI/CD). Incorporare il caos engineering nelle CI/CD, come ha fatto Netflix(link esterno a ibm.com), Consente alle organizzazioni di automatizzare gli esperimenti continui, controllandone al contempo l'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 caos 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.

Tipi di esperimenti del caos engineering

I team DevOps hanno diverse opzioni per eseguire esperimenti di caos engineering per testare vari processi di sistema.

  • Immissione di latenza: i team DevOps creano intenzionalmente scenari che emulano una connessione di rete lenta o difettosa, che include l’introduzione di ritardi di rete o tempi di risposta più lenti.
  • Immissione di guasti: comporta l'introduzione intenzionale di errori nel sistema per determinare come influisce su altri sistemi dipendenti e se interrompe i servizi. Esempi di immissioni di guasti includono l'induzione di errori al disco, l'interruzione dei processi, l'arresto di un host o l'introduzione di aumenti di potenza o temperatura. Le immissioni di guasti possono aiutare le organizzazioni a identificare eventuali singoli punti di guasto che possono causare il malfunzionamento dell'intero sistema.
  • Generazione del carico: si riferisce allo stress intenzionale del sistema, raggiunto inviando i livelli di traffico significativi ben oltre le normali operazioni. Questo aiuta i Site Reliability Engineers (SRE) a capire eventuali colli di bottiglia nel sistema, che a loro volta consentono di costruire sistemi più scalabili. 
  • Test canary: comporta il rilascio di un nuovo prodotto o funzionalità per un piccolo gruppo di utenti. In questo modo, eventuali problemi tecnici o bug influenzeranno solo una percentuale di visitatori, lasciando al resto del pubblico l'accesso all'esperienza del sito web esistente.

 

Best practice di caos engineering 

La creazione del processo di caos engineering ideale richiede diversi principi per garantire che un'organizzazione possa avere un sistema distribuito su larga scala. 

  • Comprendere il sistema: implica una conoscenza completa del sistema olistico, delle sue proprietà e funzioni emergenti e di topologia, architettura, dipendenze, comportamento allo stato stabile, risposta in uscita e caratteristiche come disponibilità, latenza e velocità effettiva.
  • Accettare il fallimento: inizialmente, sembra paradossale che gli ingegneri del software permettano che si verifichi un incidente, quando esistono proprio per prevenire tali eventi. Tuttavia, le interruzioni si verificheranno sempre nei servizi IT, ed è meglio sperimentarle in un ambiente controllato per identificare la soluzione in anticipo, anziché dopo ore, se il team dell'organizzazione è fuori servizio o non ha mai riscontrato quel problema specifico.
  • Stabilire un comportamento in stato stabile: innanzitutto, il team di progettazione deve definire come deve comportarsi il sistema quando funziona correttamente, in modo da poter confrontare l'impatto degli esperimenti rispetto a tale stato stabile.
  • Identificare gli incidenti del mondo reale: gli esperimenti di caos engineering devono avvicinarsi il più possibile a ciò che potrebbe accadere in un giorno qualunque, invece di creare situazioni improbabili. Guasti alla rete e all'infrastruttura, codice errato, problemi di alimentazione e sovraccarico del traffico sono potenziali eventi.
  • Creare una giornata di simulazione: il caos engineering può studiare l'ambiente in una giornata di simulazione, in cui vengono eseguiti più test durante un unico giorno per massimizzare le risorse e identificare e risolvere quanti più problemi possibile. 
  • Utilizzare l’automazione: le organizzazioni di tutte le dimensioni possono utilizzare il caos engineering automatizzando gli esperimenti, che richiederebbero troppo lavoro se condotti manualmente. Ciò riduce parte del carico sui team IT durante il processo di caos engineering. La progettazione degli esperimenti, l'immissione dei guasti e il provisioning dell'infrastruttura sono tutti aspetti della sperimentazione che le organizzazioni possono automatizzare.
  • Fare attenzione alla portata dell'impatto: un caos engineer deve fare molta attenzione per ridurre al minimo la portata dell'impatto, in modo che il danno effettivo per i clienti sia il minore possibile. Alcuni modi per ridurre al minimo la portata dell'impatto sono:
    • Puntare su un sottoinsieme di servizi: il caos engineering, soprattutto in un contesto di produzione, non deve interrompere in modo sostanziale il servizio di un'organizzazione. Se si tratta di un sottoinsieme specifico di servizi, l'impatto di un incidente può essere ridotto al minimo, garantendo che non si verifichi un blocco dell'intero sistema.
    • Eseguire l'esperimento per un tempo stabilito: l'esperimento deve avere un inizio e una fine. Lo scopo dell'esperimento è creare un incidente e risolverlo, non quello di lasciarlo proseguire senza controllo per un lungo periodo.
    • Eseguire l'esperimento lontano dai picchi di traffico: le organizzazioni devono evitare di eseguire esperimenti durante i periodi di picco, a meno che non stiano cercando specificamente di valutare in che modo l'elevata capacità influisce sul sistema durante un incidente. 
    • Eseguire l'esperimento nell'ambiente di sviluppo: il modo più semplice per garantire che nessun cliente subisca interruzioni del servizio è eseguirlo nell'ambiente di pre-produzione. Tuttavia, ciò significa che le condizioni saranno diverse da quelle dell'ambiente di produzione, fornendo potenzialmente un'immagine errata di ciò che sta accadendo. Per ridurre al minimo questo problema, assicurati che gli ambienti di pre-produzione e di produzione siano il più simili possibile. 
    • Sperimentare su ogni componente: la sperimentazione del caos non finisce mai, perché il sistema di un'organizzazione è in continua evoluzione. Un altro obiettivo dovrebbe essere quello di testare "tutto": esaminare tutti i componenti, gli strati, i servizi e le loro dipendenze durante il processo.
Confronto fra ambienti di produzione e ambienti di pre-produzione

Le organizzazioni che utilizzano il caos engineering devono decidere se utilizzare i test di caos nei propri ambienti di produzione o pre-produzione. Esistono diversi motivi per cui il caos 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 e potrebbe non avere le sue 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 sceglieranno quale ambiente utilizzare in base alla loro tolleranza al rischio. In definitiva, il caos engineering mira a testare problemi reali su larga scala, motivo per cui gli ambienti di produzione forniranno il quadro più accurato di ciò che sta accadendo e di ciò che deve essere risolto. 

Vantaggi del caos engineering

Il caos engineering offre alle organizzazioni diversi vantaggi chiave.

Un miglior servizio clienti

I clienti hanno grandi aspettative riguardo alla disponibilità dei servizi che acquistano dalle aziende. Eventuali tempi di inattività o l'impossibilità di accedere a ciò per cui hanno pagato possono avere un grave effetto sulla loro soddisfazione, con conseguente perdita di ricavi e danni alla reputazione. I sistemi di test e l'identificazione delle soluzioni riducono il rischio che un sistema rimanga inattivo per un periodo di tempo significativo.

 

Maggiore sicurezza dei dati

Le interruzioni possono derivare da errori nel codice, problemi del server o minacce esterne che possono colpire anche nonostante le ottime pratiche di sicurezza messe in atto. Il caos engineering aiuta a identificare i problemi che possono essere sfruttati, in modo che le organizzazioni possano introdurre patch e correzioni di bug (link esterno a ibm.com) per proteggere i propri servizi. 

Tempi di inattività ridotti al minimo

Il caos 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 caos engineering avranno piani di intervento specifici per molti incidenti, consentendo una riparazione più rapida e tempi di inattività ridotti. Il caos engineering può ridurre i tempidi inattività7 (link esterno a ibm.com) fino al 20%. 

 

Scalabilità aumentata

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.

 

Informare lo sviluppo futuro del software

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.

Esplora i prodotti di caos engineering
Osservabilità IBM Instana APM

Ottieni il contesto di cui hai bisogno per risolvere gli incidenti più velocemente con la soluzione di osservabilità di IBM.

Esplora IBM Instana

Osservabilità Flexera One with IBM Observability

Ottimizza l'utilizzo e i costi del software

 

Esplora Flexera One con IBM Observability

Risorse di caos engineering Cos'è AIOps?

Scopri come l'intelligenza artificiale per l'esercizio IT (AIOps, Artificial Intelligence for IT Operations) utilizza i dati e l'apprendimento automatico (o machine learning) per migliorare e automatizzare la gestione dei servizi IT

Cos'è l'application performance management?

Prevedi e previeni i problemi di prestazioni prima che abbiano un impatto sulla tua attività con l'application performance management

Cosa sono le operazioni IT?

Le operazioni IT e le AIOp supervisionano e automatizzano la gestione, l'erogazione e il supporto dei servizi IT all'interno di un'organizzazione.

Cos'è la gestione dei servizi IT?

L'ITSM è il modo in cui un'organizzazione garantisce che i propri servizi IT funzionino nel modo necessario per gli utenti e l'azienda.

Cos'è l'ingegneria dell'affidabilità del sito?

Automatizza le attività delle operazioni IT, accelera la distribuzione del software e riduci al minimo i rischi IT con l'ingegneria dell'affidabilità del sito

Che cos'è l'automazione intelligente?

L'automazione intelligente combina l'AI e le tecnologie di automazione, consentendo di automatizzare le attività di basso livello all'interno dell'azienda.

Fai il passo successivo

IBM Instana consente osservabilità in tempo reale che tutti, e chiunque, possono utilizzare. Offre un rapido time to value, verificando al contempo che la strategia di osservabilità possa tenere il passo con la complessità dinamica degli ambienti di oggi e di domani. Dal mobile al mainframe, Instana supporta oltre 250 tecnologie ed è in continua crescita. 

Esplora IBM Instana Prenota una demo live
Note a piè di pagina

1 Chaos Engineering: System Resiliency in Practice, (link esterno a ibm.com) Casey Rosenthal, Nora Jones, 2020
What is Chaos Monkey? Chaos engineering explained, (link esterno a ibm.com) InfoWorld, 13 maggio 2020
Knight Capital Says Trading Glitch Cost It $440 Million, (link esterno a ibm.com) New York Times, 2012
4 There Is No Resilience without Chaos, The New Stack, (link esterno a ibm.com) 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 giugno 2017
7 The I&O Leader’s Guide to Chaos Engineering, (link esterno a ibm.com) Gartner, 28 ottobre 2021