Rekommendationer för att utforma en strategi för tillförlitlighetstestning

Gäller för den här rekommendationen om checklista för tillförlitlighet i Azure Well-Architected Framework:

RE:08 Testa för återhämtnings- och tillgänglighetsscenarier genom att tillämpa principerna för kaosteknik i dina test- och produktionsmiljöer. Använd testning för att säkerställa att dina strategier för korrekt nedbrytningsimplementering och skalning är effektiva genom att utföra aktiva fel och simulerad belastningstestning.

Den här guiden beskriver rekommendationerna för att utforma en strategi för tillförlitlighetstestning för att validera och optimera tillförlitligheten för din arbetsbelastning. Tillförlitlighetstestning fokuserar på återhämtning och tillgänglighet för din arbetsbelastning, särskilt de kritiska flöden som du identifierar när du utformar din lösning. Den här guiden innehåller allmänna testvägledning och vägledning som är specifika för felinmatning och kaosteknik.

Definitioner

Period Definition
Tillgänglighet Den tid som en programarbetsbelastning körs i ett felfritt tillstånd utan betydande stilleståndstid.
Kaosteknik Praxis att utsätta program och tjänster för verkliga påfrestningar och haverier. Målet med kaosteknik är att bygga och validera motståndskraft mot otillförlitliga villkor och saknade beroenden.
Felaktig inmatning Att införa ett fel i ett system för att testa systemets återhämtning.
Återvinning En synonym för återhämtning.
Återhämtning En programarbetsbelastnings förmåga att klara och återställa från fellägen.

Viktiga designstrategier

Allmän testningsvägledning

  • Utför rutinmässiga tester för att verifiera befintliga tröskelvärden, mål och antaganden. När en större ändring sker i din arbetsbelastning ska du köra regelbundna tester. Utför de flesta tester i test- och mellanlagringsmiljöer. Det är också bra att köra en delmängd av testerna mot produktionssystemet. Planera en en-till-en-paritet för viktiga testmiljöer med produktionsmiljön.

  • Automatisera testningen för att säkerställa konsekvent testtäckning och reproducerbarhet. Automatisera vanliga testningsuppgifter och integrera dem i dina byggprocesser. Att manuellt testa programvara är omständligt och känsligt för fel, men du kan utföra manuell undersökande testning. I fall där du behöver utveckla automatiserad testning använder du manuell testning för att fastställa omfånget för testerna som ska utvecklas.

  • Använd en skift-vänster-testmetod för att utföra återhämtnings- och tillgänglighetstestning tidigt i utvecklingscykeln.

  • Anpassa ett enkelt dokumentationsformat så att alla enkelt kan förstå processen och resultatet av varje regelbundet test.

  • Dela de dokumenterade resultaten med lämpliga team, till exempel operativa team, teknikledarskap, affärsintressenter och haveriberedskapsintressenter. Resultaten bör informera om förfining av tillförlitlighetsmål, till exempel servicenivåmål (SLO), serviceavtal (SLA), mål för återställningstid (RTO) och återställningspunktmål (RPO).

  • Skapa en regelbunden testtakt för dina säkerhetskopior. Återställ data till isolerade system för att säkerställa att säkerhetskopiorna är giltiga och att återställningar fungerar.

  • Dokumentera och dela tidsmått för återställning med dina intressenter för haveriberedskap för att säkerställa att förväntningarna på återställning är lämpliga.

  • Använd branschstandardmetoder för distributionstestning för att säkerställa att du har en automatiserad, förutsägbar och effektiv distributionsprocess.

  • Testa arbetsbelastningens förmåga att klara tillfälliga fel. Mer information finns i Rekommendationer för hantering av tillfälliga fel.

  • Testa arbetsbelastningens förmåga att svara på ändringar i belastningsmönster och toppar i användningen. Använd den här informationen för att testa din skalningsstrategi. Information om belastnings- och stresstestning finns i Rekommendationer för testning.

  • Testa hur din arbetsbelastning hanterar fel i beroende tjänster eller andra beroenden med hjälp av felinmatning.

  • Testa och validera hur din självåterställning och självbevarande design reagerar på fel. Testa automatiserade och manuella återställningsåtgärder.

  • Testa din haveriberedskapsplan för att svara på oåterkalleliga fel och andra större incidenter.

  • Testa arbetsbelastningens förmåga att försämras på ett smidigt sätt och minimera explosionsradien för komponentfel med hjälp av felinmatning.

Dra nytta av planerade och oplanerade avbrott

När din arbetsbelastning är offline på grund av planerat underhåll eller ett oplanerat avbrott har du en unik möjlighet att utföra testning och förbättra din förståelse för din arbetsbelastning. Följande avsnitt innehåller rekommendationer för varje scenario.

Planerat underhåll

