Raccomandazioni per la progettazione di una strategia di test di affidabilità

Si applica a questa raccomandazione dell'elenco di controllo di affidabilità Well-Architected Power Platform:

RE:06 Testa gli scenari di resilienza e disponibilità applicando i principi dell'ingegneria del caos nei tuoi ambienti di test e produzione. Utilizza i test per garantire che le tue strategie di implementazione del degrado graduale siano efficaci eseguendo test di carico simulati e di malfunzionamento attivi.

Questa guida descrive le raccomandazioni per progettare una strategia di test di affidabilità per convalidare e ottimizzare l'affidabilità del carico di lavoro. I test di affidabilità sono incentrati sulla resilienza e sulla disponibilità del carico di lavoro, in particolare sui flussi critici identificati durante la progettazione della soluzione. Questa guida fornisce indicazioni generali sui test e indicazioni specifiche per il fault injection e l'ingegneria del caos.

Definizioni

Termine Definizione
Disponibilità La quantità di tempo in cui il carico di lavoro di un'applicazione viene eseguito in uno stato integro senza tempi di inattività significativi.
Ingegneria del caos La pratica di sottoporre applicazioni e servizi a stress e guasti del mondo reale. L’obiettivo dell’ingegneria del caos è creare e convalidare la resilienza con condizioni inaffidabili e dipendenze mancanti.
Fault injection L'atto di introdurre un errore in un sistema per testare la resilienza del sistema.
Ripristino Un sinonimo di resilienza.
Resilienza La capacità del carico di lavoro di un'applicazione di resistere e ripristinare le modalità di errore.

Strategie di progettazione chiave

I test sono essenziali per garantire che il carico di lavoro soddisfi i propri obiettivi di affidabilità e possa gestire correttamente gli errori. Il fault injection è un tipo di test che introduce deliberatamente errori o stress nel sistema per simulare scenari del mondo reale. Utilizzando tecniche di fault injection e di ingegneria del caos, puoi scoprire e risolvere in modo proattivo i problemi prima che influenzino il tuo ambiente di produzione. Questa sezione fornisce indicazioni generali su test, fault injection e ingegneria del caos per il carico di lavoro.

Indicazioni generali sui test

Esegui regolarmente test per convalidare soglie, obiettivi e ipotesi esistenti. Quando si verifica un cambiamento importante nel carico di lavoro, esegui test regolari. Esegui la maggior parte dei test in ambienti di test e di gestione temporanea. È inoltre utile eseguire un sottoinsieme di test sul sistema di produzione.

Automatizza i test per garantire copertura e riproducibilità coerenti dei test. Automatizza le attività di test comuni e integrale nei tuoi processi di creazione. Testare manualmente il software è noioso e può generare errori, ma è possibile condurre test esplorativi manuali. Per i casi in cui è necessario sviluppare test automatizzati, utilizza test manuali per determinare l'ambito dei test da sviluppare.

Adottare un approccio di test con spostamento a sinistra per eseguire test di resilienza e disponibilità nelle prime fasi del ciclo di sviluppo.

Adatta un formato di documentazione semplice, in modo che sia facile per tutti comprendere il processo e i risultati di ogni test regolare.

Condividi i risultati documentati con i team appropriati, come team operativi, leadership tecnologica, stakeholder aziendali e stakeholder di ripristino di emergenza. I risultati devono informare il perfezionamento degli obiettivi di affidabilità, come obiettivi del livello di servizio (SLO), contratti di servizio (SLA), obiettivi del tempo di ripristino (RTO) e obiettivi del punto di ripristino (RPO).

Crea una cadenza di test regolare per i tuoi backup. Ripristinare i dati su sistemi isolati per garantire che i backup siano validi e che i ripristini funzionino.

Documenta e condividi le metriche dei tempi di ripristino con gli stakeholder del ripristino di emergenza per garantire che le aspettative per il ripristino siano appropriate.

Utilizza procedure di test di distribuzione standard del settore per garantire un processo di distribuzione automatizzato, prevedibile ed efficiente.

Metti alla prova la capacità del tuo carico di lavoro di resistere a guasti temporanei. Per ulteriori informazioni, vedi Raccomandazioni per la gestione di errori temporanei.

Testa il modo in cui il tuo carico di lavoro gestisce gli errori nei servizi dipendenti o in altre dipendenze utilizzando il fault injection.

Metti alla prova il tuo piano di ripristino di emergenza per rispondere a guasti catastrofici e altri incidenti gravi.

Metti alla prova la capacità del tuo carico di lavoro di degradarsi gradualmente e ridurre al minimo il raggio d'azione del malfunzionamento dei componenti utilizzando il fault injection.

