Sikre produksjonen: 10+ Kaos-verktøy for pålitelig testing

La oss utforske hvordan du kan sikre driftssikkerhet i produksjon ved hjelp av verktøy for kaosteknikk.

Kaosteknikk er en tilnærming der man utfører eksperimenter på systemet eller applikasjonen for å avdekke skjulte sårbarheter og kapasitetsbegrensninger. Dette er feil som kanskje ikke er forutsett under utviklingsfasen. Ved å bevisst introdusere feil i systemet, kan man identifisere svakheter og implementere nødvendige forbedringer for å gjøre systemet og applikasjonen mer robust.

Mange ledende selskaper, som Netflix, LinkedIn og Facebook, anvender kaosteknikk for å få en dypere forståelse av sin mikrotjenestearkitektur og distribuerte systemer. Dette gir dem muligheten til å oppdage problemer raskere enn gjennom tilbakemeldinger fra brukere, og dermed iverksette tiltak for å korrigere dem. Dette er en av grunnene til at disse organisasjonene kan betjene millioner av brukere, øke sin produktivitet og spare betydelige summer.

Fordeler med kaosteknikk:

  • Begrensning av inntektstap ved å identifisere kritiske problemer.
  • Reduksjon av feil i systemer og applikasjoner.
  • Forbedret brukeropplevelse med færre avbrudd og høyere tilgjengelighet.
  • Økt kunnskap om systemet og dermed økt selvtillit.

Hvor sikker er du på din produksjonsdriftssikkerhet? Er den virkelig motstandsdyktig mot katastrofer?

La oss utforske dette ved hjelp av noen populære verktøy for kaostesting.

Chaos Mesh

Chaos Mesh er en løsning for kaosteknisk administrasjon som injiserer feil i alle lag av et Kubernetes-system. Dette inkluderer pods, nettverk, system-I/O og kjernen. Chaos Mesh kan automatisk avbryte Kubernetes-pods og simulere ventetider. Det kan forstyrre pod-til-pod kommunikasjon og simulere lese-/skrivefeil. Det gir også muligheten til å planlegge eksperimenter og definere deres omfang ved hjelp av YAML-filer.

Chaos Mesh tilbyr et dashbord for å analysere resultater av eksperimenter. Det kjører på toppen av Kubernetes og støtter de fleste skyplattformer. Det er et åpen kildekode-prosjekt og ble nylig akseptert som et CNCF-sandkasseprosjekt. Ved å implementere prinsipper for kaosteknikk, kan Chaos Mesh integreres i DevOps-arbeidsflyten for å utvikle mer motstandsdyktige applikasjoner.

Nøkkelfunksjoner i Chaos Mesh:

  • Enkel distribusjon på Kubernetes-klynger uten endringer i distribusjonslogikken.
  • Ingen unike avhengigheter er nødvendig for distribusjon.
  • Definerer kaosobjekter ved hjelp av CustomResourceDefinitions (CRD).
  • Tilbyr et dashbord for sporing av alle eksperimenter.

Chaos Toolkit er et åpen kildekode-verktøy for automatisering av kaostekniske eksperimenter.

Chaos Toolkit integreres med systemet via drivere eller plugins som støtter AWS, Google Cloud, Slack, Prometheus, og flere.

Nøkkelfunksjoner i Chaos Toolkit:

  • Tilbyr et deklarativt Open API for å skape kaoseksperimenter, uavhengig av leverandør eller teknologi.
  • Kan enkelt integreres i CICD-rørledninger for automatisering.
  • Tilbyr kommersiell og bedriftsstøtte via ChaosIQ.

ChaosKube

