Delen via


Ontwerpprincipes voor betrouwbaarheid

Uitval en storingen zijn ernstige zorgen voor alle workloads. Een betrouwbare workload moet deze gebeurtenissen overleven en de beoogde functionaliteit consistent blijven bieden. Het moet tolerant zijn, zodat het fouten kan detecteren en weerstaan terwijl het blijft werken. Het moet herstelbaar zijn, zodat, als een onderbreking de tolerantiemetingen overschrijdt, de workload kan worden hersteld binnen overeengekomen hersteldoelen. Het moet ook beschikbaar zijn, zodat gebruikers tijdens de beloofde periode toegang hebben tot de workload op het beloofde kwaliteitsniveau.

Het is niet realistisch om ervan uit te gaan dat er geen fouten optreden, met name wanneer de workload is gebouwd om te worden uitgevoerd op gedistribueerde systemen. Sommige onderdelen kunnen mislukken terwijl andere onderdelen blijven werken. Op een bepaald moment kan de gebruikerservaring worden beïnvloed, waardoor zakelijke doelstellingen worden aangetast.

Workloadarchitecturen moeten betrouwbaarheidsgaranties hebben in toepassingscode, infrastructuur en bewerkingen. Ontwerpkeuzen mogen de intentie die is opgegeven door bedrijfsvereisten niet wijzigen. Dergelijke wijzigingen moeten als belangrijke compromissen worden beschouwd.

De ontwerpprincipes zijn bedoeld om richtlijnen te bieden voor aspecten van betrouwbaarheid die u tijdens de ontwikkelingslevenscyclus moet overwegen. Begin met de aanbevolen benaderingen en rechtvaardig de voordelen voor een reeks vereisten. Nadat u uw strategie hebt ingesteld, voert u acties uit met behulp van de controlelijst voor betrouwbaarheid.

Als u deze principes niet toepast op uw ontwerp, is de workload waarschijnlijk niet voorbereid op het anticiperen of afhandelen van problemen in de productieomgeving. Het resultaat kan een verstoring van de service zijn die tot financiële verliezen leidt. In het geval van kritieke workloads kan het niet toepassen van deze principes de veiligheid in gevaar brengen.

Ontwerpen voor zakelijke vereisten

Doelpictogram Krijg duidelijkheid over het bereik van de workload, de groei van de gebruiker en de belangrijkste beloftes die het team heeft gedaan aan externe klanten en interne belanghebbenden.

Ontwerp is geen schatting op basis van niet-gedefinieerde of vage resultaten. Betrouwbaarheid vereist een opzettelijke activiteit die afstemming realiseert op acceptabele gebruikerservaring, ontwerpbeperkingen en hoe succes eruitziet en hoe deze wordt gemeten.

Stel duidelijke, haalbare en gedocumenteerde doelen vast, onderhandeld met zakelijke belanghebbenden en gebaseerd op realistische investeringen en prognoses. Deze vereisten informeren uw architectuurkeuzes rechtstreeks, van tolerantiestrategieën tot waarneembaarheidshulpprogramma's en schaalplannen.

Methode Voordeel
Richt u op het verzamelen van informatie die nodig is om het bereik en de diepte van de oplossing te definiëren. Verhelder beperkingen die van invloed zijn op bedrijfsdoelen. Begin met vragen op hoog niveau, zoals:

- Welk niveau van tolerantie, herstel, waarneembaarheid en eenvoud is vereist?
- Zijn er gedefinieerde beperkingen met betrekking tot kosten, naleving, geografie of latentie?

Documenteer op basis van die informatie wat goed genoeg en eenvoudig te bereiken is.
Het begrijpen van doelen en grenzen voorkomt schattingen. Anders loopt u mogelijk vast in een iteratieve ontwerplus, wat resulteert in verspilde inspanningen en onnodige kosten.
Beslissing begeleiden door zakelijke doelstellingen te vertalen in gedeeld begrip van architectonische afwegingen binnen reële beperkingen. Opties presenteren die van invloed zijn op:

- Financiële kosten
- Technische complexiteit
-Beveiligingsoverwegingen
- Operationele overhead
Dit helpt belanghebbenden inzicht te krijgen in de kosten, complexiteit en operationele implicaties van hun vragen en hen te begeleiden naar realistische, uitgelijnde resultaten.
Prioriteit geven aan het definiëren van betrouwbaarheidsresultaten voor elke kritieke gebruikersstroom via algemene metingen, zoals uptime.

