Anbefalinger for utforming av en strategi for pålitelighetstesting
Gjelder denne Power Platform Well-Architected Reliability-sjekklisteanbefalingen:
RE:06 | Test scenarioer for fleksibilitet og tilgjengelighet ved å bruke prinsippene for kaosteknikk i test- og produksjonsmiljøene. Bruk testing for å sikre at de implementeringsstrategiene for degradering er effektive ved å utføre aktiv testing av feilfunksjon og simulert belastning. |
---|
Denne veiledningen beskriver anbefalingene for utforming av en strategi for pålitelighetstesting for å validere og optimalisere påliteligheten til arbeidsbelastningen. Pålitelighetstesting fokuserer på fleksibiliteten og tilgjengeligheten til arbeidsbelastningen, særlig de kritiske flytene du identifiserer når du utformer løsningen. Denne veiledningen inneholder generell veiledning til testing og veiledning som spesifikt gjelder feilinjeksjon og kaosteknikk.
Definisjoner
Term | Definisjon |
---|---|
Tilgjengelighet | Hvor lenge en programarbeidsbelastning kjører i en sunn tilstand uten betydelig nedetid. |
Kaosteknikk | Å utsette programmer og tjenester for virkelige belastninger og feil. Målet med kaosteknikk er å bygge og validere fleksibilitet overfor upålitelige forhold og manglende avhengigheter. |
Feilinjeksjon | Å innføre en feil i et system for å teste fleksibiliteten til systemet. |
Gjenopprettebarhet | Et synonym for fleksibilitet. |
Fleksibilitet | Evnen en programarbeidsbelastning har til å tåle og gjenopprettes fra feilmoduser. |
Viktige utformingsstrategier
Testing er avgjørende for å sikre at arbeidsbelastningen oppfyller pålitelighetsmålene og kan håndtere feil på en elegant måte. Feilinjeksjon er en type testing som innfører feil eller belastning i systemet med hensikt for å simulere virkelige scenarioer. Når du bruker feilinjeksjon og kaosteknikkmetoder, kan du proaktivt oppdage og løse problemer før de påvirker produksjonsmiljøet. Denne delen inneholder generell veiledning om testing, feilinjeksjon og kaosteknikk for arbeidsbelastningen.
Generell veiledning til testing
Foreta rutinemessig testing for å validere eksisterende terskler, mål og forutsetninger. Når det skjer en stor endring i arbeidsbelastningen, kjører du regelmessig testing. Foreta mesteparten av testingen i test- og oppsamlingsmiljøer. Det er også fordelaktig å kjøre et delsett av tester mot produksjonssystemet.
Automatiser testing for å bidra til å sikre ensartet testdekning og reproduserbarhet. Automatiser vanlige testoppgaver, og integrer dem i byggeprosessene. Manuell testing av programvare er kjedelig og utsatt for feil, men du kan foreta utforskende testing manuelt. Når det gjelder tilfeller der du må utvikle automatisert testing, bruker du manuell testing til å fastslå omfanget av testene som skal utvikles.
Bruk en shift-left-tilnærming til testing for å foreta fleksibilitets- og tilgjengelighetstesting tidlig i utviklingssyklusen.
Bruk et enkelt dokumentasjonsformat, slik at det blir enkelt for å alle å forstå prosessen og resultatene av hver vanlige test.
Del de dokumenterte resultatene med de riktige teamene, for eksempel driftsteam, teknologiledelsen, forretningsinteressenter og interessenter for nødgjenoppretting. Resultatene skal brukes i finjusteringen av pålitelighetsmål, for eksempel servicegradmål, serviceavtaler, gjenopprettingstidsmål og gjenopprettingspunktmål.
Opprett en regelmessig testing for sikkerhetskopiene. Gjenopprett dataene til isolerte systemer for å bidra til å sikre at sikkerhetskopiene er gyldige og gjenopprettinger fungerer.
Dokumenter og del måledata for gjenopprettingstid med interessentene for nødgjenoppretting for å sikre at gjenopprettingen samsvarer med forventningene.
Bruk testprosedyrer for distribusjon som er standard for bransjen, til å sikre at du har en automatisert, forutsigbar og effektiv distribusjonsprosess.
Test arbeidsbelastningens evne til å tåle midlertidige feil. Hvis du vil ha mer informasjon, kan du se Anbefalinger for håndtering av midlertidige feil.
Test hvordan arbeidsbelastningen håndterer feil i avhengige tjenester eller andre avhengigheter, ved å bruke feilinjeksjon.
Test planen for nødgjenoppretting for å reagere på katastrofale feil og andre alvorlige hendelser.
Test arbeidsbelastningens evne til å forverres elegant og minimere det potensielle skadeomfanget ved komponentfeil, ved å bruke feilinjeksjon.
Dra nytte av planlagte og ikke-planlagte avbrudd
Når arbeidsbelastningen er frakoblet på grunn av planlagt vedlikehold eller ikke-planlagt driftsstans, har du en unik mulighet til å foreta testing og forbedre forståelsen av arbeidsbelastningen. Delene nedenfor inneholder anbefalinger for hvert scenario.
Planlagt vedlikehold
Når du har tidsluker med planlagt vedlikehold og oppdateringer, kan du teste komponenter og flyter som ikke inngår i vedlikeholdsarbeidet. Foreta tester uten den potensielle risikoen for uventet forverring av arbeidsbelastningen, eller koble den fra fullstendig. Hvis du har nok tid i tidsluken med vedlikehold, kan du også teste komponentene og flytene som inngår i vedlikeholdet, etter at vedlikeholdsarbeidet er fullført.
Ikke-planlagt driftsstans
Bruk hver driftsstanshendelse som en mulighet til å lære mer om arbeidsbelastningen og forbedre fleksibiliteten til den ved å følge disse trinnene, ordnet etter prioritet:
Koble arbeidsbelastningen til igjen for brukerne. Du må kanskje finne en midlertidig løsning på problemet, løse problemet eller starte gjenopprettingsprosessene.
Finn årsaken til driftsstansen, og håndter den. Hvis du kan rette årsaken til problemet som en del av undersøkelsen, dokumenterer du årsaken og tiltakene du iverksatte for å rette den. Hvis problemet krever at du tar et nytt vedlikeholdsvindu senere, må du sørge for at de avbøtende tiltakene dine kan håndtere den forventede belastningen ved å teste dem grundig. Pass på at du har konfigurert tilstrekkelig overvåking som dekker alle utbedringstiltakene.
Hvis det er aktuelt, kan du se etter samme problem eller konfigurasjonssvakheter som kan bli påvirket av lignende problemer, på tvers av alle komponentene i arbeidsbelastningen. Bruk denne muligheten til å håndtere disse komponentene proaktivt. Se i hendelsesloggen for å finne mønstre med lignende problemer på tvers av arbeidsbelastningen.
Bruk funnene til å forbedre teststrategien. Sørg for at du faktisk har rettet årsaken og løst lignende problemer ved å teste den samme feilen direkte.
Veiledning for feilinjeksjon og kaosteknikk
Feilinjeksjonstesting følger prinsippene for kaosteknikk ved å fremheve arbeidsbelastningens evne til å reagere på komponentfeil. Foreta feilinjeksjonstesting i førproduksjons- og produksjonsmiljøer. Bruk informasjonen du har fått fra å foreta feilmodusanalyse, for å sørge for at du bare tester feil du prioriterer, og at du har utbedringsstrategier som håndterer feil.
De viktigste retningslinjene for kaosteknikk er som følger:
Vær proaktiv. Ikke vent til feil oppstår. Prøv å forutse feil ved å gjøre kaoseksperimenter for å oppdage og løse problemer før de påvirker produksjonsmiljøet.
Ta imot feil med åpne armer. Godta og lær av feilene som oppstår i systemet. Se på feil som en naturlig del av komplekse systemer, og bruk dem som muligheter til å lære og forbedre systemets pålitelighet.
Ødelegg systemet. Injiser feil eller belastninger i systemet med hensikt for å teste fleksibiliteten til det. Simuler virkelige feil eller avbrudd for å teste og forbedre gjenopprettingsfunksjonene for arbeidsbelastningen.
Utvikle motstandskraft. Bruk eksperimenter i kaosteknikk til å forbedre arbeidsbelastningens evne til å forhindre feil og gjenopprettes etter feil.
Kaosteknikk er en vesentlig del av arbeidsbelastningsteamets kultur og en pågående praksis, ikke et kortvarig taktisk tiltak som reaksjon på et enkeltavbrudd. Følg denne standardmetoden når du utformer kaoseksperimenter:
Start med en hypotese. Hvert eksperiment skal ha et klart mål, for eksempel testing av en flyts evne til å tåle tapet av en bestemt komponent.
Mål basislinjefunksjonalitet. Sørg for at du har ensartede pålitelighets- og ytelsesmåledata for flyten og komponentene som inngår i et eksperiment, for å sammenligne dem med den forverrede tilstanden når du kjører eksperimentet.
Injiser en eller flere feil. Eksperimentet skal med hensikt rettes mot bestemte komponenter som kan gjenopprettes raskt, og du bør ha en velinformert forventning om virkningen av feilinjeksjonen, for å bidra til å styre det potensielle skadeomfanget til eksperimentet.
Overvåk den resulterende funksjonaliteten. Samle inn telemetri om de individuelle flytkomponentene og ende-til-ende-flytfunksjonaliteten som eksperimentet er rettet mot, for å få en grundig forståelse av virkningene av feilen. Sammenlign måledataene du har samlet inn, med basislinjemåledataene for å få et fullstendig bilde av resultatet av feilinjeksjonen.
Dokumenter prosessen og observasjonene. Når du holder en detaljert fortegnelse over eksperimenter, bidrar denne til fremtidige beslutninger om utforming av arbeidsbelastninger, som sikrer at du håndterer svakhetene som er avdekket over tid.
Identifiser og iverksett tiltak basert på resultatet. Planlegg utbedringstrinn som kan føyes til som forbedringer i loggen over gjenværende arbeid på arbeidsbelastningen. Sørg for at planer om utformingsforbedring blir gjennomgått og testet i ikke-produksjonsmiljøer i samsvar med de samme prosessene som andre distribusjoner.
Foreta regelmessig validering av prosessen, arkitekturvalgene og kode for å registrere teknisk gjeld raskt, integrere ny teknologi og tilpasse deg til krav som endres.
Når du foretar feilinjeksjonseksperimenter, gjør du følgende:
Bekreft at overvåking er på plass, og varsler er konfigurert.
Valider prosessen for tilordning av en direkte ansvarlig person (DRI) som fungerer som eier av en hendelse.
Sørg for at dokumentasjonen og undersøkelsesprosessene er oppdatert.
Integrer følgende anbefalinger og hensyn for å optimalisere strategien for kaostesting:
Utfordre systemforutsetninger. Du bruker testing til å prøve å forbedre fleksibiliteten til arbeidsbelastningen og strategiene for utforming av arbeidsbelastning. Se etter muligheter til å injisere feil i komponenter og flyter du antar er pålitelige basert på tidligere erfaringer. De er kanskje ikke pålitelige i den nye arbeidsbelastningen.
Valider endring. Uten grundig testing, inkludert feilinjeksjonstesting, kan du ha et ufullstendig bilde av arbeidsbelastningen etter at det er gjort endringer. Du kan for eksempel innføre nye avhengigheter som ikke er umiddelbart åpenbare.
Bruk serviceavtalebuffere. Begrens kaostestingen slik at den er innenfor serviceavtalene, og unngå potensielle negative virkninger av driftsstans. Målene for flyt- og komponentgjenoppretting bidrar til å definere omfanget av testingen.
Opprett et feilbudsjett som en investering i kaos og feilinjeksjon. Feilbudsjettet ditt er forskjellen mellom å oppnå 100 % av servicegradmålet og å oppnå det avtalte servicegradmålet.
Stopp eksperimentet hvis det overskrider omfanget. Ukjente resultater er et forventet resultat av kaoseksperimenter. Prøv å oppnå balanse mellom innsamling av en omfattende mengde resultatdata og påvirkning av så få produksjonsbrukere som mulig.
Inngå et tett samarbeid med utviklingsteam for å sikre relevansen til injiserte feil. Bruk tidligere hendelser eller problemer som en rettesnor. Undersøk avhengigheter, og evaluer resultatene når du fjerner disse avhengighetene.
Finn og dokumenter tidligere uoppdagede avhengigheter mellom ulike komponenter i arbeidsbelastningen som avdekkes via kaostesting.
Juster gjenopprettingsplaner etter behov for å ta hensyn til avhengigheter som blir oppdaget under kaostesting.
Bruk resultatene fra eksperimentene og testene som grunnlag for nye eksperimenter og tester. Etter hvert som uventet funksjonalitet oppstår, kan nye tester rettes direkte mot denne funksjonaliteten og gi deg mulighet til å utforme utbedringsstrategier for den.
Avveining: Tester for feilinjeksjon i produksjon kan være stætende og potensielt føre til nedetid. Vær åpen overfor interessenter om denne muligheten, og sørg for at du har forholdsregler på plass for å avslutte eksperimenter og tilbakerullingsplaner, slik at du raskt kan tilbakeføre feilene du innfører.
Tilrettelegging for Power Platform
Du kan bruke statiske resultater i Power Automate til å returnere et fast resultat for å teste arbeidsbelastningen.
Power Apps Test Engine (forhåndsversjon) er en Power Platform CLI-komponent du kan bruke til å teste frittstående lerretsapper i Power Apps.
Azure Test Plans er en brukervennlig, nettleserbasert løsning for testadministrasjon som har alle funksjoner som kreves for planlagt manuell testing, testing av brukergodkjenning, utforskende testing og innsamling av tilbakemelding fra interessenter.
Hvis arbeidsbelastningen din omfatter Azure-ressurser, kan du bruke Azure Chaos Studio, en administrert tjeneste som bruker kaosteknikk, til å hjelpe deg å måle, forstå og forbedre skyprogrammet og tjenestefleksibilitet.
Hvis arbeidsbelastningen inkluderer en Microsoft Copilot Studio-agent, kan du bruke Power CAT Copilot Studio-pakken til å konfigurere agenter og tester. Ved å kjøre individuelle tester mot Copilot Studio-API-ene (Direct Line), evalueres agentsvarene mot forventede resultater.
Sjekkliste for pålitelighet
Se hele settet med anbefalinger.