Chaos engineering: opzettelijk chaos creëren om applicaties voor te bereiden op écht onverwachte gebeurtenissen

Opzettelijk chaos creëren in een applicatieomgeving? Dat klinkt niet logisch, toch gebeurt het vaker dan je denkt. En met een reden: chaos engineering is een manier om de betrouwbaarheid en veerkracht van je applicatieomgeving te testen door er opzettelijk fouten op los te laten – en vervolgens te kijken hoe applicaties reageren. Denk bijvoorbeeld aan het uitschakelen van databases of het verstoren van netwerkverbindingen.

Het voordeel: als je proactief chaos creëert, dan kun je incidentele chaos vóór blijven. Met chaos engineering identificeer je zwakke plekken, om vervolgens applicaties veerkrachtiger te maken. En dat vergroot uiteindelijk de kans maakt dat je applicatie goed blijft functioneren, ook als er onverwachte storingen optreden.

Het fenomeen is ooit bedacht door Netflix, die hiermee wilde testen in hoeverre de applicatie-infrastructuur tegen een stootje zou kunnen. Inmiddels is het idee breed omarmd.

Chaos engineering kan cruciaal zijn voor bedrijfskritische applicaties, waarbij uitval tot grote problemen kan leiden. Steeds meer bedrijven kiezen ervoor om bedrijfskritische applicaties te hosten in de een public cloud-omgeving, maar geven daarmee ook een deel van de controle en security uit handen. Met chaos engineering kun je testen of deze bedrijfskritische applicaties bestand zijn tegen onverwachte gebeurtenissen.

De vier stappen van een chaosexperiment

Een manier om chaos engineering in de praktijk toe te passen, is het uitvoeren van een chaosexperiment. In zo’n experiment doorloop je vier stappen:

  1. Definieer je het doel van het experiment, door een hypothese te definiëren op basis van een risicoanalyse. Bijvoorbeeld: je wil testen wat er gebeurt als een netwerkverbinding wordt verstoord. De hypothese zou dan zijn ‘het systeem heeft een fall-back en gebruikers ervaren geen overlast van de verstoring van deze netwerkverbinding’.
  2. Vervolgens voer je het experiment uit; denk aan het inrichten van de tooling en de daadwerkelijke uitvoer (in ons voorbeeld: het opzettelijk afsluiten van de internetverbinding).
  3. Tijdens de analyse-fase bekijk je hoe het systeem zich gedragen heeft en of dit in lijn is met de hypothese.
  4. In de laatste stap identificeer je of er verbeteringen nodig zijn. Als dat zo is, dan ga je terug naar stap 1 om het proces opnieuw te doorlopen.

Microsoft Azure Chaos Studio

Voor applicaties die draaien op Microsoft Azure, kan gebruik worden gemaakt van Microsoft Azure Chaos Studio. Dit is een platform dat specifiek is ontwikkeld om op eenvoudige wijze chaosexperimenten uit te voeren op je Azure-resources. Het platform is ooit ontwikkeld voor Microsoft-ontwikkelaars en is nu ook beschikbaar gesteld voor applicaties die op Azure draaien. Info Support gebruikt de mogelijkheden van Azure Chaos Studio voor het testen en verbeteren van de betrouwbaarheid van je applicaties.

Azure Chaos Studio biedt een uitgebreide toolkit om meerdere soorten chaosexperimenten uit te voeren. Je kunt verschillende soort fouten simuleren; denk aan het uitvallen van databases, caching-lagen, en netwerkverbindingen. Hierdoor kun je zwakke plekken opsporen, je applicatie robuuster maken en beschermen tegen onverwachte storingen.

Verantwoord testen in productieomgevingen

Waar en wanneer kun je chaosexperimenten het beste uitvoeren met Azure Chaos Studio? Voordat je overgaat naar productie, is het verstandig om te beginnen in een acceptatieomgeving.

In een acceptatieomgeving kun je namelijk chaosexperimenten uitvoeren zonder dat je daar in productie last van hebt. Pas als de experimenten in de acceptatieomgeving goed verlopen, kun je overwegen om ze ook in productie te zetten.

Natuurlijk zit er wel een bepaald risico aan het uitvoeren van chaosexperimenten in de productie-omgeving, maar het kan ook heel zinvol zijn. Immers: alleen in een productieomgeving weet je zeker of je applicatie zich in de praktijk goed staande kan houden bij onverwachte verstoringen. Zorg wel voor de nodige voorzichtigheid en monitoring.

Het is altijd verstandig om met ontwikkelaars en beheerders te overleggen over een verantwoorde aanpak. Azure Chaos Studio biedt de tools, maar de precieze aanpak kun je beter afstemmen op risico’s en prioriteiten binnen je organisatie.

Over het algemeen geldt: zet chaos engineering vooral in op de cruciale onderdelen van je applicatie en houd de duur redelijk beperkt. Zo kun je met een relatief klein budget al veel inzicht krijgen in de chaosbestendigheid van je systeem.

Chaos engineering zinvol bij de juiste focus

Azure Chaos Studio is een krachtige dienst om de betrouwbaarheid en veerkracht van je applicaties te testen. Door proactief chaos in te bouwen, kun je cruciale zwakke plekken identificeren voordat ze voor echte problemen zorgen.

Chaos engineering is geen wondermiddel, maar wel een zinvolle aanvulling op bestaande vormen van testen. Door de juiste balans te vinden tussen experimenteren en steady-state operaties, kan Azure Chaos Studio je helpen applicaties te bouwen die klaar zijn voor de onverwachte turbulentie in de echte wereld.

Want, zoals dat gaat met onverwachte gebeurtenissen: je weet dat ze mogelijk gaan komen, maar niet wanneer of waar. En dan kun je maar beter voorbereid zijn!