Aanbevelingen voor het ontwerpen van een strategie voor betrouwbaarheidstests
Is van toepassing op deze aanbeveling voor de controlelijst voor betrouwbaarheid van Azure Well-Architected Framework:
RE:08 | Test op tolerantie- en beschikbaarheidsscenario's door de principes van chaos-engineering toe te passen in uw test- en productieomgevingen. Gebruik tests om ervoor te zorgen dat de implementatie en schaalstrategieën van uw probleemloze degradatie effectief zijn door actieve storingen en gesimuleerde belastingstests uit te voeren. |
---|
In deze handleiding worden de aanbevelingen beschreven voor het ontwerpen van een strategie voor betrouwbaarheidstests om de betrouwbaarheid van uw workload te valideren en te optimaliseren. Betrouwbaarheidstests zijn gericht op de tolerantie en beschikbaarheid van uw workload, met name de kritieke stromen die u identificeert bij het ontwerpen van uw oplossing. Deze handleiding bevat algemene testrichtlijnen en richtlijnen die specifiek zijn voor foutinjectie en chaos-engineering.
Definities
Termijn | Definitie |
---|---|
Beschikbaarheid | De hoeveelheid tijd die een workload van een toepassing in een goede staat wordt uitgevoerd zonder aanzienlijke downtime. |
Chaos-engineering | De praktijk van het onderwerpen van toepassingen en diensten aan echte stress en fouten. Het doel van chaos-engineering is het bouwen en valideren van tolerantie voor onbetrouwbare omstandigheden en ontbrekende afhankelijkheden. |
Foutinjectie | De handeling van het introduceren van een fout in een systeem om de tolerantie van het systeem te testen. |
Herstelbaarheid | Een synoniem voor tolerantie. |
Tolerantie | De mogelijkheid van een toepassingsworkload om bestand te zijn tegen en te herstellen van foutmodi. |
Belangrijke ontwerpstrategieën
Betrouwbaarheidspreparaatheid testen
Voer regelmatig tests uit om bestaande drempelwaarden, doelen en veronderstellingen te valideren. Wanneer er een grote wijziging optreedt in uw workload, voert u regelmatig tests uit. Voer de meeste tests uit in test- en faseringsomgevingen. Het is ook nuttig om een subset van tests uit te voeren op basis van het productiesysteem. Plan een een-op-een-pariteit van belangrijke testomgevingen met de productieomgeving.
Automatiseer testen om een consistente testdekking en reproduceerbaarheid te garanderen. Automatiseer algemene testtaken en integreer ze in uw buildprocessen. Het handmatig testen van software is tijdrovend en gevoelig voor fouten, maar u kunt handmatig verkennende tests uitvoeren. Voor gevallen waarin u geautomatiseerde tests moet ontwikkelen, gebruikt u handmatige tests om het bereik van de tests te bepalen dat moet worden ontwikkeld.
Gebruik een shift-left testbenadering om tolerantie- en beschikbaarheidstests vroeg in de ontwikkelingscyclus uit te voeren.
Pas een eenvoudige documentatieindeling aan, zodat iedereen het proces en de resultaten van elke reguliere test gemakkelijk kan begrijpen.
Deel de gedocumenteerde resultaten met de juiste teams, zoals operationele teams, technologieleiderschap, zakelijke belanghebbenden en belanghebbenden voor herstel na noodgevallen. De resultaten moeten de verfijning van betrouwbaarheidsdoelen, zoals serviceniveaudoelstellingen (SLO's), serviceovereenkomsten (SLA's), beoogde hersteltijd (RPO's) en beoogde herstelpunten (RPO's) informeren.
Maak een regelmatig testritme voor uw back-ups. Herstel de gegevens naar geïsoleerde systemen om ervoor te zorgen dat de back-ups geldig zijn en dat herstelbewerkingen functioneel zijn.
Documenteer en deel metrische gegevens over hersteltijd met uw belanghebbenden voor herstel na noodgevallen om ervoor te zorgen dat de verwachtingen voor herstel van toepassing zijn.
Gebruik testprocedures voor industriestandaardimplementatie om ervoor te zorgen dat u een geautomatiseerd, voorspelbaar en efficiënt implementatieproces hebt.
Test de mogelijkheid van uw workload om tijdelijke fouten te weerstaan. Zie Aanbevelingen voor het afhandelen van tijdelijke fouten voor meer informatie.
Test de mogelijkheid van uw workload om te reageren op wijzigingen in belastingpatronen en pieken in gebruik. Gebruik deze informatie om uw schaalstrategie te testen. Zie Aanbevelingen voor testen voor informatie over belasting- en stresstests.
Test hoe uw workload fouten in afhankelijke services of andere afhankelijkheden afhandelt met behulp van foutinjectie.
Test en valideer hoe uw zelfherstel- en zelfbehoudontwerp reageert op storingen. Test geautomatiseerde en handmatige herstelbewerkingen.
Test uw plan voor herstel na noodgevallen om te reageren op onherstelbare fouten en andere belangrijke incidenten.
Test de mogelijkheid van uw werkbelasting om probleemloos te verslechteren en de straalstraal van onderdeelstoringen te minimaliseren met behulp van foutinjectie.
Profiteer van geplande en ongeplande storingen
Wanneer uw workload offline is vanwege gepland onderhoud of een niet-geplande storing, hebt u een unieke mogelijkheid om tests uit te voeren en uw kennis van uw workload te verbeteren. De volgende secties bevatten aanbevelingen voor elk scenario.
Gepland onderhoud
Wanneer u onderhoudsvensters voor updates of patches hebt gepland, kunt u onderdelen en stromen testen die niet betrokken zijn bij het onderhoudswerk. Voer tests uit zonder het potentiële risico dat de workload onverwacht wordt gedegraded of helemaal offline wordt gehaald. Als u voldoende tijd hebt tijdens uw onderhoudsvenster, kunt u ook de onderdelen en stromen testen die betrokken zijn bij het onderhoud nadat het onderhoudswerk is voltooid.
Niet-geplande storing
Gebruik elk storingsincident als een kans om meer te weten te komen over uw workload en de tolerantie te verbeteren door deze stappen te volgen, gesorteerd op prioriteit:
Haal de workload weer online voor uw klanten. Hiervoor kunt u een tijdelijke oplossing voor het probleem uitvoeren, het probleem oplossen of de herstelprocessen initiëren.
Bepaal de hoofdoorzaak van de storing en los deze op. Als u de hoofdoorzaak kunt oplossen als onderdeel van het onderzoek, documenteert u de hoofdoorzaak en de maatregelen die u hebt genomen om deze op te lossen. Als het probleem op een later tijdstip een extra onderhoudsvenster vereist, moet u ervoor zorgen dat uw risicobeperkingsmaatregelen de verwachte belasting kunnen verwerken door deze grondig te testen. Zorg ervoor dat u voldoende bewaking hebt ingesteld om uw risicobeperkingsmaatregelen te dekken.
Zoek, indien van toepassing, naar hetzelfde probleem of zwakke plekken in de configuratie die kunnen worden beïnvloed door vergelijkbare problemen, voor alle onderdelen in uw workload. Gebruik deze mogelijkheid om deze onderdelen proactief aan te pakken. Raadpleeg uw incidentgeschiedenis om patronen van vergelijkbare problemen in uw workload te detecteren.
Gebruik uw bevindingen om uw teststrategie te verbeteren. Zorg ervoor dat u de hoofdoorzaak en vergelijkbare problemen hebt opgelost door dezelfde fout rechtstreeks te testen.
Foutinjectie en chaos-engineering gebruiken
Testen met foutinjectie volgt de principes van chaos-engineering door de mogelijkheid van de workload te benadrukken om te reageren op onderdelenfouten. Voer foutinjectietests uit in preproductie- en productieomgevingen. Test toepassen op infrastructuur- en toepassingslagen. Pas de informatie toe die u hebt geleerd aanbevelingen voor het uitvoeren van analyse van de foutmodus om ervoor te zorgen dat u alleen fouten test die u prioriteit geeft en dat u risicobeperkingsstrategieën hebt waarmee fouten worden aangepakt. De belangrijkste richtlijnen van chaos engineering zijn:
Wees proactief. Wacht niet tot er fouten optreden. Probeer te anticiperen op fouten door chaosexperimenten uit te voeren om problemen te detecteren en op te lossen voordat ze van invloed zijn op uw productieomgeving.
Omarm fout. Accepteer en leer van de fouten die optreden in uw systeem. Bekijk fouten als een natuurlijk onderdeel van complexe systemen en gebruik ze als mogelijkheden om de betrouwbaarheid van uw systeem te leren en te verbeteren.
Het systeem breken. Injecteer opzettelijk fouten of stress in uw systeem om de tolerantie ervan te testen. Simuleer echte fouten of onderbrekingen om de herstelmogelijkheden van uw workload te testen en te verbeteren.
Identificeer en adresseren van single points of failure vroeg. Wanneer u test, raadpleegt en werkt u de analyse van de foutmodus bij om fouten in uw documentatie te valideren en op te pakken. Pas betrouwbaarheidsbenaderingen, zoals redundantie en segmentatie, toe om de beschikbaarheid van uw workload te verhogen en downtime te minimaliseren.
Installeer kaders en probleemloze oplossingen. Implementeer veiligheidsmaatregelen, zoals het circuitonderbrekerpatroon of het beperkingspatroon, om de beschikbaarheid te verhogen. Implementeer graceful degradatiemethoden die bedrijfscontinuïteit mogelijk maken tijdens storingen.
Minimaliseer de straal. Implementeer foutisolatiestrategieën om ervoor te zorgen dat, zelfs als er een fout optreedt, het bereik ervan beperkt is. Het systeem blijft functioneren met een minimaal effect op uw klanten.
Bouw immuniteit. Gebruik chaos-engineeringexperimenten om de mogelijkheid van uw workload te verbeteren om fouten te voorkomen en te herstellen.
Chaos engineering is een integraal onderdeel van de cultuur van het workloadteam en een doorlopende praktijk, niet een tactische kortetermijninspanning als reactie op één storing. Volg deze standaardmethode wanneer u uw chaosexperimenten ontwerpt:
- Begin met een hypothese. Elk experiment moet een duidelijk doel hebben, zoals het testen van de mogelijkheid van een bepaalde stroom om het verlies van een bepaald onderdeel te weerstaan.
- Basislijngedrag meten. Zorg ervoor dat u consistente metrische gegevens over betrouwbaarheid en prestaties hebt voor de stroom en onderdelen die bij een bepaald experiment betrokken zijn om te vergelijken met de gedegradeerde status bij het uitvoeren van uw experiment.
- Injecteer een fout of fouten. Het experiment moet opzettelijk gericht zijn op specifieke onderdelen die snel kunnen worden hersteld en u moet een geïnformeerde verwachting hebben van het effect dat de foutinjectie zal veroorzaken om de straalstraal van het experiment te helpen beheren.
- Bewaak het resulterende gedrag. Verzamel telemetrie over de afzonderlijke stroomonderdelen en het end-to-end-stroomgedrag dat het experiment zich richt om de effecten van de fout goed te begrijpen. Vergelijk de metrische gegevens die u verzamelt met de metrische basislijngegevens voor een volledig beeld van de foutinjectieresultaten.
- Documenteer het proces en de waarnemingen. Als u gedetailleerde records van uw experimenten bijhoudt, worden de toekomstige beslissingen over het ontwerp van de werkbelasting geïnformeerd, zodat u de hiaten die in de loop van de tijd zijn ontdekt, kunt oplossen.
- Het resultaat identificeren en er actie op ondernemen. Plan herstelstappen die als verbeteringen kunnen worden toegevoegd aan de achterstand van uw werkbelasting. Zorg ervoor dat ontwerpverbeteringsplannen worden beoordeeld en getest in niet-productieomgevingen volgens dezelfde processen als andere implementaties.
Valideer regelmatig uw proces, architectuurkeuzen en code om snel technische schulden te detecteren, nieuwe technologieën te integreren en zich aan te passen aan veranderende vereisten.
Wanneer u experimenten met foutinjectie uitvoert, doet u het volgende:
- Controleer of bewaking is ingesteld en of er waarschuwingen zijn ingesteld.
- Valideer uw proces voor het toewijzen van een rechtstreeks verantwoordelijke persoon (DRI) om eigenaar te worden van een incident.
- Zorg ervoor dat uw documentatie- en onderzoeksprocessen up-to-date zijn.
Integreer de volgende aanbevelingen en overwegingen om uw chaosteststrategie te optimaliseren:
Daag systeemveronderstellingen uit. Met testen probeert u de tolerantie van uw workload en de ontwerpstrategieën voor workloads te verbeteren. Zoek naar mogelijkheden voor het injecteren van fouten in onderdelen en stromen die u ervan uitgaat dat ze betrouwbaar zijn op basis van eerdere ervaringen. Ze zijn mogelijk niet betrouwbaar in uw nieuwe workload.
Valideer de wijziging, zoals de topologie, het platform en de resources. Zonder grondig testen, inclusief het testen van foutinjectie, hebt u mogelijk een onvolledig beeld van uw workload nadat er wijzigingen zijn aangebracht. U kunt bijvoorbeeld per ongeluk nieuwe afhankelijkheden introduceren of bestaande afhankelijkheden breken op manieren die niet direct zichtbaar zijn.
SLA-buffers gebruiken. Beperk chaostests om binnen uw SLA's te blijven en potentiële reputatie- of financiële gevolgen van storingen te voorkomen. Uw hersteldoelen voor stromen en onderdelen helpen bij het definiëren van het bereik van uw tests.
Stel een foutbudget vast als investering in chaos en foutinjectie. Uw foutbudget is het verschil tussen het bereiken van 100 procent van de SLO en het bereiken van de overeengekomen SLO.
Stop het experiment als het buiten het bereik valt. Onbekende resultaten zijn een verwacht resultaat van chaosexperimenten. Streven naar een evenwicht tussen het verzamelen van gegevens over aanzienlijke resultaten en het beïnvloeden van zo weinig mogelijk productiegebruikers.
Werk nauw samen met ontwikkelteams om de relevantie van de geïnjecteerde fouten te waarborgen. Gebruik eerdere incidenten of problemen als richtlijn. Bekijk afhankelijkheden en evalueer de resultaten wanneer u deze afhankelijkheden verwijdert.
Identificeer en documenteer eerder niet-gedetecteerde afhankelijkheden tussen verschillende onderdelen binnen uw workload die worden onthuld door chaostests.
Pas zo nodig herstelplannen aan om rekening te houden met afhankelijkheden die tijdens chaostests worden gedetecteerd.
Gebruik de resultaten van uw experimenten en tests als basis voor nieuwe experimenten en tests. Als er onverwacht gedrag optreedt, kunnen nieuwe tests zich rechtstreeks richten op dit gedrag en u de mogelijkheid bieden om herstelstrategieën voor hen te ontwerpen.
Compromis: het testen van foutinjectie in productie kan verstorend zijn en kan downtime veroorzaken. Wees transparant met belanghebbenden over deze mogelijkheid en zorg ervoor dat u garanties hebt om experimenten te beëindigen en plannen terug te draaien om snel de fouten die u introduceert, om te keren. Als u wilt voorkomen dat er onbedoelde storingen in de productieomgeving voorkomen, moet u ervoor zorgen dat u voldoende redundantie plant en dat uw belanghebbenden inzicht hebben in de kosten.
Azure-facilitering
Azure Test Plans is een gebruiksvriendelijke, browsergebaseerde testbeheeroplossing die alle mogelijkheden biedt die nodig zijn voor geplande handmatige tests, gebruikersacceptatietests, verkennende tests en het verzamelen van feedback van belanghebbenden.
Azure Chaos Studio is een beheerde service die gebruikmaakt van chaos-engineering om u te helpen uw cloudtoepassing en servicetolerantie te meten, te begrijpen en te verbeteren. Azure Chaos Studio heeft algemene beschikbaarheid bereikt op Ignite 2023 en heeft veel functies om u te helpen aan de slag te gaan met foutinjectie en tolerantietests voor uw toepassing met behulp van de Azure-infrastructuur.
Verwante koppelingen
- Back-up en herstel na noodgevallen voor Azure-toepassingen
- Controlelijst voor betrouwbaarheidstests
- Toepassingen testen voor beschikbaarheid en tolerantie
Controlelijst voor betrouwbaarheid
Raadpleeg de volledige set aanbevelingen.