Identificeer de gebruikersgerichte mogelijkheden en stromen via het systeem en beoordeel voor elk ervan de bedrijfswaarde, gebruikspatronen en tolerantievereisten. Zorg voor consensus op stroomniveau om ervoor te zorgen dat ontwerpbeslissingen afgestemd blijven op bedrijfsdoelen.
Dit gesprek helpt om belanghebbenden af te leiden van onhoudbare uitspraken, zoals 'de site moet altijd actief zijn', naar praktische, haalbare verwachtingen die zijn gekoppeld aan echte functionaliteit en resultaten. Deze resultaten helpen bepalen wat wordt opgelost met technologie en wat kan worden aangepakt met aanvullende bedrijfscontinuïteitsplannen.
Ankerontwerpkeuzes rond tijdshorizonnen.

Definieer de gebruiksverwachtingen met realistische prognoses. Wat is bijvoorbeeld de verwachte gebruikersbelasting bij het starten? Is de groei van gebruikers naar verwachting lineair, exponentieel of onzeker.
Deze informatie helpt u bij het ontwerpen van een architectuur die tegemoetkomt aan de betrouwbaarheidsbehoeften op de korte termijn, terwijl ontwerpbeslissingen worden vermeden waarvoor aanzienlijke herwerk nodig is om toekomstige horizons af te handelen. Deze aanpak is van invloed op het nadenken over elasticiteit, gebeurtenisgestuurde werkstromen en stelt u in staat strategische keuzes te maken om te bepalen welke technische schulden moeten worden in rekening gebracht of vermeden.
Houd rekening met afhankelijkheden die de autonomie van het ontwerp kunnen beperken, zoals organisatiebeperkingen.

Houd rekening met gecentraliseerde infrastructuur, beveiligingsmandaten, netwerkrouteringsbeleid of platformbeslissingen die rechtstreeks van invloed zijn op wat u kunt beloven in termen van tolerantie, beschikbaarheid en herstel.
Inzicht in uw afhankelijkheid van services buiten uw controle helpt u bij het ontwerpen met realistische verwachtingen voor betrouwbaarheid. Het zorgt ervoor dat uw RTO/RPO-doelen en SLO's haalbaar en duidelijk worden gecommuniceerd, zodat overbeloftes worden voorkomen en onverwachte situaties tot een minimum worden beperkt.

Ontwerpen voor veerkracht

Doelpictogram De werklast moet blijven draaien met volledige of verminderde functionaliteit.

U moet verwachten dat onderdelen defecten, platformstoringen, prestatieverminderingen, beperkte beschikbaarheid van resources en andere fouten optreden. Bouw tolerantie in het systeem zodat het fouttolerant is en probleemloos kan afnemen.

Methode Voordeel
Onderscheid maken tussen onderdelen die zich op het kritieke pad bevinden van onderdelen die kunnen functioneren in een gedegradeerde status. Niet alle onderdelen van de workload moeten even betrouwbaar zijn. Het bepalen van de kritiek helpt u bij het ontwerpen op basis van de kritiek van elk onderdeel. Je zal de veerkracht van componenten niet overdreven ontwerpen die de gebruikerservaring enigszins kunnen verslechteren, in tegenstelling tot onderdelen die eind-tot-eind problemen kunnen veroorzaken als ze falen.

Het ontwerp kan efficiënt zijn bij het toewijzen van resources aan kritieke onderdelen. U kunt ook strategieën voor foutisolatie implementeren, zodat als een niet-kritiek onderdeel mislukt of een gedegradeerde status invoert, deze kan worden geïsoleerd om trapsgewijze fouten te voorkomen.
Identificeer potentiële storingspunten in het systeem, met name voor de kritieke onderdelen, en bepaal het effect op gebruikersstromen. U kunt de foutgevallen, de straalstraal en de intensiteit van de fout analyseren: volledige of gedeeltelijke storing. Deze analyse beïnvloedt het ontwerp van mogelijkheden voor foutafhandeling op onderdeelniveau.
Bouw mogelijkheden voor zelfbehoud door ontwerppatronen correct te gebruiken en het ontwerp te modulariseren om fouten te isoleren. Het systeem zal in staat zijn om te voorkomen dat een probleem impact heeft op de onderdelen verderop in de keten. Het systeem kan tijdelijke en permanente fouten, prestatieknelpunten en andere problemen die van invloed kunnen zijn op de betrouwbaarheid beperken.

U kunt ook de straal minimaliseren.
Voeg de mogelijkheid toe om de kritieke onderdelen (toepassing en infrastructuur) uit te schalen door rekening te houden met de capaciteitsbeperkingen van services in de ondersteunde regio's. De workload kan pieken en fluctuaties in variabele capaciteit verwerken. Deze mogelijkheid is van cruciaal belang wanneer er een onverwachte belasting op het systeem is, zoals een piek in geldig gebruik. Als de werkbelasting is ontworpen om uit te schalen over meerdere regio's, kan deze zelfs potentiële beperkingen voor tijdelijke resourcecapaciteit of andere problemen oplossen die van invloed zijn op één regio.
Bouw redundantie in lagen en veerkracht in verschillende toepassingslagen.