Trarre vantaggio dalle interruzioni pianificate e non pianificate

Quando il tuo carico di lavoro è offline a causa di una manutenzione pianificata o di un'interruzione non pianificata, hai un'opportunità unica di eseguire test e migliorare la tua comprensione del carico di lavoro. Le sezioni seguenti forniscono raccomandazioni per ogni scenario.

Manutenzione pianificata

Quando hai finestre di manutenzione pianificata per aggiornamenti o patch, puoi testare componenti e flussi che non sono coinvolti nell'attività di manutenzione. Esegui test senza il rischio potenziale di ridurre inaspettatamente il carico di lavoro o di metterlo completamente offline. Se hai abbastanza tempo durante la finestra di manutenzione, puoi anche testare i componenti e i flussi coinvolti nella manutenzione una volta completata l'attività di manutenzione.

Interruzione non pianificata

Utilizza ogni incidente di interruzione come un'opportunità per saperne di più sul tuo carico di lavoro e migliorarne la resilienza seguendo questi passaggi, ordinati per priorità:

  1. Riporta online il carico di lavoro per i tuoi utenti. Potrebbe essere necessario eseguire una soluzione alternativa al problema, risolvere il problema o avviare i processi di ripristino.

  2. Determina la causa principale dell'interruzione e risolvila. Se riesci a risolvere la causa principale nell'ambito dell'indagine, documenta la causa principale e le misure adottate per risolverla. Se il problema richiede un'altra finestra di manutenzione in un secondo momento, assicurati che le misure di mitigazione siano in grado di gestire il carico previsto testandolo accuratamente. Assicurati di aver impostato un monitoraggio sufficiente per coprire le misure di mitigazione.

  3. Se applicabile, cerca lo stesso problema o i punti deboli della configurazione che potrebbero essere interessati da problemi simili, in tutti i componenti del tuo carico di lavoro. Usa questa opportunità per affrontare in modo proattivo questi componenti. Consulta la cronologia degli incidenti per rilevare modelli di problemi simili nel tuo carico di lavoro.

  4. Utilizza i risultati per migliorare la tua strategia di test. Assicurati di aver risolto con successo la causa principale e problemi simili testando direttamente lo stesso errore.

Indicazioni su fault injection e ingegneria del caos

Il test di fault Injection segue i principi dell'ingegneria del caos evidenziando la capacità del carico di lavoro di reagire ai guasti dei componenti. Esegui test di fault injection negli ambienti di preproduzione e produzione. Applica le informazioni apprese eseguendo l'analisi della modalità di errore per assicurarti di testare solo gli errori a cui dai la priorità e di disporre di strategie di mitigazione che risolvano gli errori.

Le linee guida chiave dell’ingegneria del caos sono:

  • Sii proattivo. Non aspettare che si verifichino guasti. Cerca di anticipare i guasti conducendo esperimenti sul caos per scoprire e risolvere i problemi prima che influenzino il tuo ambiente di produzione.

  • Accetta il guasto. Accetta e impara dai guasti che si verificano nel tuo sistema. Considera i guasti come una parte naturale di sistemi complessi e usali come opportunità per apprendere e migliorare l'affidabilità del tuo sistema.

  • Testa il sistema Inietta deliberatamente errori o stress nel tuo sistema per testarne la resilienza. Simula guasti o interruzioni reali per testare e migliorare le capacità di ripristino del carico di lavoro.

  • Crea immunità. Utilizza esperimenti di ingegneria del caos per migliorare la capacità del carico di lavoro di prevenire ed eseguire il ripristino degli errori.

L'ingegneria del caos è parte integrante della cultura del team del carico di lavoro e una pratica continua, non uno sforzo tattico a breve termine in risposta a una singola interruzione. Segui questo metodo standard quando progetti i tuoi esperimenti sul caos:

  1. Inizia con un'ipotesi. Ogni esperimento deve avere un obiettivo chiaro, come testare la capacità di un flusso di resistere alla perdita di un particolare componente.

  2. Misura il comportamento della baseline. Assicurati di disporre di metriche di affidabilità e prestazioni coerenti per il flusso e i componenti coinvolti in un esperimento da confrontare con lo stato degradato durante l'esecuzione dell'esperimento.

  3. Inietta uno o più errori. L'esperimento deve mirare intenzionalmente componenti specifici che possono essere recuperati rapidamente e devi avere un'aspettativa informata dell'effetto che causerà il fault injection per aiutare a controllare il raggio d'azione dell'esperimento.

  4. Monitora il comportamento risultante. Raccogli i dati di telemetria sui singoli componenti del flusso e sul comportamento del flusso end-to-end a cui è destinato l'esperimento per comprendere correttamente gli effetti dell'errore. Confronta le metriche raccolte con quelle della baseline per un quadro completo dei risultati del fault injection.

  5. Documenta il processo e le osservazioni. Mantenere record dettagliati dei tuoi esperimenti consentirà di prendere decisioni future informate sulla progettazione del carico di lavoro, assicurandoti di colmare le lacune emerse nel tempo.

  6. Identifica e agisci in base al risultato. Pianifica le fasi di correzione che possono essere aggiunte al backlog del carico di lavoro come miglioramenti. Assicurati che i piani di miglioramento della progettazione vengano riesaminati e testati in ambienti non di produzione secondo gli stessi processi delle altre distribuzioni.

