Hur “Chaos Engineering” hjälper dig att undvika oplanerad stilleståndstid

asharkyu/Shutterstock.com

Kaoteknik är ett tillvägagångssätt för testning av programvara för feltolerans som avsiktligt framkallar fel i live-distributioner. Den innehåller ett slumpmässigt inslag för att efterlikna oförutsägbarheten i de flesta verkliga störningar.

Idén att lägga till kaos i ett system krediteras i allmänhet Netflix. 2011 publicerade företaget Chaos Monkey, ett verktyg som det byggde för att inaktivera delar av sin produktionsinfrastruktur. Genom att framkalla slumpmässiga fel i övervakade miljöer, fann Netflix att det kunde upptäcka dolda problem som gick obemärkt förbi under vanliga tester.

Kaoteknik ger en immunresponseffekt. Det liknar hur vi vaccinerar friska människor. Du introducerar målmedvetet ett hot som potentiellt kan orsaka korta men observerbara problem för att utveckla starkare långsiktigt motstånd.

Building Resilience

Det & # 8217; Det är säkert att anta att alla tillräckligt stora system innehåller buggar som du inte känner till. Trots alla dina automatiserade tester och den dagliga användningen i verkligheten kan du inte fånga allt. Vissa problem dyker bara upp i mycket specifika scenarier, till exempel förlust av anslutning till en tredje parts tjänst.

Chaos engineering accepterar att oförutsedda driftsfrågor alltid kommer att vara ett faktum, även i förment vattentäta produktionsmiljöer. Medan många organisationer tar en & # 8220; vänta och se & # 8221; tillvägagångssätt, spela whack-a-mole när riktiga rapporter kommer in, fungerar kaoteknik på principen att ett kort avbrott som du åberopar alltid är bättre än en som kunden ser först.

Annons

Att bryta saker med avsikt ger dig ett sätt att bestämma ditt systems övergripande motståndskraft. Vad händer om databasen går ner? Vad sägs om ett avbrott i din tredje parts e-posttjänst? Kaosteknikens största styrka är dess förmåga att reproducera händelser som enhetstester och användning i verkligheten vanligtvis inte täcker.

Kaotestverktyg körs ofta mot verkliga utplaceringar för att eliminera avvikelser mellan utvecklings- och produktionsmiljöer. Du behöver dock inte tillämpa denna stora risk: Så länge du är säker på att du kan replikera din infrastruktur exakt kan du använda tekniken mot en sandbox-iscenesättningsmiljö. = “lägga till-kaos-till-dina-system”> Lägga till kaos i dina system

Du har flera alternativ om du vill lägga till lite kaos i din infrastruktur. Automatiserade verktyg byggda för detta ändamål ger en utgångspunkt men kan vara knepiga att integrera i din egen infrastruktur. Du måste normalt integrera med plattformar för virtuell dator eller container så att verktyget kan interagera med dina egna instanser.

När det gäller Chaos Monkey måste du använda Spinnaker, Netflix kontinuerliga leveransplattform. Även om det har bred kompatibilitet med populära offentliga molnleverantörer, är det också ett annat beroende som du lägger till i din stack.

Om du använder Kubernetes tar kube-monkey de ursprungliga Netflix-principerna och paketerar dem för användning i ditt kluster. Det fungerar på opt-in-basis, så Kubernetes-resurser med kube-monkey/aktiverad etikett kommer att vara berättigade till slumpmässig avslutning.

Pumba erbjuder liknande funktioner för vanliga Docker-behållare. Det kan orsaka containerkrascher, stressresursersättningar som CPU och minne och orsaka nätfel.

Annons

Ett verktyg som specifikt riktar sig till nätverksfel är Shopify's Toxiproxy. Detta ger en TCP-proxy som simulerar ett brett spektrum av nätverksförhållanden. Du kan filtrera applikationens trafik genom Toxiproxy för att se hur systemet fungerar med svår latens eller minskad bandbredd.

För avancerad kontroll är VMWares Mangle en & # 8220; kaosteknik orkestrator & # 8221; som riktar sig till flera olika distributionsmekanismer. Det fungerar med Kubernetes, Docker, VMware vCenter och generiska SSH-anslutningar. Med Mangle kan du definiera anpassade fel för applikations- och infrastrukturkomponenter. Applikationsfel bör påverka en enda tjänst. Infrastrukturfel riktar sig till delade komponenter som kan ta bort flera tjänster.

Även om kaoteknik oftast förknippas med backend-utveckling och DevOps, växer intresset bland frontendingenjörer också. React Chaos är ett bibliotek som slänger slumpmässiga fel från React-komponenter, så att du kan identifiera fläckiga användargränssnitt som kan krascha hela din app.

Designa din egen Kaosexperiment

Om du inte lyckas använda ett kaosverktyg med öppen källkod, utforma dina egna experiment istället. Gör en lista över antagandena i din applikations miljö. Identifiera kopplingarna mellan tjänster och tänk på vad som skulle hända om en skulle avbryta.