Streef naar redundantie in fysieke infrastructuur en onmiddellijke gegevensreplicatie. Richt u ook op redundantie in de functionele laag die betrekking heeft op services, bewerkingen en personeel.
Redundantie helpt bij het minimaliseren van single points of failure. Als er bijvoorbeeld sprake is van een storing op component-, zonale of regionale schaal, kan redundante inzet (in "actief-actief" of "actief-passief") ervoor zorgen dat u uw uptimedoelen haalt.

Door tussenpersonen toe te voegen voorkomt u directe afhankelijkheid tussen onderdelen en verbetert u de buffering. Beide voordelen verbeteren de veerkracht van het systeem.
Overprovisioneren om individuele storingen van redundante instanties onmiddellijk te beperken en om te bufferen tegen buitensporig middelenverbruik. Hogere investeringen in overprovisioning verhogen de veerkracht.

Het systeem blijft werken met het volledige hulpprogramma tijdens een actieve fout, zelfs voordat schaalbewerkingen kunnen beginnen met het oplossen van de fout. Op dezelfde manier kunt u het risico op onverwacht ongecontroleerd resourceverbruik verminderen dat uw geplande buffer claimt, waardoor u essentiële reactietijd wint voordat systeemfouten optreden of agressieve opschaling plaatsvindt.

Ontwerpen voor herstel

Doelpictogram De workload moet kunnen anticiperen en herstellen van de meeste storingen, van alle omvang, met minimale onderbreking van de gebruikerservaring en bedrijfsdoelstellingen.

Zelfs zeer tolerante systemen hebben noodopbereidingsmethoden nodig, zowel in architectuurontwerp als workloadbewerkingen. Op de gegevenslaag moet u strategieën hebben die de werkbelastingstatus kunnen herstellen in geval van beschadiging.

Methode Voordeel
U hebt gestructureerde, geteste en gedocumenteerde herstelplannen die zijn afgestemd op de overeengekomen hersteldoelen. Plannen moeten alle onderdelen omvatten naast het systeem als geheel. Een goed gedefinieerd proces leidt tot een snel herstel dat negatieve gevolgen voor de financiën en reputatie van uw bedrijf kan voorkomen. Het uitvoeren van regelmatige herstelanalyses test het proces van het herstellen van systeemonderdelen, gegevens en failover- en failbackstappen om verwarring te voorkomen wanneer tijd en gegevensintegriteit belangrijke maatstaven voor succes zijn.
Zorg ervoor dat u gegevens van alle stateful onderdelen binnen uw hersteldoelen kunt herstellen. Back-ups zijn essentieel om het systeem terug te krijgen naar een werkende status met behulp van een vertrouwd herstelpunt, zoals de laatst bekende goede status.

Onveranderbare en transactionele consistente back-ups zorgen ervoor dat gegevens niet kunnen worden gewijzigd en dat de herstelde gegevens niet beschadigd zijn.
Implementeer geautomatiseerde zelfherstelmogelijkheden in het ontwerp. Deze automatisering vermindert risico's van externe factoren, zoals menselijke interventie, en verkort de onderbrekingscyclus.
Vervang stateless componenten door onveranderbare kortstondige eenheden. Het bouwen van kortstondige eenheden die u op aanvraag kunt instellen en vernietigen, biedt herhaalbaarheid en consistentie. Gebruik naast elkaar implementatiemodellen om de overgang naar de nieuwe eenheden incrementeel te maken, waardoor onderbrekingen worden geminimaliseerd.

Ontwerp voor bedrijfsactiviteiten

Doelpictogram Verschuif naar links in bewerkingen om te anticiperen op foutvoorwaarden.

Testfouten vroeg en vaak in de ontwikkelingslevenscyclus en bepalen de impact van de prestaties op betrouwbaarheid. Omwille van hoofdoorzaakanalyse en postmortems moet u gedeelde zichtbaarheid hebben in teams, van afhankelijkheidsstatus en lopende fouten. Inzichten, diagnostische gegevens en waarschuwingen van waarneembare systemen zijn essentieel voor effectief incidentbeheer en continue verbetering.