Convalida periodicamente il processo, le scelte dell'architettura e il codice per rilevare rapidamente il debito tecnico, integrare nuove tecnologie e adattarsi ai requisiti in evoluzione.

Quando conduci esperimenti di fault injection:

  • Confermare che il monitoraggio sia in atto e che gli avvisi siano impostati.

  • Convalida il processo di assegnazione di un individuo direttamente responsabile (DRI) ad assumersi la responsabilità di un incidente.

  • Assicurati che la documentazione e i processi di indagine siano aggiornati.

Integra le seguenti raccomandazioni e considerazioni per ottimizzare la tua strategia di chaos testing:

  • Verifica le ipotesi del sistema. Con i test tenti di migliorare la resilienza del carico di lavoro e le strategie di progettazione del carico di lavoro. Cerca opportunità per iniettare errori nei componenti e nei flussi che ritieni affidabili in base alle esperienze passate. Potrebbero non essere affidabili nel tuo nuovo carico di lavoro.

  • Convalida il cambiamento. Senza test approfonditi, incluso il test di fault injection, potresti avere un quadro incompleto del carico di lavoro dopo aver apportato le modifiche. Ad esempio, potresti introdurre nuove dipendenze che non sono immediatamente evidenti.

  • Utilizza buffer di contratti di servizio. Limita il chaos testing per rispettare i contratti di servizio ed evitare potenziali effetti negativi dovuti a interruzioni. Gli obiettivi di ripristino del flusso e dei componenti aiutano a definire l'ambito dei test.

  • Stabilisci un budget di errore come investimento nel caos e nel fault injection. Il tuo budget di errore è la differenza tra il raggiungimento del 100% dello SLO e il raggiungimento dello SLO concordato.

  • Interrompi l'esperimento se va oltre l'ambito. I risultati sconosciuti sono un risultato atteso degli esperimenti sul caos. Cerca di raggiungere un equilibrio tra la raccolta di dati sostanziali sui risultati e l’impatto sul minor numero possibile di utenti di produzione.

  • Lavora a stretto contatto con i team di sviluppo per garantire la pertinenza degli errori inseriti. Utilizza gli incidenti o i problemi passati come guida. Esamina le dipendenze e valuta i risultati quando rimuovi tali dipendenze.

  • Identifica e documenta le dipendenze precedentemente sconosciute tra i diversi componenti nel tuo carico di lavoro che vengono rivelate attraverso il chaos testing.

  • Modifica i piani di ripristino come necessario per tenere conto delle dipendenze scoperte durante il chaos testing.

  • Utilizza i risultati dei tuoi esperimenti e test come base per nuovi esperimenti e test. Quando si verificano comportamenti inattesi, nuovi test potrebbero prendere di mira direttamente tali comportamenti e darti l’opportunità di progettare strategie di rimedio per essi.

Compromesso: i test di fault injection in produzione possono causare disagi e potenzialmente tempo di inattività. Sii trasparente con gli stakeholder riguardo a questa possibilità e assicurati di disporre di misure di protezione per terminare gli esperimenti e piani di ripristino dello stato precedente per invertire rapidamente gli errori introdotti.

Facilitazione di Power Platform

Puoi utilizzare risultati statici in Power Automate per restituire un risultato fisso per testare il carico di lavoro.

Power Apps Test Engine (anteprima) è un componente CLI di Power Platform che puoi utilizzare per testare app canvas autonome in Power Apps.

Azure Test Plans è una soluzione di gestione dei test basata su browser di facile utilizzo che fornisce tutte le funzionalità necessarie per test manuali pianificati, test di accettazione degli utenti, test esplorativi e raccolta di feedback dagli stakeholder.

Se il tuo carico di lavoro include risorse di Azure, puoi utilizzare Azure Chaos Studio, un servizio gestito che utilizza l'ingegneria del caos per aiutarti a misurare, comprendere e migliorare la resilienza delle tue applicazioni cloud e dei servizi.

Lista di controllo dell'affidabilità

Fare riferimento alla serie completa di raccomandazioni.