Principer för tillförlitlighetsdesign

Avbrott och fel är allvarliga problem för alla arbetsbelastningar. En tillförlitlig arbetsbelastning måste överleva dessa händelser och fortsätta att konsekvent tillhandahålla sina avsedda funktioner. Den måste vara motståndskraftig så att den kan identifiera, motstå och återställa från fel inom en acceptabel tidsperiod. Den måste också vara tillgänglig så att användarna kan komma åt arbetsbelastningen under den utlovade tidsperioden på den utlovade kvalitetsnivån.

Det är inte realistiskt att anta att fel inte inträffar, särskilt när arbetsbelastningen är byggd för att köras på distribuerade system. Vissa komponenter kan misslyckas medan andra fortsätter att fungera. Vid något tillfälle kan användarupplevelsen påverkas, vilket äventyrar affärsmålen.

Arbetsbelastningsarkitekturer bör ha tillförlitlighetsgarantier i programkod, infrastruktur och åtgärder. Designval bör inte ändra avsikten som anges av affärskrav. Sådana förändringar bör betraktas som betydande kompromisser.

Designprinciperna är avsedda att ge vägledning för aspekter av tillförlitlighet som du bör tänka på under hela utvecklingslivscykeln. Börja med de rekommenderade metoderna och motivera fördelarna med en uppsättning krav. När du har angett din strategi kan du köra åtgärder med hjälp av checklistan Tillförlitlighet.

Om du inte tillämpar dessa principer på din design är arbetsbelastningen troligtvis inte beredd att förutse eller hantera problem i produktionen. Resultatet kan vara avbrott i tjänsten som leder till ekonomisk förlust. När det gäller kritiska arbetsbelastningar kan det äventyra säkerheten om dessa principer inte tillämpas.

Design för affärskrav

Målikon Samla in affärskrav med fokus på det avsedda verktyget för arbetsbelastningen.

Kraven måste omfatta användarupplevelse, data, arbetsflöden och egenskaper som är unika för arbetsbelastningen. Resultatet av kravprocessen måste tydligt ange förväntningarna. Målen måste vara uppnåeliga och förhandlas med teamet, med tanke på en angiven investering. De måste dokumenteras för att driva tekniska val, implementeringar och åtgärder.

Metod Fördelar
Kvantifiera framgång genom att ange mål för indikatorer för enskilda komponenter, systemflöden och systemet som helhet. Gör dessa mål användarflöden mer tillförlitliga? Mått kvantifierar förväntningarna. De gör att du kan förstå komplexiteten och avgöra om de underordnade kostnaderna för dessa komplexiteter ligger inom investeringsgränsen.

Målvärdena anger ett idealiskt tillstånd. Du kan använda värdena som testtrösklar som hjälper dig att identifiera avvikelser från det tillståndet och hur lång tid det tar att återgå till måltillståndet.

Efterlevnadskrav måste också ha förutsägbara resultat för flöden inom omfånget. Prioriteringen av dessa flöden uppmärksammar de områden som är mest känsliga.
Förstå plattformsåtaganden. Överväg begränsningar, kvoter, regioner och kapacitetsbegränsningar för tjänster. Serviceavtal (SLA) varierar beroende på tjänst. Alla tjänster och funktioner omfattas inte lika. Alla tjänster eller funktioner är inte tillgängliga i alla regioner. De flesta av prenumerationsresursgränserna är per region. Att ha en god förståelse för täckning och gränser kan hjälpa dig att identifiera drift och skapa återhämtnings- och återställningsmekanismer.
Fastställa beroenden och deras effekt på återhämtning. Genom att hålla reda på beroende infrastruktur, tjänster, API:er och funktioner som utvecklats av andra team eller tredje part kan du avgöra om arbetsbelastningen kan fungera utan dessa beroenden. Det hjälper dig också att förstå sammanhängande fel och förbättra nedströmsåtgärder.

Utvecklare kan implementera motståndskraftiga designmönster för att hantera potentiella fel när du använder externa tjänster som kan vara mottagliga för fel.

Design för motståndskraft

Målikon Arbetsbelastningen måste fortsätta att fungera med fullständiga eller reducerade funktioner.

Du bör förvänta dig att komponentfel, plattformsfel, prestandaförsämringar, begränsad resurstillgänglighet och andra fel inträffar. Skapa återhämtning i systemet så att det är feltolerant och kan försämras på ett smidigt sätt.

Metod Fördelar
Särskilj komponenter som är på den kritiska sökvägen från de som kan fungera i ett degraderat tillstånd. Alla komponenter i arbetsbelastningen måste inte vara lika tillförlitliga. Genom att fastställa allvarlighetsgrad kan du designa utifrån varje komponents allvarlighetsgrad. Du kommer inte att överengineera återhämtning för komponenter som kan försämra användarupplevelsen något, till skillnad från komponenter som kan orsaka problem från slutpunkt till slutpunkt om de misslyckas.

