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

Gäller för denna checklista för Azure Well-Architected Framework Reliability:

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 graciös 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 verifiera 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än vägledning och vägledning för testning som är specifik för felinmatning och kaosteknik.

Definitioner

Period Definition
Tillgänglighet Hur lång tid en programarbetsbelastning körs i ett felfritt tillstånd utan betydande stilleståndstid.
Kaosteknik Praxisen att utsätta program och tjänster för verkliga påfrestningar och misslyckanden. Målet med kaosteknik är att bygga och validera motståndskraft mot otillförlitliga förhållanden 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.
Motståndskraft En programarbetsbelastnings förmåga att motstå och återställa från fellägen.

Viktiga designstrategier

Testa tillförlitlighetsberedskap

  • Utför rutinmässigt testning för att verifiera befintliga tröskelvärden, mål och antaganden. När en större ändring sker i din arbetsbelastning kör du regelbundna tester. Utför de flesta tester i test- och mellanlagringsmiljöer. Det är också bra att köra en delmängd tester 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 testuppgifter och integrera dem i dina byggprocesser. Manuellt testning av 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 de tester som ska utvecklas.

  • Anta en metod för skift-vänster-testning för att utföra återhämtnings- och tillgänglighetstestning tidigt i utvecklingscykeln.

  • Anpassa ett enkelt dokumentationsformat så att det är enkelt för alla att 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 intressenter för haveriberedskap. Resultaten bör informera om förfining av tillförlitlighetsmål, till exempel servicenivåmål , serviceavtal (SLA), mål för återställningstid (RTO) och mål för återställningspunkter .

  • 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ällningarna fungerar.

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

  • Använd testprocedurer för branschstandarddistribution 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 verifiera hur din självåterställning och självbevarande design reagerar på fel. Testa automatiserade och manuella återställningsåtgärder.

  • Testa din plan för haveriberedskap för att svara på katastrofala fel och andra större incidenter.

  • Testa arbetsbelastningens förmåga att försämras korrekt 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 planerade 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 oväntat nedgradera arbetsbelastningen eller ta den helt offline. 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 är klart.

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å tillbaka arbetsbelastningen online för dina kunder. Om du vill göra det kan du lösa problemet, lösa problemet eller initiera återställningsprocesserna.

  • Fastställa rotorsaken till driftstoppet 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äckligt med ö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 i 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.

Använda 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 fellägesanalys för att säkerställa att du bara testar fel som du prioriterar och att du har åtgärdsstrategier 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 inträffar 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 störningar 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 en graciös åtgärd. Implementera säkerhetsåtgärder, till exempel kretsbrytarmönstret eller begränsningsmönstret, för att öka tillgängligheten. Implementera graciösa nedbrytningsmetoder som möjliggör affärskontinuitet vid fel.

  • Minimera explosionsradien. 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 motstå förlusten av en viss komponent.
  2. Mät 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 vilken effekt felinmatningen kommer att orsaka för 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 syftar till 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. Genom att föra detaljerade register över dina experiment får du information om framtida beslut om arbetsbelastningsdesignen, vilket säkerställer att du tar itu med de luckor som har avslöjats över tid.
  6. Identifiera och agera på resultatet. Planera för reparationssteg som kan läggas till i din kvarvarande arbetsbelastning 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, dina arkitekturval och din kod för att snabbt identifiera tekniska skulder, integrera nya tekniker och anpassa dig till förändrade 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 ta över ägarskapet för 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:

  • Utmana systemantaganden. 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 ändringar, till exempel topologi, plattform och resurser. Utan noggrann testning, inklusive felinmatningstestning, kan du ha en ofullständig bild av din arbetsbelastning när ändringarna har gjorts. Du kan till exempel oavsiktligt introducera nya beroenden eller brutna befintliga beroenden på ett sätt som inte är omedelbart uppenbart.

  • Använd SLA-buffertar. Begränsa kaostestning för att hålla dig inom dina serviceavtal och undvika potentiella rykteseffekter 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 SLO:et och att uppnå det överenskomna SLO:et.

  • 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 en guide. Granska beroenden och utvärdera resultatet 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 intressenter 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 måste du planera 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 tillhandahå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 molnprograms- och tjänstresiliens. 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.