När du har planerat underhållsperioder för uppdateringar eller korrigeringar kan du testa komponenter och flöden som inte ingår i underhållsarbetet. Utför tester utan den potentiella risken att arbetsbelastningen oväntat försämras eller kopplas från helt och hållet. Om du har tillräckligt med tid under underhållsperioden kan du även testa de komponenter och flöden som ingår i underhållet när underhållsarbetet har slutförts.

Oplanerat avbrott

Använd varje avbrottsincident som en möjlighet att lära dig mer om din arbetsbelastning och förbättra dess återhämtning genom att följa dessa steg, ordnade efter prioritet:

  • Få arbetsbelastningen online igen för dina kunder. Om du vill göra det kan du utföra en lösning på problemet, lösa problemet eller initiera återställningsprocesserna.

  • Fastställa rotorsaken till avbrottet och åtgärda det. Om du kan åtgärda rotorsaken som en del av undersökningen dokumenterar du rotorsaken och de åtgärder som du vidtog för att åtgärda den. Om problemet kräver ytterligare en underhållsperiod vid ett senare tillfälle kontrollerar du att dina åtgärdsåtgärder kan hantera den förväntade belastningen genom att testa den noggrant. Se till att du har konfigurerat tillräcklig övervakning för att täcka dina åtgärdsåtgärder.

  • Om det är tillämpligt letar du efter samma problem eller konfigurationsbrister som kan påverkas av liknande problem för alla komponenter i din arbetsbelastning. Använd den här möjligheten för att proaktivt hantera dessa komponenter. Läs din incidenthistorik för att identifiera mönster för liknande problem i din arbetsbelastning.

  • Använd dina resultat för att förbättra teststrategin. Kontrollera att du har åtgärdat rotorsaken och liknande problem genom att testa samma fel direkt.

Vägledning för felinmatning och kaosteknik

Felinmatningstestning följer principerna för kaosteknik genom att markera arbetsbelastningens förmåga att reagera på komponentfel. Utför felinmatningstestning i förproduktions- och produktionsmiljöer. Tillämpa testning på infrastruktur- och programlager. Använd den information som du har lärt dig Rekommendationer för att utföra analys av felläge för att säkerställa att du bara testar fel som du prioriterar och att du har riskreduceringsstrategier som åtgärdar fel. De viktigaste riktlinjerna för kaosteknik är:

  • Var proaktiv. Vänta inte på att fel ska inträffa. Försök att förutse fel genom att utföra kaosexperiment för att identifiera och åtgärda problem innan de påverkar produktionsmiljön.

  • Omfamna misslyckande. Acceptera och lär dig av de fel som uppstår i systemet. Se fel som en naturlig del av komplexa system och använd dem som möjligheter att lära sig och förbättra systemets tillförlitlighet.

  • Bryt systemet. Mata avsiktligt in fel eller stress i systemet för att testa dess motståndskraft. Simulera verkliga fel eller avbrott för att testa och förbättra arbetsbelastningens återställningsfunktioner.

  • Identifiera och åtgärda enskilda felpunkter tidigt. När du testar kan du läsa och uppdatera fellägesanalysen för att verifiera och åtgärda fel i dokumentationen. Använd tillförlitlighetsmetoder, till exempel redundans och segmentering, för att öka arbetsbelastningens tillgänglighet och minimera stilleståndstiden.

  • Installera skyddsräcken och åtgärda problemet på ett smidigt sätt. Implementera säkerhetsåtgärder, till exempel kretsbrytarmönstret eller begränsningsmönstret, för att öka tillgängligheten. Implementera metoder för korrekt försämring som möjliggör affärskontinuitet vid fel.

  • Minimera sprängradien. Implementera strategier för felisolering för att säkerställa att dess omfång är begränsat även om ett fel inträffar. Systemet fortsätter att fungera med minimal effekt på dina kunder.

  • Skapa immunitet. Använd kaostekniska experiment för att förbättra arbetsbelastningens förmåga att förhindra och återställa från fel.