Du måste sedan testa din hypotes. Bryt systemet och observera konsekvenserna. Bestäm sedan om effekten var acceptabel. Kraschade appen och visade ett stackspår till användaren? Eller visade den en avbrottstatussida och skickade stackspårningen via e-post till din jourpersonal?

Det är viktigt att hålla varje test litet och fokuserat. Detta begränsar effekterna vid produktionsavbrott och hjälper dig att vara säker på att problemet uppstår från det testade antagandet, inte från en annan del av systemet.

Annons

Se alltid till att du har ett tydligt återställningsförfarande innan du gör ett kaosexperiment manuellt. Att höja ett provocerat avbrott till en levande, oplanerad är det sista du vill ha. Om du avslutar en tjänst, var uppmärksam på den tid du behöver för att få igång den igen. Det kan påverka din ansökan vid längre avbrott: Om du hoppar av en e-postdistributionstjänst kan det finnas en eftersläpning att arbeta igenom när den kommer tillbaka online. Dessa aspekter måste införlivas i din handlingsplan innan du börjar arbeta.

När ditt experiment har slutförts kan du behöva uppdatera ditt system innan du kör testet igen. Att testa din fix förbättrar faktiskt situationen och låter dig vara säker på att ditt system nu är motståndskraftigt mot det specifika scenariot.

Här är en sammanfattning av kaosexperimentprocessen:

  1. Utveckla en hypotes: & # 8220; Systemet är motståndskraftigt mot ökad nätverkslatens. & # 8221;
  2. Utforma ett fokuserat experiment: & # 8220; Vi kommer artificiellt att öka latensen till 500 ms på 70% av förfrågningarna. & # 8221; Se till att du har en tydlig återställnings- och återställningsstrategi.
  3. Kör experimentet: Observera påverkan på din ansökan. Återställ skadliga förändringar i produktionsmiljöerna så snart som möjligt.
  4. Analysera resultaten: Om du bestämmer dig för att ditt system inte var motståndskraftigt, implementera förbättringar och upprepa processen.

Den icke-tekniska sidan av Chaos Engineering

Kaosteknik ses normalt som en teknisk uppgift för utvecklings- och driftsteam, trots allt & # 8220; ingenjör & # 8221; är i namnet. Förutom muttrar och bultar i nätverk och tjänster är det viktigt att också titta på den mänskliga sidan. Det är lätt att tro att ditt system bara är beroende av en databas, några app-servrar och ett stabilt nätverk. Det är vanligtvis inte fallet.

Tänk på hur ditt system skulle svara om teammedlemmarna inte var tillgängliga. Är kunskap lätt tillgänglig om en administratör behöver gå tillbaka oväntat? Särskilt i mindre organisationer är det vanligt att ett & # 8220; team & # 8221; att vara en ensam person. Vad händer om din nätverkskille är sjuk under ett strömavbrott?

På samma sätt som du testar de tekniska aspekterna genom att tappa tjänsterna kan du också förutse mänskliga scenarier. Försök medvetet att utesluta nyckelpersoner när du repeterar ett avbrott. Gick resten av teamet att återställa tjänsten till ett acceptabelt tillstånd? Om de inte gjorde det kan du dra nytta av att dokumentera mer av systemet och dess beroenden.

Sammanfattning

Termen & # 8220; kaoteknik & # 8221; hänvisar till praxis att medvetet bryta saker i produktionen för att avslöja tidigare dolda problem. Även om tillvägagångssättet kan verka skrämmande till att börja med, kan dedikerade verktyg som Chaos Monkey hjälpa dig att komma igång med minimal risk.

Annons

Att lägga till kaos är en användbar teknik, eftersom det avslöjar både övergående och systemproblem. Du kanske upptäcker att maximal minnesanvändning orsakar knock-on-effekter över din infrastruktur, men att ökad nätverkslatens har en sporadisk effekt på specifika delar av din stack.

Effektiv användning av kaoteknik kan hjälpa dig att hitta fel snabbare innan dina kunder märker dem. Det hjälper dig att bygga upp motståndskraft i ditt system genom att uppmuntra till föregripande av problem. De flesta team behandlar fortfarande problem reaktivt, vilket leder till en ökad cykeltid som hindrar effektiviteten.

Kaosteknik behandlas bäst som ett tänkesätt snarare än som en specifik procedur eller mjukvaruprodukt. Om du erkänner att system tenderar mot kaos kommer du naturligtvis att börja baka stöd för mer & # 8220; vad-om & # 8221; scenarier i din kod.

Det är alltid värt att tänka på det & # 8220; omöjliga & # 8221; händelser, som ett datacenteravbrott eller allvarlig trängsel i nätverket. I verkligheten är de inte omöjliga, bara extremt sällsynta. När de slår till är det troligtvis de mest destruktiva händelserna som ditt system stöter på, såvida inte din infrastruktur är beredd att hantera dem med reservrutiner.


Posted

in

by

Tags: