Använd verktyg för kaosteknik för att kontrollera produktionstillförlitligheten

By rik

Låt oss undersöka hur du kan säkerställa en tillförlitlig produktion med hjälp av verktyg för kaosteknik.

Kaosteknik är en metod där du experimenterar med ditt system eller din applikation för att identifiera eventuella brister och kapacitetsrelaterade fel. Det handlar om problem som du inte förutsett under utvecklingen. Genom att medvetet införa fel i systemet kan du påvisa dess svagheter och göra korrigeringar för att stärka systemets och applikationens motståndskraft.

Många välkända företag, som Netflix, LinkedIn och Facebook, använder kaosteknik för att få en bättre förståelse för sina mikrotjänsters arkitektur och distribuerade system. Detta hjälper dem att upptäcka problem snabbare än genom användarfeedback och att vidta åtgärder. På så vis kan dessa organisationer hantera miljontals användare, öka sin produktivitet och spara betydande summor pengar 🤑.

Fördelar med kaosteknik:

  • Minimera inkomstbortfall genom att upptäcka kritiska problem
  • Reducerade system- eller applikationsfel
  • Förbättrad användarupplevelse med färre avbrott och hög tillgänglighet
  • Ökad systemförståelse och förtroende

Hur trygg är du med din produktions tillförlitlighet? Är den verkligen katastrofsäker?

Låt oss ta reda på det med hjälp av följande populära verktyg för kaostestning.

Chaos Mesh

Chaos Mesh är en lösning för hantering av kaosteknik som injicerar fel i alla lager av ett Kubernetes-system, inklusive poddar, nätverk, system I/O och kärnan. Chaos Mesh kan automatiskt avsluta Kubernetes-poddar och simulera latenser. Det kan störa kommunikationen mellan poddar och simulera läs-/skrivfel. Du kan schemalägga experiment och ange deras omfattning. Dessa experiment specificeras med hjälp av YAML-filer.

Chaos Mesh har en instrumentpanel för att visualisera experimentanalyser. Det körs ovanpå Kubernetes och stöder de flesta molnplattformar. Det är ett projekt med öppen källkod som nyligen accepterades som ett CNCF-sandlådeprojekt. Genom att använda principerna för kaosteknik kan du integrera Chaos Mesh i ditt DevOps-arbetsflöde för att skapa robusta applikationer.

Funktioner hos Chaos Mesh:

  • Enkel distribution på Kubernetes-kluster utan ändringar i distributionslogiken
  • Inga specifika beroenden krävs för distribution
  • Definierar kaosexperiment med CustomResourceDefinitions (CRD)
  • Tillhandahåller en instrumentpanel för att övervaka alla experiment

Chaos ToolKit är ett användarvänligt verktyg med öppen källkod för att automatisera kaosteknikexperiment.

Du integrerar Chaos ToolKit i ditt system via drivrutiner eller plugins som stödjer bland annat AWS, Google Cloud, Slack och Prometheus.

Funktioner hos Chaos ToolKit:

  • Tillhandahåller ett deklarativt Open API för att skapa kaosexperiment oberoende av leverantör eller teknik
  • Kan enkelt integreras i CICD-pipelines för automatisering
  • Erbjuder kommersiell support och företagssupport även genom ChaosIQ

ChaosKube

Som namnet antyder är detta verktyg avsett för Kubernetes.

Chaoskube är ett verktyg med öppen källkod som slumpmässigt avslutar poddar i Kubernetes-klustret med jämna mellanrum. Detta hjälper dig att förstå hur ditt system reagerar vid fel i en pod. Som standard avslutas en pod i ett godtyckligt namnområde var tionde minut. Du kan filtrera målpoddarna i Chaoskube med hjälp av namnområden, etiketter och anteckningar. Det kan enkelt installeras via Helm.

Chaos Monkey

Chaos Monkey är ett verktyg som används för att testa molnsystemens motståndskraft genom att medvetet orsaka fel och studera reaktionen. Netflix utvecklade verktyget för att testa AWS-infrastrukturens motståndskraft och förmåga att återställa sig. Det kallas Chaos Monkey eftersom det skapar störningar som en vild apa för att undersöka eventuella fel.

Chaos Monkey var också ursprunget till den nya ingenjörspraktiken kaosteknik. Det grundas på principen att det är bättre att uppleva flera mindre fel än ett allvarligt fel utan förvarning.

Funktioner hos Chaos Monkey:

  • Förbereder dig för slumpmässiga instansfel
  • Uppmuntar redundans vid oväntade fel
  • Använder Spinnaker för kompatibilitet med olika moln
  • Erbjuder konfigurerbara scheman för att simulera fel
  • Integrerat med govendor för att lägga till nya beroenden

Simmy

Simmy är ett verktyg för felinjektion som är integrerat med Polly-projektet för .NET. Det låter dig skapa policyer för kaosinjektion genom Polly, där du kör din kod. Det erbjuder olika typer av policyer, som undantagspolicyer för att injicera undantag i systemet och beteendepolicyer för att införa nytt beteende. Dessa policyer är utformade för att slumpmässigt injicera fel.

Funktioner hos Simmy:

  • Tillhandahåller Monkey-policyer eller Chaos-policyer för att skapa kaos
  • Gör det enkelt att testa beroendefel
  • Hjälper till med snabb återgång till arbetsläge och styrning av felområdet.
  • Är redo för produktion
  • Kan även definiera fel baserat på externa faktorer (t.ex. fel på grund av global konfiguration)