Designen kan vara effektiv när det gäller att allokera resurser till kritiska komponenter. Du kan också implementera strategier för felisolering så att om en icke-kritisk komponent misslyckas eller går in i ett degraderat tillstånd kan den isoleras för att förhindra sammanhängande fel.
Identifiera potentiella felpunkter i systemet, särskilt för de kritiska komponenterna, och fastställa effekten på användarflöden. Du kan analysera felfall, explosionsradie och felintensitet: fullständigt eller partiellt avbrott. Den här analysen påverkar utformningen av funktioner för felhantering på komponentnivå.
Skapa självbevarande funktioner med hjälp av designmönster korrekt och modularisera designen för att isolera fel. Systemet kommer att kunna förhindra att ett problem påverkar underordnade komponenter. Systemet kommer att kunna åtgärda tillfälliga och permanenta fel, flaskhalsar i prestanda och andra problem som kan påverka tillförlitligheten.

Du kommer också att kunna minimera sprängningsradien.
Lägg till möjligheten att skala ut de kritiska komponenterna (program och infrastruktur) genom att överväga kapacitetsbegränsningarna för tjänster i de regioner som stöds. Arbetsbelastningen kommer att kunna hantera toppar och variationer i variabel kapacitet. Den här funktionen är avgörande när det uppstår en oväntad belastning på systemet, till exempel en ökning av giltig användning. Om arbetsbelastningen är utformad för att skalas ut över flera regioner kan den till och med övervinna potentiella tillfälliga resurskapacitetsbegränsningar eller andra problem som påverkar i en enda region.
Skapa redundans i lager och återhämtning på olika programnivåer.

Sikta på redundans i fysiska verktyg och omedelbar datareplikering. Sikta också på redundans i det funktionella lagret som omfattar tjänster, drift och personal.
Redundans hjälper till att minimera enskilda felpunkter. Om det till exempel finns en komponent, zonindelad eller regionalt avbrott kan redundant distribution (i aktiv-aktiv eller aktiv-passiv) göra att du kan uppfylla drifttidsmål.

Genom att lägga till mellanhänder förhindras direkt beroende mellan komponenter och buffring förbättras. Båda dessa fördelar härdar systemets återhämtning.
Överetablera för att omedelbart minimera enskilda fel i redundanta instanser och buffra mot skenande resursförbrukning. Högre investeringar i överetablering ökar motståndskraften.

Systemet fortsätter att fungera vid full nytta vid ett aktivt fel även innan skalningsåtgärder kan börja åtgärda felet. På samma sätt kan du minska risken för oväntad förrymd resursförbrukning som gör anspråk på din planerade buffert, få kritisk triagetid innan systemfel eller aggressiv skalning inträffar.

Design för återställning

Målikon Arbetsbelastningen måste kunna förutse och återställa från de flesta fel, av alla omfattningar, med minimala störningar i användarupplevelsen och affärsmålen.

Även mycket motståndskraftiga system behöver katastrofberedskap i både arkitekturdesign och arbetsbelastningsåtgärder. På datalagret bör du ha strategier som kan reparera arbetsbelastningstillståndet vid skada.

Metod Fördelar
Ha strukturerade, testade och dokumenterade återställningsplaner som är anpassade till de förhandlade återställningsmålen. Planer måste omfatta alla komponenter utöver systemet som helhet. En väldefinierad process leder till en snabb återställning som kan förhindra negativ inverkan på din verksamhets ekonomi och rykte. Genom att utföra regelbundna återställningstester testas processen med att återställa systemkomponenter, data och redundans- och återställningssteg för att undvika förvirring när tid och dataintegritet är viktiga mått för att lyckas.
Se till att du kan reparera data för alla tillståndskänsliga komponenter i dina återställningsmål. Säkerhetskopior är viktiga för att få systemet tillbaka till ett fungerande tillstånd med hjälp av en betrodd återställningspunkt, till exempel det senast kända goda tillståndet.

Oföränderliga och transaktionsmässigt konsekventa säkerhetskopieringar säkerställer att data inte kan ändras och att återställda data inte är skadade.
Implementera automatiserade självåterställningsfunktioner i designen. Den här automatiseringen minskar riskerna från externa faktorer, till exempel mänsklig inblandning, och förkortar brytkorrigeringscykeln.
Ersätt tillståndslösa komponenter med oföränderliga tillfälliga enheter. Att skapa tillfälliga enheter som du kan snurra upp och förstöra på begäran ger repeterbarhet och konsekvens. Använd distributionsmodeller sida vid sida för att göra övergången till de nya enheterna inkrementell, vilket minimerar störningar.

