Wat is Azure Chaos Studio Preview?

Azure Chaos Studio is een beheerde service voor het verbeteren van de tolerantie door fouten in uw Azure-toepassingen te injecteren. Door experimenten met gecontroleerde foutinjectie uit te voeren op uw toepassingen, een praktijk die chaos engineering wordt genoemd, kunt u de tolerantie meten, begrijpen en verbeteren tegen praktijkincidenten, zoals storingen in regio's of toepassingsfouten die een hoog CPU-gebruik op een VM veroorzaken.

Waarom zou ik Chaos Studio gebruiken?

Of u nu een nieuwe toepassing ontwikkelt die wordt gehost in Azure, een bestaande toepassing migreert naar Azure of een toepassing gebruikt die al wordt uitgevoerd in Azure, het is belangrijk om de tolerantie van uw toepassing te valideren en te verbeteren. Tolerantie is de mogelijkheid van een systeem om onderbrekingen te verwerken en te herstellen. Onderbrekingen in de beschikbaarheid van uw toepassing kunnen leiden tot fouten en fouten voor gebruikers, wat op zijn beurt negatieve gevolgen kan hebben voor uw bedrijf of missie.

Bij het uitvoeren van een toepassing in de cloud moet u bij het voorkomen van deze negatieve gevolgen valideren dat uw toepassing effectief reageert op onderbrekingen die kunnen worden veroorzaakt door een service die u nodig hebt, onderbrekingen die worden veroorzaakt door een storing in de service zelf of zelfs onderbrekingen van hulpprogramma's en processen voor het reageren op incidenten. Met chaos-experimenten kunt u testen of uw in de cloud gehoste toepassing bestand is tegen fouten.

Wanneer zou ik Chaos Studio gebruiken?

Chaos engineering kan worden gebruikt voor een groot aantal verschillende validatiescenario's voor tolerantie. Deze scenario's bespannen de volledige levenscyclus van serviceontwikkeling en -bewerking en kunnen worden gecategoriseerd als verschuiving naar rechts, waarbij het scenario het beste kan worden gevalideerd in een productie- of preproductieomgeving, of als een verschuiving naar links, waarin het scenario kan worden gevalideerd in een ontwikkelomgeving of gedeelde testomgeving. Normaal gesproken moeten scenario's voor verschuiving naar rechts worden uitgevoerd met echt klantverkeer of gesimuleerde belasting, terwijl scenario's met verschuiving naar links zonder echt klantverkeer kunnen worden uitgevoerd. Dit zijn enkele veelvoorkomende scenario's waarin chaos-engineering kan worden toegepast:

  • Het reproduceren van een incident dat van invloed was op uw toepassing om de foutmodus beter te begrijpen of ervoor te zorgen dat herstelitems na incidenten voorkomen dat het incident zich blijft herhalen.
  • 'gamedagen' uitvoeren: belasting, schaal, prestaties en tolerantievalidatie van een service ter voorbereiding op een belangrijke gebruikersgebeurtenis of het seizoen.
  • Het uitvoeren van BCDR-oefeningen (bedrijfscontinuïteit/herstel na noodherstel) om ervoor te zorgen dat als uw toepassing wordt beïnvloed door een groot noodherstel, deze snel kan worden hersteld en kritieke gegevens behouden blijven.
  • Het uitvoeren van oefeningen voor hoge beschikbaarheid om de tolerantie van toepassingen te testen op specifieke storingen, zoals regiostoringen, netwerkconfiguratiefouten, gebeurtenissen met hoge stress of ruisproblemen.
  • Benchmarks voor toepassingsprestaties ontwikkelen.
  • Capaciteitsbehoeften plannen voor productieomgevingen.
  • Stresstests of belastingstests uitvoeren.
  • Ervoor zorgen dat services die zijn gemigreerd vanuit een on-premises of andere cloudomgeving, bestand blijven tegen bekende fouten.
  • Het bouwen van vertrouwen in services die zijn gebouwd op cloudeigen architecturen.
  • Valideren dat hulpprogramma's voor live-site, waarneembaarheidsgegevens en on-callprocessen werken zoals verwacht onder onverwachte omstandigheden.

Voor veel van deze scenario's bouwt u eerst tolerantie met behulp van ad-hoc chaosexperimenten en valideert u vervolgens continu of nieuwe implementaties de tolerantie niet terughalen met behulp van chaosexperimenten als een implementatiepoort in uw CI/CD-pijplijn.

Hoe werkt Chaos Studio?

Met Chaos Studio kunt u foutinjectie in uw Azure-resources op een veilige en gecontroleerde manier ins delen. De kern van Chaos Studio is chaos-experiment. Een chaos-experiment is een Azure-resource die de fouten beschrijft die moeten worden uitgevoerd en de resources waar deze fouten op moeten worden uitgevoerd. Fouten kunnen parallel of opeenvolgend worden uitgevoerd, afhankelijk van uw behoeften. Chaos Studio ondersteunt twee soorten fouten: service-directe fouten die rechtstreeks worden uitgevoerd op een Azure-resource zonder installatie of instrumentatie (bijvoorbeeld het opnieuw opstarten van een Azure Cache voor Redis-cluster of het toevoegen van netwerklatentie aan AKS-pods) en op agent gebaseerde fouten, die worden uitgevoerd op virtuele machines of virtuele-machineschaalsets om fouten in gast uit te voeren (bijvoorbeeld het toepassen van een druk op het virtuele geheugen of het stoppen van een proces). Elke fout heeft specifieke parameters die u kunt bepalen, zoals welk proces moet worden geseed of hoeveel geheugendruk moet worden gegenereerd.

Wanneer u een chaos-experiment bouwt, definieert u een of meer stappen die opeenvolgend worden uitgevoerd, elke stap met een of meer vertakkingen die parallel worden uitgevoerd binnen de stap en elke vertakking die een of meer acties bevat, zoals het injecteren van een fout of het wachten op een bepaalde duur. Ten slotte organiseertu de resources (doelen) die voor elke fout worden uitgevoerd, in groepen die selectors worden genoemd, zodat u eenvoudig kunt verwijzen naar een groep resources in elke actie.

Diagram met de indeling van een chaos-experiment.

Een chaos-experiment is een Azure-resource die zich in een abonnement en resourcegroep woont. U kunt de Azure Portal of de Chaos Studio-REST API gebruiken om de status van een experiment te maken, bij te werken, te starten, te annuleren en weer te geven.

Volgende stappen

Ga aan de slag met het maken en uitvoeren van chaosexperimenten om de tolerantie van toepassingen te verbeteren met Chaos Studio met behulp van de onderstaande koppelingen.