Som navnet antyder, er Chaoskube et verktøy som fokuserer på Kubernetes. Dette er et åpen kildekode-verktøy som med jevne mellomrom avbryter tilfeldige pods i Kubernetes-klyngen. Det hjelper deg å observere hvordan systemet reagerer når en pod mislykkes. Som standard avbryter det en pod i et vilkårlig navnerom hvert tiende minutt. Du kan filtrere podene Chaoskube retter seg mot, ved å bruke navnerom, etiketter, annotasjoner osv. Det er enkelt å installere ved hjelp av Chaoskube.

Chaos Monkey

Chaos Monkey er et verktøy for å sjekke motstandskraften i skysystemer ved bevisst å generere feil. Dette gir innsikt i hvordan systemene responderer. Netflix utviklet verktøyet for å teste motstandskraften og gjenopprettingsevnen til AWS-infrastrukturen. Navnet Chaos Monkey kommer fra måten det opererer; det skaper kaos som en vill ape for å avdekke feil.

Chaos Monkey var også med på å etablere den nye ingeniørpraksisen kjent som kaosteknikk. Det ble utviklet med utgangspunkt i at det er bedre å oppleve feil jevnlig for å unngå en større feil uventet.

Nøkkelfunksjoner i Chaos Monkey:

  • Hjelper med å forberede systemet på uforutsette feil.
  • Fremmer redundans for å håndtere uventede feil.
  • Bruker Spinnaker for å aktivere kompatibilitet på tvers av skyer.
  • Tilbyr konfigurerbar planlegging for simulering av feil.
  • Integrert med govendor for å legge til nye avhengigheter.

Simmy

Simmy er et verktøy for feilinjeksjon som er utviklet for å integreres med Polly resilience-prosjektet for .NET. Det gir deg mulighet for å definere retningslinjer for kaosinjeksjon via Polly. Dette lar deg utføre kode med bevisst genererte feil. Simmy tilbyr forskjellige typer policyer, som for eksempel unntakspolicyer for å injisere unntak i systemet og atferdspolicyer for å introdusere ny atferd. Disse er utformet for å injisere atferden på en tilfeldig måte.

Nøkkelfunksjoner i Simmy:

  • Tilbyr Monkey-policyer eller Chaos-policyer for å injisere kaos.
  • Gjør det enkelt å teste feil i eventuelle avhengigheter.
  • Hjelper med å raskt gjenopprette til normal tilstand og kontrollere virkningsområdet.
  • Klar for bruk i produksjon.
  • Kan definere feil basert på eksterne faktorer (for eksempel feil på grunn av global konfigurasjon).

Pystol

Pystol er et verktøy for å injisere feil i skybaserte miljøer. Det monitorerer hendelser i ETCD gjennom Kubernetes-operatører. Når en feilinjeksjonshandling utføres, genererer operatørene pods og kjører Ansible-samlinger. Utviklere trenger derfor ikke skrive egne handlinger.

Pystol tilbyr ferdige handlinger for systemtesting. Hvis en utvikler ønsker å lage en ny handling, kan det gjøres ved å bruke GoLang og Python.

Det gir også et dashbord for kontinuerlig integrasjon med en oversikt over alle operasjoner. Pystol kan kjøres lokalt eller distribueres i en container ved hjelp av et Docker-bilde. Pystol har to grensesnitt; et web-grensesnitt og et CLI-grensesnitt. Web-grensesnittet er ofte et foretrukket alternativ.

Muxy

Muxy er en proxy som brukes til å teste motstandskraft og feiltoleranse i distribuerte systemer. Den kan manipulere transportnivå (lag 4), TCP-sesjonsnivå (lag 5) og HTTP-protokollnivå (lag 7).

Nøkkelfunksjoner i Muxy:

  • Modulær arkitektur og lett utvidbar.
  • Har en offisiell Docker-container.
  • Enkel installasjon, ingen avhengigheter kreves.
  • Ideell for kontinuerlig testing av motstandsdyktighet.
  • Simulerer problemer med nettverkstilkobling for distribuerte systemer og mobile enheter.

Pumba

