REL 12: Come si testa l'affidabilità?
Dopo aver progettato il carico di lavoro in modo da essere resiliente alle sollecitazioni della produzione, i test sono l'unico modo per garantire il funzionamento corretto e offrire la resilienza prevista.
Risorse
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
Resilience Engineering: Learning to Embrace Failure
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Use CodePipeline with AWS CodeBuild to test code and run builds
Automate your operational playbooks with AWS Systems Manager
Principles of Chaos Engineering
Apache JMeter
Casey Rosenthal, Lorin Hochstein, Aaron Blohowiak, Nora Jones, Ali Basiri. “Chaos
Engineering” (August 2017)
AWS Marketplace: products that can be used for continuous integration
APN Partner: partners that can help with implementation of a continuous integration
pipeline
Best practice:
-
Utilizzo dei playbook per analizzare gli errori: Abilita risposte coerenti e tempestive a scenari di guasto che non sono ben compresi, documentando il processo di analisi nei playbook. I playbook sono le fasi predefinite eseguite per identificare i fattori che contribuiscono a uno scenario di guasto. I risultati provenienti da qualsiasi fase del processo vengono utilizzati per stabilire i passaggi da intraprendere successivamente fino all'identificazione o alla risoluzione del problema.
-
Esecuzione di analisi post-incidente: Esamina gli eventi che influiscono sui clienti e identifica i fattori che vi hanno contribuito e gli elementi di azione preventivi. Utilizza queste informazioni per sviluppare modi per limitare o prevenire il ripetersi degli imprevisti. Sviluppa procedure per attivare risposte rapide ed efficaci. Comunica i fattori che hanno contribuito al presentarsi dell'imprevisto e le azioni correttive secondo necessità, specificamente mirate per il pubblico di destinazione. All'occorrenza, adotta un metodo per comunicare queste cause ad altri.
-
Test dei requisiti funzionali: Includono test delle unità e test di integrazione che convalidano la funzionalità richiesta.
-
Test dei requisiti di dimensionamento e prestazioni: Includono il test del carico per verificare che il carico di lavoro soddisfi i requisiti di dimensionamento e prestazioni.
-
Test della resilienza tramite l'utilizzo dell'ingegneria del caos: Esegui test che inseriscono regolarmente guasti negli ambienti di pre-produzione e produzione. Ipotizza il modo in cui il carico di lavoro reagirà al guasto, quindi confronta la tua ipotesi con i risultati del test ed esegui l'iterazione se non corrispondono. Assicurati che il test di produzione non influisca sugli utenti.
-
Esecuzione regolare di giornate di gioco: Utilizza le giornate di gioco per provare regolarmente le procedure di errore il più vicino possibile alla produzione (anche negli ambienti di produzione) con le persone che si occuperanno di eventuali scenari di errore reali. Le giornate di gioco applicano misure per garantire che i test di produzione non influiscano sugli utenti.
Piano di miglioramento
Utilizzo dei playbook per analizzare gli errori
- Implementazione dei playbook come codice: Esegui le operazioni come codice mediante lo scripting dei playbook per assicurare
coerenza e ridurre gli errori causati dai processi manuali. I playbook possono essere
composti da più script che rappresentano le diverse fasi che potrebbero essere necessarie
per identificare i fattori che contribuiscono all'origine di un problema. Le attività
dei runbook possono essere attivate o eseguite nell'ambito delle attività dei playbook
oppure possono richiedere l'esecuzione di un playbook in risposta agli eventi identificati.
Automate your operational playbooks with AWS Systems Manager
AWS Systems Manager Run Command
AWS Systems Manager Automation
What is AWS Lambda?
What Is Amazon EventBridge?
Using Amazon CloudWatch Alarms
Esecuzione di analisi post-incidente
- Assicurati che i fattori che hanno contribuito al verificarsi dell'incidente siano onesti e non presentino colpe.
- Se non documenti i tuoi problemi, non puoi correggerli.
- Assicurati che l'analisi post-incidente sia esente da colpe, in modo da poter essere obiettivo riguardo alle azioni correttive proposte e promuovere autovalutazione e collaborazione oneste nei team applicativi.
What is log analytics?
Test dei requisiti funzionali
Use CodePipeline with AWS CodeBuild to test code and run builds
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Software test automation
Test dei requisiti di dimensionamento e prestazioni
Distributed Load Testing on AWS: simulate thousands of connected users
Apache JMeter
- Distribuisci la tua applicazione in un ambiente identico al tuo ambiente di produzione
ed esegui un test di carico.
- Utilizza un'infrastruttura come code concept per creare un ambiente il più simile possibile al tuo ambiente di produzione.
Test della resilienza tramite l'utilizzo dell'ingegneria del caos
Principles of Chaos Engineering
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
- Per introdurre un errore nel carico di lavoro, utilizza software open source
The Chaos ToolKit
Shopify Toxiproxy
Netflix Chaos Monkey - Oppure usa il software commerciale disponibile tramite AWS Marketplace
Gremlin - O crea il tuo codice di introduzione di errori
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager - Esegui test sugli errori di tutti i componenti e dipendenze esterne.
- Simula le condizioni che possono produrre cali di prestazioni utilizzando le estensioni di proxy comuni per introdurre latenza e messaggi persi. Puoi anche creare implementazioni personalizzate per creare condizioni in cui si verificano cali di prestazioni.
Esecuzione regolare di giornate di gioco
- Esegui i test di carico o delle prestazioni e successivamente esegui l'introduzione degli errori.
- Ricerca anomalie nei tuoi runbook e opportunità di provare i tuoi playbook.
- In caso di deviazione dai tuoi runbook, perfeziona il runbook o correggi il comportamento. Se ti eserciti sul tuo playbook, identifica il runbook che avrebbe dovuto essere usato, oppure creane uno nuovo.