Pystol

Pystol är ett verktyg som används för att injicera fel i molnbaserade miljöer. Det observerar händelser i ETCD via Kubernetes-operatörer. När en felinjektionsåtgärd utförs skapar operatörerna poddar och kör Ansible-samlingar. På så sätt behöver utvecklare inte skapa egna åtgärder.

Pystol erbjuder färdiga åtgärder för att testa systemet. Om en utvecklare vill skapa en ny åtgärd kan det göras med GoLang och Python.

Det tillhandahåller en instrumentpanel för kontinuerlig integration med en sammanfattning av alla jobb. Du kan köra Pystol lokalt eller distribuera det i en container med hjälp av dess Docker-avbildning. Pystol erbjuder två gränssnitt: ett webbgränssnitt och ett CLI-gränssnitt. Webbgränssnittet är det mest användarvänliga.

Muxy

Muxy är en proxy som testar motståndskraft och feltolerans i distribuerade system. Den kan manipulera transportnivån (lager 4), TCP-sessionsnivån (lager 5) och HTTP-protokollnivån (lager 7).

Funktioner hos Muxy:

  • Modulär arkitektur och enkel utökning
  • Har en officiell Docker-container
  • Enkel att installera, inga beroenden krävs.
  • Idealisk för kontinuerlig testning av motståndskraft
  • Simulerar nätverksproblem för distribuerade system och mobila enheter

Pumba

Pumba är ett kommandoradsverktyg som utför kaostestning för Docker-containrar. Med Pumba kan du medvetet krascha Docker-containrar för att observera systemets reaktion. Du kan även stresstesta containerresurser som CPU, minne, filsystem och input/output.

Du kan också köra Pumba i ett Kubernetes-kluster. Du måste använda DaemonSets för att distribuera Pumba på Kubernetes-noder. Du kan använda flera Pumba-containrar för att köra flera Pumba-kommandon i samma DaemonSet.

ChaosBlade

ChaosBlade är ett verktyg med öppen källkod från Alibaba för att injicera experiment i system. Det testar alla fel som Alibaba har mött under de senaste tio åren och tillämpar bästa praxis för att undvika dem. Det följer kaostekniska principer för att testa feltoleransen i distribuerade system.

Funktioner hos ChaosBlade:

  • Erbjuder experimentella scenarier för flera resurser som CPU, nätverk, minne och disk
  • Erbjuder experimentella scenarier för noder, nätverk och poddar på Kubernetes-plattformen
  • Tillhandahåller användarvänliga CLI-kommandon för att utföra experiment

Litmus

Litmus följer principerna för molnbaserad kaosteknik. Litmus uppdrag är att tillhandahålla ett komplett ramverk för att upptäcka svagheter i dina Kubernetes-system och applikationer som körs på Kubernetes.

Det har en kaosoperatör och CRD:er (CustomResourceDefinitions) vilket ger möjlighet till plug-and-play. Genom att placera din kaoslogik i en Docker-avbildning och använda Litmus-ramverket kan du orkestrera experimenten med hjälp av CRD:erna.

Funktioner hos Litmus:

  • Hjälper ingenjörer inom Site Reliability och utvecklare att hitta svagheter i Kubernetes-systemet
  • Erbjuder färdiga generiska experiment
  • Tillhandahåller Chaos API för att hantera arbetsflöden för kaos
  • Litmus SDK stöder Go, Python och Ansible för att skapa egna experiment.

Gremlin

Gremlin hjälper ingenjörer att bygga mer robust programvara. Det erbjuder en plattform för att utföra kaostekniska experiment på ett säkert och enkelt sätt.

Du kan injicera fel i värdar eller containrar med Gremlin oavsett var de finns, vare sig det är i ett offentligt moln eller i ditt eget datacenter.

Gremlin har följande funktioner:

  • Installerar lättviktsagenter på värdar eller containrar för att injicera fel
  • Erbjuder 10+ olika infrastrukturattacklägen
  • State Gremlins kan manipulera systemtiden, stänga av eller starta om värdar och avsluta processer.
  • Network Gremlins kan injicera latens, orsaka paketförlust eller släppa trafik.
  • Gremlins Alfi-biblioteksattacker kan konfigureras, startas och stoppas via webbappen, API eller CLI.
  • Ger dig möjlighet att rikta in dig exakt på det område som ska påverkas.
  • Låter dig stoppa alla attacker och återställa systemet till ett stabilt tillstånd

Steadybit

Steadybit strävar efter att proaktivt minimera stilleståndstiden och ge insyn i systemproblem. Du kan köra det här verktyget lokalt i din infrastruktur eller som en tjänst i molnet (SaaS).

För att använda Steadybit definierar du en situation, simulerar experiment, utför de simulerade experimenten i produktion och automatiserar alla experiment. Det kör intelligenta agenter i systemet för att upptäcka potentiella problem och svagheter. Det integreras enkelt med flera system.

Sammanfattning

Var modig och tillämpa principerna för kaosteknik och testa din produktion med hjälp av de verktyg som nämns ovan. Dessa verktyg hjälper dig att upptäcka många oidentifierade svagheter i ditt system och gör det mer motståndskraftigt.