Pumba er et kommandolinjeverktøy for å utføre kaostesting av Docker-containere. Med Pumba kan du bevisst avbryte applikasjonens Docker-containere for å observere hvordan systemet reagerer. Du kan også utføre stresstesting av containerressurser som CPU, minne, filsystem og I/O.

Pumba kan også kjøres på en Kubernetes-klynge. Da må du bruke DaemonSets for å distribuere Pumba på Kubernetes-noder. Du kan bruke flere Pumba-containere for å kjøre flere Pumba-kommandoer i samme DaemonSet.

ChaosBlade

ChaosBlade er et åpen kildekode-verktøy fra Alibaba for å injisere eksperimenter i systemer. Det tester alle feil Alibaba har møtt de siste ti årene, og bruker beste praksis for å unngå disse. Det anvender kaostekniske prinsipper for å undersøke feiltoleransen i distribuerte systemer.

Nøkkelfunksjoner i ChaosBlade:

  • Tilbyr eksperimentelle scenarier for ressurser som CPU, nettverk, minne, disk, osv.
  • Tilbyr eksperimentelle scenarier for noder, nettverk og pods på Kubernetes-plattformen.
  • Tilbyr brukervennlige CLI-kommandoer for å utføre eksperimenter.

Litmus

Litmus er bygget på prinsipper for skybasert kaosteknikk. Verktøyet gir et komplett rammeverk for å oppdage svakheter i Kubernetes-systemer og applikasjoner som kjører på Kubernetes.

Det består av en kaos-operatør og CRD-er (CustomResourceDefinitions) som muliggjør plug-and-play-funksjonalitet. Du plasserer din egen kaoslogikk i et Docker-bilde og lar Litmus orkestrere det ved hjelp av CRD-er.

Nøkkelfunksjoner i Litmus:

  • Hjelper ingeniører innen Site Reliability og utviklere med å finne svakheter i Kubernetes-systemet.
  • Tilbyr ferdige generiske eksperimenter.
  • Tilbyr et kaos-API for administrering av kaos-arbeidsflyt.
  • Litmus SDK støtter Go, Python og Ansible for å lage egne eksperimenter.

Gremlin

Gremlin hjelper ingeniører med å utvikle mer robust programvare. Det gir en plattform for å utføre kaostekniske eksperimenter på en trygg, sikker og enkel måte.

Du kan bevisst injisere feil i verter eller containere uavhengig av hvor de er, enten det er i den offentlige skyen eller ditt eget datasenter.

Gremlin tilbyr:

  • En lettvektsagent som installeres på verter eller containere for å injisere feil.
  • Mer enn ti forskjellige infrastrukturangrepsmoduser.
  • Statusgremlins lar deg manipulere systemtiden, slå av eller starte verter på nytt, og stoppe prosesser.
  • Nettverksgremlins kan injisere latens, pakketap eller blokkere trafikk.
  • Gremlins Alfi-biblioteksangrep kan konfigureres, startes og stoppes via webappen, API eller CLI.
  • Mulighet for å nøyaktig definere virkningsområdet for angrepet.
  • Mulighet for å stoppe alle angrep og tilbakestille systemet til en stabil tilstand.

Steadybit

Steadybit er utviklet for å proaktivt redusere nedetid og gi innsikt i systemproblemer. Verktøyet kan kjøres lokalt på infrastrukturen eller som en skytjeneste (SaaS).

For å bruke Steadybit definerer du en situasjon, simulerer eksperimentene, utfører de simulerte eksperimentene i produksjon og automatiserer alle eksperimentene. Verktøyet kjører intelligente agenter på systemet ditt for å avdekke potensielle problemer og svakheter. Det integreres også enkelt med flere systemer.

Konklusjon

Ta skrittet og vær modig nok til å implementere kaostekniske prinsipper og teste produksjonen din med de nevnte verktøyene. Disse verktøyene vil hjelpe deg med å identifisere svakheter i systemet ditt, slik at du kan gjøre det mer robust.