Bruk Chaos Engineering-verktøy for å sjekke produksjonspålitelighet

La oss finne ut hvordan du kan holde produksjonen pålitelig ved hjelp av Chaos Engineering-verktøy.

Kaosteknikk er en disiplin der du eksperimenterer med systemet eller applikasjonen for å avsløre svakhetene og kapasitetssvikten. Dette er noe du ikke trodde kunne skje mens du opprettet det. Så du vil føre til at noen feil med vilje på systemet ditt viser svakhetene for å gjøre rettelsene og gjøre systemet og applikasjonen mer robust.

Mange populære organisasjoner som Netflix, LinkedIn og Facebook utfører kaosteknikk for å bedre forstå deres mikrotjenestearkitektur og distribuerte systemer. Det hjelper med å finne nye problemer raskere enn reelle brukerklager og iverksette nødvendige tiltak for å rette dem. Det er slik disse organisasjonene kan betjene millioner av brukere, øke produktiviteten deres og spare millioner av dollar 🤑.

Fordeler med Chaos Engineering:

  • Kontroller tap på inntekter ved å finne kritiske problemer
  • Reduksjon i system- eller applikasjonsfeil
  • Bedre brukeropplevelse med mindre forstyrrelser og høy tjenestetilgjengelighet
  • Det hjelper deg å lære om systemet og få selvtillit.

Hvor trygg er du på din produksjonspålitelighet? Er den virkelig katastrofesikker?

La oss finne ut av det ved hjelp av følgende populære kaostestingsverktøy.

Chaos Mesh

Chaos Mesh er en kaos-teknisk administrasjonsløsning som injiserer feil i hvert lag av et Kubernetes-system. Dette inkluderer pods, nettverket, system I/O og kjernen. Chaos Mesh kan automatisk drepe Kubernetes pods og simulere ventetider. Det kan forstyrre pod-to-pod-kommunikasjon og simulere lese-/skrivefeil. Den kan planlegge regler for eksperimentene og definere omfanget. Disse eksperimentene er spesifisert ved hjelp av YAML-filer.

Chaos Mesh har et dashbord for å se analyser av eksperimenter. Den kjører på toppen av Kubernetes og støtter mesteparten av skyplattformen. Det er åpen kildekode og ble nylig akseptert som et CNCF-sandkasseprosjekt. Ved å bruke kaosingeniørprinsipper kan du legge til Chaos Mesh i DevOps-arbeidsflyten din for å bygge spenstige applikasjoner.

Chaos Engineering-funksjoner:

  • Enkelt distribuerbart på Kubernetes-klynger uten endringer i distribusjonslogikken
  • Ingen unike avhengigheter kreves for distribusjon
  • Definerer kaosobjekter ved hjelp av CustomResourceDefinitions (CRD)
  • Gir et dashbord for å spore alle eksperimentene
  Sett selektive apper i stille modus med AppSilence [Jailbreak]

Chaos ToolKit er et åpen kildekode og enkelt verktøy for Chaos Engineering Experiment Automation.

Du integrerer Chaos ToolKit med systemet ditt ved å bruke et sett med drivere eller plugins som støtter AWS, Google Cloud, Slack, Prometheus, etc.

Chaos ToolKit-funksjoner:

  • Gir deklarativ Open API for å lage kaoseksperimenter uavhengig av en leverandør eller teknologi
  • Kan enkelt bygges inn i CICD-rørledninger for automatisering
  • Gir kommersiell og bedriftsstøtte også gjennom KaosIQ

ChaosKube

Som du kan gjette med navnet, er det for Kubernetes.

Chaoskube er et åpen kildekode-kaosverktøy som dreper tilfeldige poder med jevne mellomrom i Kubernetes-klyngen. Det hjelper deg å forstå hvordan systemet ditt vil reagere når poden svikter. Som standard dreper den en pod i et hvilket som helst navneområde hvert 10. minutt. Du kan filtrere målpodene i Chaoskube ved å bruke navneområder, etiketter, merknader osv. Den kan enkelt installeres ved hjelp av Chaoskube.

Kaos Monkey

Kaos Monkey er et verktøy som brukes til å sjekke motstandskraften til skysystemene ved å med vilje skape feil for disse systemene for å forstå deres reaksjon. Netflix opprettet den for å teste AWS-infrastrukturens motstandskraft og gjenopprettingsevne. Den ble kalt Chaos Monkey fordi den skaper ødeleggelse som en vill og væpnet ape for å teste feilene.

Dessuten var det Chaos Monkey, som fødte den nye ingeniørpraksisen Chaos Engineering. Det ble opprettet på prinsippet om at det er bedre å mislykkes gjentatte ganger for å unngå en betydelig feil plutselig.

Chaos Monkey funksjoner:

  • Det hjelper deg å forberede deg på tilfeldige feil.
  • Oppmuntrer til redundans for uventede feil
  • Bruker Spinnaker for å aktivere cross-cloud-kompatibilitet
  • Gir konfigurerbar tidsplan for å simulere feil
  • Integrert med govendor for å legge til nye avhengigheter til kaosapen

Simmy

Simmy er et kaosverktøy for feilinjeksjon som integreres med Polly resilience-prosjektet for .NET. Den lar deg lage retningslinjer for kaosinjeksjon gjennom Polly, hvor du utfører kodene dine. Den tilbyr forskjellige retningslinjer som unntakspolicy for å injisere unntak i systemet, atferdspolicy for å injisere ny atferd osv. Disse policyene er utformet for å injisere atferden tilfeldig.