Design för drift

Målikon Flytta vänster i åtgärder för att förutse feltillstånd.

Testa fel tidigt och ofta i utvecklingslivscykeln och fastställa prestandans inverkan på tillförlitligheten. För rotorsaksanalys och efterblödningar måste du ha delad synlighet, mellan team, beroendestatus och pågående fel. Insikter, diagnostik och aviseringar från observerbara system är grundläggande för effektiv incidenthantering och kontinuerlig förbättring.

Metod Fördelar
Skapa observerbara system som kan korrelera telemetri. Övervakning och diagnostik är viktiga åtgärder. Om något misslyckas måste du veta att det misslyckades, när det misslyckades och varför det misslyckades. Observerbarhet på komponentnivå är grundläggande, men aggregerad observerbarhet för komponenter och korrelerade användarflöden ger en holistisk vy över hälsostatus. Dessa data krävs för att göra det möjligt för platstillförlitlighetstekniker att prioritera sina åtgärder.
Förutse potentiella fel och avvikande beteende. Gör aktiva tillförlitlighetsfel synliga med hjälp av prioriterade och åtgärdsinriktade aviseringar.

Investera i tillförlitliga processer och infrastruktur som leder till snabbare prioritering.
Platstillförlitlighetstekniker kan meddelas omedelbart så att de kan minimera pågående live-platsincidenter och proaktivt minska potentiella fel som identifieras av prediktiva aviseringar innan de blir liveincidenter.
Simulera fel och köra tester i produktions- och förproduktionsmiljöer. Det är fördelaktigt att uppleva fel i produktionen så att du kan ställa in realistiska förväntningar på återställning. På så sätt kan du göra designval som på ett smidigt sätt svarar på fel. Dessutom kan du testa de tröskelvärden som du anger för affärsmått.
Skapa komponenter med automatisering i åtanke och automatisera så mycket du kan. Automation minimerar risken för mänskliga fel och ger konsekvens vid testning, distribution och åtgärder.
Ta hänsyn till rutinåtgärder och deras inverkan på systemets stabilitet. Arbetsbelastningen kan vara föremål för pågående åtgärder, till exempel programrevisioner, säkerhets- och efterlevnadsgranskningar, komponentuppgraderingar och säkerhetskopieringsprocesser. Genom att granska dessa ändringar säkerställs systemets stabilitet.
Lär dig kontinuerligt från incidenter i produktion. Baserat på incidenterna kan du fastställa vilken inverkan och tillsyn i design och åtgärder som kan gå obemärkt förbi i förproduktion. I slutändan kommer du att kunna skapa förbättringar baserat på verkliga incidenter.

Håll det enkelt

Målikon Undvik att överengineera arkitekturdesign, programkod och åtgärder.

Det är ofta det du tar bort i stället för det du lägger till som leder till de mest tillförlitliga lösningarna. Enkelhet minskar ytan för kontroll, vilket minimerar ineffektivitet och potentiella felkonfigurationer eller oväntade interaktioner. Å andra sidan kan en översimplifiering leda till felkritiska systemdelar. Upprätthålla en balanserad metod.

Metod Fördelar
Lägg bara till komponenter i din arkitektur om de hjälper dig att uppnå affärsvärden. Håll den kritiska vägen mager. Design för affärskrav kan leda till en enkel lösning som är enkel att implementera och hantera. Undvik att ha för många kritiska komponenter, eftersom var och en är en viktig felpunkt.
Upprätta standarder i kodimplementering, distribution och processer och dokumentera dem. Identifiera möjligheter att tillämpa dessa standarder med hjälp av automatiserade valideringar. Standarder ger konsekvens och minimerar mänskliga fel. Metoder som namngivningskonventioner av standardtyp och kodstilsguider kan hjälpa dig att upprätthålla kvalitet och göra tillgångar enkla att identifiera under felsökningen.
Utvärdera om teoretiska metoder översätts till pragmatisk design som gäller för dina användningsfall. Programkod som är för detaljerad kan leda till onödigt beroende, extra åtgärder och svårt underhåll.
Utveckla precis tillräckligt med kod. Du kan förhindra problem som beror på ineffektiva implementeringar, till exempel oväntad resursförbrukning, användar- eller dataflödesfel och kodbuggar.

Tillförlitlighetsproblem bör däremot leda till kodgranskningar för att säkerställa att koden är tillräckligt motståndskraftig för att hantera problemen.
Dra nytta av funktioner som tillhandahålls av plattformen och fördefinierade tillgångar som kan hjälpa dig att effektivt uppfylla affärsmålen. Den här metoden minimerar utvecklingstiden. Du kan också förlita dig på beprövade metoder som har använts med liknande arbetsbelastningar.

Nästa steg