Methode Voordeel
Bouw waarneembare systemen die telemetrie kunnen correleren. Bewaking en diagnose zijn cruciale bewerkingen. Als iets mislukt, moet u weten dat het is mislukt, wanneer het is mislukt en waarom het is mislukt. Waarneembaarheid op onderdeelniveau is fundamenteel, maar geaggregeerde waarneembaarheid van onderdelen en gecorreleerde gebruikersstromen biedt een holistische weergave van de status. Deze gegevens zijn vereist om site-betrouwbaarheidstechnici in staat te stellen prioriteit te geven aan hun inspanningen voor herstel.
Voorspel potentiële storingen en afwijkend gedrag. Maak fouten met actieve betrouwbaarheid zichtbaar met behulp van waarschuwingen met prioriteit en actie.

Investeer in betrouwbare processen en infrastructuur die leiden tot snellere sortering.
Technici voor sitebetrouwbaarheid kunnen onmiddellijk op de hoogte worden gesteld, zodat ze doorlopende livesite-incidenten kunnen beperken en proactief potentiële fouten kunnen beperken die worden geïdentificeerd door voorspellende waarschuwingen voordat ze live-incidenten worden.
Simuleer fouten en voer tests uit in productie- en preproductieomgevingen. Het is nuttig om fouten in de productie te ervaren, zodat u realistische verwachtingen voor herstel kunt instellen. Hiermee kunt u ontwerpkeuzen maken die probleemloos reageren op fouten. Ook kunt u hiermee de drempelwaarden testen die u hebt ingesteld voor metrische zakelijke gegevens.
Bouw onderdelen met automatisering in gedachten en automatiseer zoveel mogelijk. Automatisering minimaliseert het potentieel voor menselijke fouten, waardoor consistentie wordt toegevoegd aan testen, implementatie en bewerkingen.
Houd rekening met routinebewerkingen en hun invloed op de stabiliteit van het systeem. De workload kan onderhevig zijn aan lopende bewerkingen, zoals toepassingsrevisies, beveiligings- en nalevingscontroles, onderdeelupgrades en back-upprocessen. Het controleren van deze wijzigingen zorgt voor de stabiliteit van het systeem.
Continu leren van incidenten in productie. Op basis van de incidenten kunt u de impact en het toezicht in ontwerp en bewerkingen bepalen die mogelijk onopgemerkt zijn in de preproductie. Uiteindelijk kunt u verbeteringen aandrijven op basis van echte incidenten.

Houd het eenvoudig

Doelstellingenpictogram Voorkom dat u het architectuurontwerp, de applicatiecode en de werking over-engineert.

Het is vaak wat u verwijdert in plaats van wat u toevoegt dat leidt tot de meest betrouwbare oplossingen. Eenvoud vermindert het oppervlak voor controle, minimaliseert inefficiënties en mogelijke onjuiste configuraties of onverwachte interacties. Aan de andere kant kan oversimplificatie enkele storingspunten veroorzaken. Behoud een evenwichtige benadering.

Methode Voordeel
Voeg alleen onderdelen toe aan uw architectuur als ze u helpen bij het bereiken van bedrijfswaarden. Houd het kritieke pad efficiënt. Ontwerpen voor zakelijke vereisten kan leiden tot een eenvoudige oplossing die eenvoudig te implementeren en te beheren is. Vermijd te veel kritieke onderdelen, omdat elk onderdeel een belangrijk storingspunt is.
Stel normen vast voor code-implementatie, uitrol en processen en documenteer ze. Mogelijkheden identificeren om deze standaarden af te dwingen met behulp van geautomatiseerde validaties. Standaarden bieden consistentie en minimaliseren menselijke fouten. Benaderingen zoals standaardnaamconventies en codestijlgidsen kunnen u helpen om kwaliteit te behouden en assets gemakkelijk te identificeren tijdens het oplossen van problemen.
Evalueer of theoretische benaderingen worden omgezet in pragmatisch ontwerp dat van toepassing is op uw use cases. Toepassingscode die te gedetailleerd is, kan leiden tot onnodige onderlinge afhankelijkheden, extra bewerkingen en moeilijk onderhoud.
Ontwikkel net genoeg code. U kunt problemen voorkomen die het gevolg zijn van inefficiënte implementaties, zoals onverwacht resourceverbruik, fouten in gebruikers- of gegevensstromen en codefouten.

Betrouwbaarheidsproblemen moeten daarentegen leiden tot codebeoordelingen om ervoor te zorgen dat code flexibel genoeg is om de problemen op te lossen.
Profiteer van platformfuncties en vooraf gedefinieerde assets die u kunnen helpen effectief te voldoen aan bedrijfsdoelen. Deze benadering minimaliseert de ontwikkeltijd. Hiermee kunt u ook vertrouwen op beproefde en geteste procedures die zijn gebruikt met vergelijkbare workloads.

Volgende stappen