Simmy funksjoner:

  • Gir Monkey-policyer eller Chaos-policyer for å injisere kaos
  • Enkelt å teste eventuelle avhengighetsfeil
  • Det hjelper å gå tilbake til arbeidsmodellen raskt og kontrollerer sprengningsradiusen.
  • Den er klar for produksjon.
  • Den kan også definere feil basert på eksterne faktorer (for eksempel feil på grunn av global konfigurasjon)
  Hvordan lage en egendefinert mal i PowerPoint

Pystol

Pystol er et verktøy som brukes til å injisere feilinjeksjoner i skybaserte miljøer. Den ser på hendelser i ETCD gjennom Kubernetes-operatører. Når en feilinjeksjonshandling utføres, oppretter operatørene pods og kjører noen Ansible-samlinger. Så utviklere trenger ikke skrive sine egne handlinger for å utføre.

Pystol gir ferdige handlinger for å teste systemet. Likevel, hvis en utvikler ønsker å lage en ny handling, kan det gjøres ved å bruke GoLang og Python.

Det gir et kontinuerlig integrasjonsdashbord for å gi et sammendrag av alle jobboperasjonene. Du kan kjøre Pystol lokalt eller distribuere den i en container ved å bruke docker-bildet. Pystol har to grensesnitt, det ene er Web UI, og det andre er gjennom CLI. Åpenbart er Web UI et bedre alternativ.

Muxy

Muxy er en proxy for å teste dine motstandsdyktighet og feiltoleransemønstre for distribuerte systemfeil i den virkelige verden. Den kan tukle med transportnivå (lag 4), TCP-øktnivå (lag 5) og HTTP-protokollnivå (lag 7).

Muxy-funksjoner:

  • Modulær arkitektur og lett utvidbar
  • Har offisiell docker-container
  • Enkel å installere, ingen avhengigheter kreves.
  • Ideell for kontinuerlig testing av spenst
  • Simulerer problemer med nettverkstilkobling for distribuerte systemer og mobile enheter

Pumba

Pumba er et kommandolinjeverktøy som utfører kaostesting for docker-containere. Med Pumba krasjer du med vilje applikasjonens docker-beholdere for å se hvordan systemet reagerer. Du kan også utføre stresstesting på containerressursene som CPU, minne, filsystem, input/output, etc.

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

ChaosBlade

ChaosBlade er et åpen kildekodeverktøy for å injisere eksperimenter i systemene fra Alibaba. Den tester alle feilene Alibaba har møtt de siste ti årene og bruker beste praksis for å unngå dem. Den følger kaostekniske prinsipper for å kontrollere feiltoleransen til distribuerte systemer.

ChaosBlade-funksjoner:

  • Gir eksperimentelle scenarier for flere ressurser som CPU, nettverk, minne, disk, etc.
  • Gir eksperimentelle scenarier for noder, nettverk og pods på Kubernetes-plattformen
  • Gir brukervennlige CLI-kommandoer for å utføre eksperimenter
  Hvordan administrerer jeg Sling-kontoen min

Lakmus

Lakmus følger skybaserte kaosingeniørprinsipper. Lakmusverktøyets oppgave er å levere et komplett rammeverk for å finne svakheter i dine Kubernetes-systemer og dine kjørende applikasjoner på Kubernetes.

Den har en kaos-operatør og CRD-ene (CustomResourceDefinitions) rundt det, noe som tillater plug-and-play-kapasitet. Det handler om å sette kaoslogikken din inn i et docker-bilde, kaste det inn i et lakmusrammeverk og få dem orkestrert ved hjelp av CRD-ene.

Lakmusfunksjoner:

  • Hjelper Site Reliability-ingeniører og utviklere med å finne svakheter i Kubernetes-systemet
  • Gir klare til bruk generiske eksperimenter
  • Gir Chaos API for administrasjon av kaosarbeidsflyt
  • Litmus SDK støtter Go, Python og Ansible for å lage dine egne eksperimenter.

Gremlin

Gremlin hjelper ingeniører med å bygge mer robust programvare. Det gir en plattform for å kjøre kaostekniske eksperimenter trygt, sikkert og enkelt.

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

Gremlin har:

  • Installerer lettvektsmiddel på vertene eller beholderne for å injisere feil
  • Gir 10+ forskjellige infrastrukturangrepsmoduser
  • State gremlins lar deg manipulere systemtiden, slå av eller starte verter på nytt og drepe prosessorer.
  • Nettverksgremlins kan injisere latens for å introdusere pakketap eller slippe trafikken.
  • Gremlins Alfi-biblioteksangrep kan konfigureres, startes og stoppes via nettappen. API eller CLI
  • Lar deg målrette eksplosjonsradiusen du vil angripe nøyaktig
  • Lar deg stoppe alle angrep og rulle systemet tilbake til en stabil tilstand

Steadybit

Steadybit har som mål å redusere nedetid proaktivt og gir innsyn i systemproblemer. Du kan kjøre dette verktøyet lokalt på infrastrukturen eller skyen som en tjeneste (SaaS).

For å bruke Steadybit definerer du situasjonen, simulerer eksperimentene, utfører de simulerte eksperimentene på produksjon og automatiserer alle eksperimentene. Den kjører intelligente agenter på systemet ditt for å oppdage potensielle problemer og svakheter. Den integreres enkelt med flere systemer.

Konklusjon

Gå videre og vær modig nok til å bruke kaosingeniørprinsipper og teste produksjonen din med de ovennevnte verktøyene. Disse verktøyene vil hjelpe deg med å finne flere uidentifiserte svakheter i systemet ditt, og det vil hjelpe deg å gjøre systemet mer robust.