Kaosteknik är en integrerad del av arbetsbelastningsteamets kultur och en pågående övning, inte en kortsiktig taktisk insats som svar på ett enda avbrott. Följ den här standardmetoden när du utformar dina kaosexperiment:

  1. Börja med en hypotes. Varje experiment bör ha ett tydligt mål, som att testa ett visst flödes förmåga att klara förlusten av en viss komponent.
  2. Mäta baslinjebeteende. Se till att du har konsekventa tillförlitlighets- och prestandamått för flödet och komponenterna som ingår i ett visst experiment för att jämföra med det försämrade tillståndet när du kör experimentet.
  3. Mata in ett fel eller fel. Experimentet bör avsiktligt rikta in sig på specifika komponenter som kan återställas snabbt och du bör ha en informerad förväntan om den effekt som felinmatningen kommer att orsaka för att hjälpa till att kontrollera experimentets sprängradie.
  4. Övervaka det resulterande beteendet. Samla in telemetri om de enskilda flödeskomponenterna och det flödesbeteende från slutpunkt till slutpunkt som experimentet riktar sig mot för att korrekt förstå effekterna av felet. Jämför de mått som du samlar in med baslinjemåtten för en fullständig bild av felinmatningsresultatet.
  5. Dokumentera processen och observationer. Att föra detaljerade register över dina experiment informerar de framtida besluten om arbetsbelastningsdesignen, vilket säkerställer att du åtgärdar de luckor som har avslöjats över tid.
  6. Identifiera och agera på resultatet. Planera för reparationssteg som kan läggas till i kvarvarande uppgifter för arbetsbelastningen som förbättringar. Se till att designförbättringsplaner granskas och testas i icke-produktionsmiljöer enligt samma processer som andra distributioner.

Validera regelbundet din process, arkitekturval och kod för att snabbt identifiera tekniska skulder, integrera ny teknik och anpassa dig till föränderliga krav.

När du utför felinmatningsexperiment:

  • Bekräfta att övervakningen är på plats och att aviseringar har konfigurerats.
  • Verifiera processen med att tilldela en direkt ansvarig person (DRI) för att bli ägare till en incident.
  • Se till att dokumentationen och undersökningsprocesserna är uppdaterade.

Integrera följande rekommendationer och överväganden för att optimera din strategi för kaostestning:

  • Utmaningssystemantaganden. Med testning försöker du förbättra återhämtningsförmågan för din arbetsbelastning och dina strategier för arbetsbelastningsdesign. Leta efter möjligheter att mata in fel i komponenter och flöden som du antar är tillförlitliga baserat på tidigare upplevelser. De kanske inte är tillförlitliga i din nya arbetsbelastning.

  • Verifiera ändringen, till exempel topologi, plattform och resurser. Utan noggrann testning, inklusive testning av felinmatning, kan du få en ofullständig bild av arbetsbelastningen när ändringarna har gjorts. Du kan till exempel oavsiktligt introducera nya beroenden eller brutna befintliga beroenden på ett sätt som inte visas omedelbart.

  • Använd SLA-buffertar. Begränsa kaostestningen så att den håller sig inom serviceavtalen och undvik potentiellt rykte eller ekonomiska effekter från avbrott. Dina mål för flödes- och komponentåterställning hjälper dig att definiera omfånget för testningen.

  • Upprätta en felbudget som en investering i kaos och felinmatning. Din felbudget är skillnaden mellan att uppnå 100 procent av servicenivåmålet och att uppnå det överenskomna servicenivåmålet.

  • Stoppa experimentet om det överskrider omfånget. Okända resultat är ett förväntat resultat av kaosexperiment. Sträva efter att uppnå balans mellan att samla in betydande resultatdata och påverka så få produktionsanvändare som möjligt.

  • Arbeta nära utvecklingsteamen för att säkerställa relevansen av de inmatade felen. Använd tidigare incidenter eller problem som vägledning. Granska beroenden och utvärdera resultaten när du tar bort dessa beroenden.

  • Identifiera och dokumentera tidigare oupptäckta beroenden mellan olika komponenter i din arbetsbelastning som avslöjas genom kaostestning.

  • Justera återställningsplaner efter behov för att ta hänsyn till beroenden som identifieras under kaostestning.

  • Använd resultaten från dina experiment och tester som grund för nya experiment och tester. När oväntade beteenden uppstår kan nya tester rikta dessa beteenden direkt och ge dig möjlighet att utforma reparationsstrategier för dem.

Kompromiss: Felinmatningstestning i produktion kan vara störande och kan orsaka driftstopp. Var transparent med intressenterna om den här möjligheten och se till att du har skydd på plats för att avsluta experiment och återställa planer för att snabbt vända de fel som du introducerar. För att skydda dig mot oavsiktliga avbrott i produktionen bör du se till att du planerar för tillräcklig redundans och att dina intressenter förstår kostnadsavvägningen.

Azure-underlättande

Azure Test Plans är en lättanvänd, webbläsarbaserad testhanteringslösning som innehåller alla funktioner som krävs för planerad manuell testning, testning av användargodkännande, undersökande testning och insamling av feedback från intressenter.

Azure Chaos Studio är en hanterad tjänst som använder kaosteknik för att hjälpa dig att mäta, förstå och förbättra återhämtningsförmågan för molnprogram och tjänster. Azure Chaos Studio nådde allmän tillgänglighet på Ignite 2023 och har många funktioner som hjälper dig att komma igång med felinmatning och återhämtningstestning för ditt program med hjälp av Azure-infrastrukturen.

Checklista för tillförlitlighet

Se den fullständiga uppsättningen rekommendationer.