Comprendere la progettazione e la resilienza del caos
Prima di iniziare a usare Azure Chaos Studio è utile comprendere i concetti fondamentali relativi alla progettazione dell'affidabilità del sito da applicare.
Che cos'è la resilienza?
Non è mai stato così facile creare applicazioni distribuite su larga scala. L'infrastruttura è ospitata nel cloud e il supporto del linguaggio di programmazione è diversificato. Sono disponibili anche molti componenti e servizi open source e ospitati su cui eseguire la compilazione.
Sfortunatamente, non esiste alcuna garanzia di affidabilità per questi componenti e dipendenze sottostanti o per i sistemi basati su di essi. L'infrastruttura può andare offline e possono verificarsi problemi o interruzioni del servizio in qualsiasi momento. Piccole interruzioni in un'area possono essere ingrandirsi e avere effetti collaterali di lunga durata in un'altra area.
Le applicazioni e i servizi devono pianificare e gestire problemi come:
- Interruzioni di servizio.
- Interruzioni di dipendenze note e sconosciute.
- Carico imprevisto improvviso.
- Latenze in tutto il sistema.
Le applicazioni e i servizi devono essere progettati per gestire gli errori ed avere una protezione avanzata in caso di interruzioni.
Le applicazioni e i servizi che gestiscono stress e problemi normalmente sono resilienti. L'affidabilità dei singoli componenti è buona, anche se la resilienza è una proprietà dell'intero sistema. La resilienza del sistema end-to-end deve essere convalidata in un ambiente integrato, tipo ambiente di produzione con condizioni e carichi che affrontano in un ambiente di produzione.
Che cosa sono l'ingegneria del caos e l'inserimento di errori?
- Ingegneria del caos: la pratica di sottoporre applicazioni e servizi a stress ed errori reali. L'obiettivo è creare e convalidare la resilienza in condizioni inaffidabili e con dipendenze mancanti.
- Inserimento di errori: l'atto di introdurre un errore in un sistema. È possibile usare errori diversi, ad esempio la latenza di rete, la perdita di accesso all'archiviazione o ai componenti di sistema di destinazione. È possibile creare scenari che un'applicazione o un servizio devono essere in grado di gestire o ripristinare.
Un esperimento Chaos è l'applicazione di singoli errori, in parallelo o in modo sequenziale rispetto a una o più risorse o dipendenze della sottoscrizione. L'obiettivo è monitorare il comportamento e l'integrità del sistema in modo da poter agire su ogni problema che si verifica.
Un esperimento può rappresentare uno scenario reale, ad esempio un'interruzione dell'alimentazione del data center o una latenza di rete in un server DNS. Può anche essere usato per simulare condizioni estreme che si verificano. Un esempi è la frenesia degli acquisti durante il Black Friday o quando si vendono i biglietti del concerto di band popolare.