Aanbevelingen voor het ontwerpen van een betrouwbaarheidsteststrategie
Van toepassing op deze aanbeveling voor de Well-Architected Reliability-checklist: Power Platform
RE:06 | Test de 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 uw implementatiestrategieën voor correcte degradatie effectief zijn door actieve storings- en gesimuleerde belastingtests uit te voeren. |
---|
In deze handleiding worden de aanbevelingen beschreven voor het ontwerpen van een strategie voor het testen van de betrouwbaarheid om de betrouwbaarheid van uw workload te valideren en te optimaliseren. Betrouwbaarheidstests zijn gericht op de tolerantie en beschikbaarheid van uw workload, met name op de kritieke stromen die u identificeert wanneer u uw oplossing ontwerpt. Deze handleiding biedt algemene testrichtlijnen en richtlijnen die specifiek zijn voor foutinjectie en chaos-engineering.
Definities
Term | Definitie |
---|---|
Beschikbaarheid | De hoeveelheid tijd die een toepassingsworkload in goede staat kan worden uitgevoerd zonder noemenswaardige downtime. |
Chaos-engineering | De praktijk waarbij toepassingen en services worden onderworpen aan stress en fouten in de echte wereld. Het doel van chaos-engineering is het opbouwen en valideren van veerkracht met betrekking tot onbetrouwbare omstandigheden en ontbrekende afhankelijkheden. |
Foutinjectie | De handeling waarbij een fout in een systeem wordt geïntroduceerd om de tolerantie van het systeem te testen. |
Herstelbaarheid | Een synoniem voor tolerantie. |
Tolerantie | Het vermogen van een toepassingsworkload om foutmodi te weerstaan en ervan te herstellen. |
Belangrijke ontwerpstrategieën
Testen is essentieel om ervoor te zorgen dat uw workload voldoet aan de betrouwbaarheidsdoelen en fouten op een goede manier kan afhandelen. Foutinjectie is een soort testen waarbij opzettelijk fouten of stress in uw systeem worden geïntroduceerd om realistische scenario's te simuleren. Door gebruik te maken van technieken voor foutinjectie en chaos-engineering kunt u proactief problemen ontdekken en oplossen voordat deze uw productieomgeving beïnvloeden. Dit gedeelte biedt algemene richtlijnen voor testen, foutinjectie en chaos-engineering voor uw workload.
Algemene testrichtlijnen
Voer routinematig tests uit om bestaande drempels, doelstellingen en aannames te valideren. Wanneer er een grote verandering 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 het productiesysteem.
Automatiseer tests om een consistente testdekking en reproduceerbaarheid te garanderen. Automatiseer algemene testtaken en integreer deze in uw bouwprocessen. Het handmatig testen van software is vervelend en foutgevoelig, maar u kunt handmatig exploratief testen uitvoeren. Voor gevallen waarin u geautomatiseerde tests moet ontwikkelen, gebruikt u handmatige tests om de reikwijdte van de te ontwikkelen tests te bepalen.
Gebruik een aanpak van shift-left-testen om tests op tolerantie en beschikbaarheid vroeg in de ontwikkelingscyclus uit te voeren.
Pas een eenvoudige documentatie-indeling 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, technologisch leiderschap, zakelijke belanghebbenden en belanghebbenden bij herstel na noodgevallen. De resultaten moeten de verfijning van de betrouwbaarheidsdoelen ondersteunen, zoals serviceniveaudoelstellingen (service-level objectives/SLOs), dienstverleningsovereenkomsten (service-level agreements/SLA's), hersteltijddoelstellingen (recovery time objectives/RTO's) en herstelpuntdoelstellingen (recovery point objectives/RPO's).
Creëer een regelmatige testcadans voor uw back-ups. Herstel de gegevens in geïsoleerde systemen om ervoor te zorgen dat de back-ups geldig zijn en dat de herstelbewerkingen functioneel zijn.
Documenteer en deel de metrische gegevens over de hersteltijd met uw belanghebbenden bij herstel na noodgevallen om ervoor te zorgen dat de verwachtingen voor herstel passend zijn.
Gebruik industriestandaard testprocedures voor implementatie om ervoor te zorgen dat u over een geautomatiseerd, voorspelbaar en efficiënt implementatieproces beschikt.
Test het vermogen van uw workload om weerstand te bieden aan tijdelijke fouten. Zie Aanbevelingen voor het afhandelen van tijdelijke fouten voor meer informatie.
Voer tests uit om te zien hoe uw workload fouten in afhankelijke services of andere afhankelijkheden verwerkt door gebruik te maken van foutinjectie.
Test uw herstelplan na noodgeval om te reageren op catastrofale fouten en andere grote incidenten.
Test het vermogen van uw workload om probleemloos te degraderen en de explosieradius van defecte onderdelen te minimaliseren door gebruik te maken van foutinjectie.
Profiteer van geplande en ongeplande storingen
Wanneer uw workload offline is vanwege gepland onderhoud of een ongeplande storing, heeft u een unieke kans om tests uit te voeren en uw inzicht in uw workload te verbeteren. De volgende gedeelten bevatten aanbevelingen voor elk scenario.
Gepland onderhoud
Wanneer u onderhoudsvensters hebt gepland voor updates of patches, kunt u onderdelen en stromen testen die niet betrokken zijn bij de onderhoudswerkzaamheden. Voer tests uit zonder het potentiële risico dat de workload onverwacht degradeert of helemaal offline gaat. Als u tijdens uw onderhoudsvenster voldoende tijd hebt, kunt u ook na voltooiing van de onderhoudswerkzaamheden de onderdelen en stromen testen die bij het onderhoud betrokken zijn.
Ongeplande storing
Gebruik elk storingsincident als een kans om meer te weten te komen over uw workload en tolerantie ervan te verbeteren door de volgende stappen te volgen, gerangschikt op prioriteit:
Breng de workload voor uw gebruikers weer online. Mogelijk moet u een tijdelijke oplossing voor het probleem uitvoeren, het probleem oplossen of de herstelprocessen starten.
Bepaal de hoofdoorzaak van de storing en verhelp deze. Als u de hoofdoorzaak als onderdeel van het onderzoek kunt oplossen, documenteer dan de hoofdoorzaak en de maatregelen die u hebt genomen om deze te verhelpen. Als het probleem vereist dat er later nog een onderhoud-venster wordt geopend, controleer dan of uw maatregelen de verwachte belasting aankunnen door ze grondig te testen. Zorg ervoor dat u voldoende controle hebt ingesteld om uw beperkingsmaatregelen te dekken.
Zoek indien van toepassing voor alle onderdelen van uw workload naar hetzelfde probleem of naar zwakke punten in de configuratie die door vergelijkbare problemen kunnen worden beïnvloed. Maak van deze gelegenheid gebruik 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 met succes aanpakt door dezelfde fout rechtstreeks te testen.
Foutinjectie en begeleiding bij chaos-engineering
Bij foutinjectietests worden de principes gevolgd van chaos-engineering door het vermogen van de workload om te reageren op onderdeelfouten te benadrukken. Voer foutinjectietests uit in preproductie- en productieomgevingen. Pas de informatie toe die u hebt geleerd van het uitvoeren van een foutmodusanalyse om ervoor te zorgen dat u alleen fouten test die u prioriteit geeft en dat u over risicobeperkingsstrategieën beschikt waarmee fouten worden aangepakt.
De belangrijkste richtlijnen van chaos-engineering zijn:
Zorg dat u proactief bent. Wacht niet tot er fouten optreden. Probeer te anticiperen op fouten door chaosexperimenten uit te voeren om problemen te ontdekken en op te lossen voordat deze uw productieomgeving beïnvloeden.
Omarm fouten. Accepteer en leer van de fouten die zich in uw systeem voordoen. Beschouw fouten als een natuurlijk onderdeel van complexe systemen en gebruik deze als kansen om te leren en de betrouwbaarheid van uw systeem te verbeteren.
Stel het systeem op de proef. Injecteer opzettelijk fouten of stress in uw systeem om de veerkracht ervan te testen. Simuleer fouten of verstoringen uit de echte wereld om de herstelmogelijkheden van uw workload te testen en te verbeteren.
Bouw immuniteit op. Gebruik experimenten van chaos-engineering om het vermogen van uw workload om fouten te voorkomen en te herstellen te verbeteren.
Chaos-engineering is een integraal onderdeel van de workloadteamcultuur en een voortdurend proces. Het is geen tactische inspanning voor de korte termijn als reactie op een enkele storing. Volg deze standaardmethode bij het ontwerpen van uw chaosexperimenten:
Begin met een hypothese.+ Elk experiment moet een duidelijk doel hebben, zoals het testen van het vermogen van een stroom om weerstand te bieden aan het verlies van een bepaald onderdeel.
Meet basisgedrag. Zorg ervoor dat u consistente metrische gegevens over betrouwbaarheid en prestaties hebt voor de stroom en onderdelen die bij een experiment betrokken zijn, zodat u deze kunt vergelijken met de verslechterde status wanneer u uw experiment uitvoert.
Injecteer een fout of fouten. Het experiment moet opzettelijk worden gericht op specifieke onderdelen die snel kunnen worden hersteld, en u moet een gefundeerde verwachting hebben van het effect dat de foutinjectie zal veroorzaken om de ontploffingsradius van het experiment te helpen beheersen.
Controleer het resulterende gedrag. Verzamel telemetrie over de afzonderlijke stroomonderdelen en het end-to-end stroomgedrag waarop het experiment wordt gericht om de effecten van de fout goed te begrijpen. Vergelijk de metrische gegevens die u verzamelt met de metrische basisgegevens voor een volledig beeld van de foutinjectieresultaten.
Documenteer het proces en de observaties. Door gedetailleerde gegevens van uw experimenten bij te houden, kunt u toekomstige beslissingen nemen over het ontwerp van de workload, zodat u zeker weet dat u de hiaten aanpakt die in de loop van de tijd aan het licht zijn gekomen.
Identificeer en handel naar het resultaat. Plan herstelstappen die als verbeteringen aan uw workloadachterstand kunnen worden toegevoegd. Zorg ervoor dat ontwerpverbeteringsplannen worden beoordeeld en getest in niet-productieomgevingen volgens dezelfde processen als bij andere implementaties.
Valideer periodiek uw proces, architectuurkeuzes en code om snel technische problemen op te sporen, nieuwe technologieën te integreren en aan te passen aan veranderende vereisten.
Wanneer u experimenten met foutinjectie uitvoert, moet u het volgende doen:
Bevestig dat controle plaatsvindt en waarschuwingen zijn ingesteld.
Valideer uw proces waarbij u een direct verantwoordelijke persoon aanwijst om de verantwoordelijkheid voor een incident over te nemen.
Zorg ervoor dat uw documentatie- en onderzoeksprocessen up-to-date zijn.
Integreer de volgende aanbevelingen en overwegingen om uw chaosteststrategie te optimaliseren:
Stel systeemaannames ter discussie. Met testen probeert u de tolerantie van uw workload en uw workloadontwerpstrategieën te verbeteren. Zoek naar mogelijkheden om fouten te injecteren in onderdelen en stromen waarvan u op basis van ervaringen uit het verleden aanneemt dat ze betrouwbaar zijn. Ze zijn mogelijk niet betrouwbaar in uw nieuwe workload.
Valideer de wijziging. Zonder grondige tests, zoals foutinjectietests, hebt u mogelijk een onvolledig beeld van uw workload nadat er wijzigingen zijn aangebracht. U kunt bijvoorbeeld nieuwe afhankelijkheden introduceren die niet meteen duidelijk zijn.
Gebruik SLA-buffers. Beperk chaostests om binnen uw SLA's te blijven en mogelijke nadelige gevolgen van storingen te voorkomen. Uw doelstellingen voor stroom- en onderdeelherstel helpen bij het definiëren van de reikwijdte van uw tests.
Stel een foutenbudget op als een investering in chaos en foutinjectie. Uw foutenbudget is het verschil tussen het behalen van 100% van de SLO en het behalen van de afgesproken SLO.
Stop het experiment als het buiten de reikwijdte valt. Onbekende resultaten zijn een verwachte uitkomst van chaosexperimenten. Streef naar een evenwicht tussen het verzamelen van substantiële resultaatgegevens en het beïnvloeden van zo weinig mogelijk productiegebruikers.
Werk nauw samen met ontwikkelingsteams om de relevantie van de geïnjecteerde fouten te garanderen. Gebruik incidenten of problemen uit het verleden als leidraad. Onderzoek de afhankelijkheden en evalueer de resultaten wanneer u deze afhankelijkheden verwijdert.
Identificeer en documenteer voorheen onontdekte afhankelijkheden tussen verschillende onderdelen binnen uw workload die aan het licht komen via chaostests.
Pas indien nodig herstelplannen aan om rekening te houden met afhankelijkheden die tijdens chaostests worden ontdekt.
Gebruik de resultaten van uw experimenten en tests als basis voor nieuwe experimenten en tests. Als zich onverwacht gedrag voordoet, kunnen nieuwe tests zich mogelijk rechtstreeks op dat gedrag richten en u de mogelijkheid bieden om herstelstrategieën voor dit gedrag te ontwerpen.
Afweging: Foutinjectietesten in de productie kunnen verstorend zijn en mogelijk tot downtime leiden. Wees transparant tegenover belanghebbenden over deze mogelijkheid en zorg ervoor dat u over veiligheidsmaatregelen beschikt om experimenten te beëindigen en plannen terug te draaien om de door u geïntroduceerde fouten snel ongedaan te maken.
Power Platform faciliteren
U kunt statische resultaten gebruiken in Power Automate om een vast resultaat te retourneren om uw werklast te testen.
Power Apps Test Engine (preview) is een Power Platform CLI-component waarmee u zelfstandige canvas-apps kunt testen in Power Apps.
Azure Test Plans is een gebruiksvriendelijke, browsergebaseerde oplossing voor testbeheer die alle benodigde mogelijkheden biedt voor geplande handmatige tests, gebruikersacceptatietests, verkennende tests en het verzamelen van feedback van belanghebbenden.
Als uw workload Azure-resources omvat, kunt u Azure Chaos Studio gebruiken, een beheerde service die gebruikmaakt van chaos-engineering om u te helpen de veerkracht van uw cloudtoepassingen en -services te meten, begrijpen en verbeteren.
Als uw werklast een Microsoft Copilot Studio copiloot omvat, kunt u de Power CAT Copilot Studio Kit gebruiken om copiloten en tests te configureren. Door afzonderlijke tests uit te voeren op de Copilot Studio API's (Direct Line) worden de reacties van de copiloot geëvalueerd aan de hand van de verwachte resultaten.
Controlelijst voor betrouwbaarheid
Raadpleeg de volledige reeks aanbevelingen.