Share via


Comprendere la progettazione e la resilienza del caos

Prima di iniziare a usare Azure Chaos Studio, è utile comprendere i concetti di base relativi alla progettazione dell'affidabilità del sito da applicare.

Che cos'è la resilienza?

Non è mai stato più 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ò essere offline e possono verificarsi interruzioni o interruzioni del servizio in qualsiasi momento. Piccole interruzioni in un'area possono essere magnificate e hanno effetti collaterali di lunga durata in un'altra.

Le applicazioni e i servizi devono pianificare e gestire problemi come:

  • Interruzioni del servizio.
  • Interruzioni a 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 essere rafforzati in caso di interruzioni.

Le applicazioni e i servizi che gestiscono stress e problemi sono normalmente resilienti. L'affidabilità dei singoli componenti è buona, ma la resilienza è una proprietà dell'intero sistema. La resilienza del sistema end-to-end deve essere convalidata in un ambiente integrato di tipo produzione con le condizioni e il carico che si trovano di fronte all'ambiente di produzione.

Che cosa sono l'ingegneria del caos e l'iniezione di errore?

  • Chaos engineering: la pratica di sottoporre applicazioni e servizi a stress e fallimenti reali. L'obiettivo è creare e convalidare la resilienza a condizioni inaffidabili e dipendenze mancanti.
  • Inserimento di errori: l'atto di introdurre un errore in un sistema. È possibile usare errori diversi, ad esempio la latenza di rete o la perdita di accesso all'archiviazione, ai componenti di sistema di destinazione. È possibile creare scenari da cui un'applicazione o un servizio deve essere in grado di gestire o ripristinare.

Un esperimento chaos è l'applicazione di errori singolarmente, in parallelo o 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 eventuali problemi che si verificano.

Un esperimento può rappresentare uno scenario reale, ad esempio un'interruzione dell'alimentazione del data center o una latenza di rete a un server DNS. Può anche essere usato per simulare condizioni perimetrali che si verificano. Esempi sono black friday shopping sprees o quando i biglietti del concerto vanno in vendita per una band popolare.