Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Aumentare la resilienza e migliorare l'esperienza del cliente utilizzando l'ingegneria del caos su AWS
Laurent Domb, responsabile tecnico, Federal Financials, Amazon Web Services
Aprile 2025 (storia del documento)
L'ingegneria del caos è la disciplina che consiste nella sperimentazione su un'applicazione per aumentare la fiducia nella capacità dell'organizzazione e dell'applicazione di resistere a condizioni di produzione turbolente. Si tratta di un approccio proattivo alla resilienza, con l'obiettivo di verificare se l'applicazione e l'organizzazione sono in grado di assorbire, adattarsi e infine riprendersi dai problemi del servizio introducendo guasti controllati tra persone, processi e tecnologie. L'intento è anche quello di identificare ed eliminare i punti deboli prima che possano causare interruzioni o altre interruzioni della produzione.
In Amazon, sappiamo che il fallimento è inevitabile nei sistemi distribuiti, al punto che funzionare nonostante la presenza di guasti è una modalità operativa normale. Poiché le interazioni tra i servizi sono destinate a fallire, è necessario comprendere come reagiscono i servizi durante le varie modalità di errore e creare servizi resilienti a vulnerabilità chiave come errori di dipendenza, tempeste di tentativi, zone di disponibilità compromesse e esaurimento delle risorse dell'host.
Prendiamo l'esempio di un Retry Storm. Un errore localizzato in un client può avere un impatto significativo su più servizi. Questo effetto viene comunemente chiamato effetto farfalla. Una tempesta di tentativi è una manifestazione dell'effetto farfalla, in cui una dipendenza non funzionante spinge i client, e i client di tali client, a riprovare l'operazione fallita, con conseguente crescita esponenziale del traffico. I servizi si sovraccaricano perché devono rispondere al traffico regolare oltre a ripetere il traffico, gestendo al contempo un peggioramento delle prestazioni.
L'ingegneria del caos è emersa come risposta alla crescente complessità dei sistemi distribuiti. È un approccio multidisciplinare che combina i principi della teoria del caos, del pensiero sistemico e dell'ingegneria per progettare e gestire sistemi complessi resistenti a eventi e comportamenti imprevisti. Fondamentalmente, l'ingegneria del caos si occupa della comprensione e della gestione del comportamento di sistemi complessi in condizioni di incertezza e imprevedibilità. Riconosce che gli approcci tradizionali all'ingegneria, che si basano sulla previsione e sul controllo dei risultati, sono spesso insufficienti per affrontare la natura complessa e dinamica dei sistemi distribuiti. Man mano che questi sistemi crescono, spesso superano l'ambito di comprensione di ogni singolo individuo.
L'ingegneria del caos fornisce concetti, tecniche e strumenti per iniettare intenzionalmente i guasti nei sistemi e scoprire i punti deboli prima che si manifestino in produzione. Questo approccio proattivo consente alle organizzazioni di acquisire la certezza che i propri sistemi funzioneranno in condizioni di stress. Sebbene l'ingegneria del caos sia ancora una pratica in evoluzione, rappresenta un cambiamento fondamentale verso la progettazione, la gestione e il funzionamento dei sistemi informatici moderni per renderli resilienti di fronte alla crescente complessità e interconnessione.
Le seguenti sezioni di questa guida illustrano i vantaggi dell'ingegneria del caos, spiegano come condurre esperimenti di ingegneria del caos e descrivono gli approcci che è possibile adottare per implementare l'ingegneria del caos su larga scala all'interno dell'organizzazione. Sono inclusi anche esempi di documenti di pianificazione degli esperimenti e dei risultati degli esperimenti che è possibile utilizzare come modelli per gli esperimenti di ingegneria del caos.
La sezione successiva esplora in che modo le caratteristiche dell'ingegneria del caos differiscono dai tradizionali test di resilienza come i test di unità, di fumo o di integrazione.