Programmering

Hvad er Chaos Monkey? Chaos engineering forklaret

Chaos Monkey blev banebrydende ud af Netflix-haller under skiftet fra distribution af DVD'er til opbygning af distribuerede sky-systemer til streaming af video, og introducerede et teknisk princip, der er blevet omfavnet af softwareudviklingsorganisationer i alle former og størrelser: nemlig ved at bevidst bryde systemer kan lære at gøre dem mere modstandsdygtige.

Ifølge det originale Netflix-blogindlæg om emnet, offentliggjort i juli 2011 af Yury Izrailevsky, dengang direktør for sky- og systeminfrastruktur, og Ariel Tseitlin, direktør for skyløsninger hos streamingfirmaet, blev Chaos Monkey designet til tilfældigt at deaktivere produktionsinstanser på sin Amazon Web Services-infrastruktur og dermed afsløre svagheder, som Netflix-ingeniører kunne eliminere ved at opbygge bedre automatiske gendannelsesmekanismer.

Det fængende navn kom fra "ideen om at frigøre en vild abe med et våben i dit datacenter (eller skyregion) for tilfældigt at skyde forekomster ned og tygge gennem kabler - alt imens vi fortsætter med at betjene vores kunder uden afbrydelse," blogindlægget stater.

I praksis vil dette indebære en simpel applikation “at vælge en forekomst tilfældigt fra hver klynge og på et tidspunkt i løbet af åbningstiden slukke den uden advarsel. Det ville gøre dette hver arbejdsdag, ”som beskrevet af tidligere Netflix-ingeniører Nora Jones og Casey Rosenthal i deres omfattende bog om emnet, Chaos Engineering, udgivet af O'Reilly Media.

Ideen er, at ingeniører ved at lære, hvor dine svageste steder er, kan indstille automatiske udløsere til at bekæmpe et problem og gemme dem et opkald midt om natten, hvis noget skulle gå galt. Chaos Monkey har siden udviklet sig til en lang række kaosprincipper under kaosingeniørens banner.

Chaos Monkey på Netflix

Chaos Monkey voksede ud af ingeniørindsats hos Netflix omkring 2010, da Greg Orzell - der nu arbejder hos Microsoft-ejede GitHub - fik til opgave at bygge fleksibilitet i virksomhedens nye skybaserede arkitektur.

"Den måde, jeg tænker på Chaos Monkey er ikke et stort stykke teknik," fortalte Orzell. "Værdien, det medfører, er en tankegangsændring, der var kritisk på det tidspunkt, da vi gik fra at sende DVD'er til streaming via internettet."

I de tidlige dage introducerede Netflix-ingeniører en hel række af afbrydelser og problemer i systemer ved hjælp af en "Simian Army" af open source-værktøjer, der hver især tegner sig for bestemte typer fejl, startende med Chaos Monkey, der udtager AWS-klynger.

Den oprindelige hær (nu for det meste pensioneret til fordel for nye værktøjer) omfattede lignende Latency Monkey, som ville fremkalde kunstige forsinkelser i RESTful-klientserverkommunikationslaget og Doctor Monkey, som ville udnytte de sundhedstjek, der kører på hver instans samt monitorer for andre eksterne sundhedstegn (f.eks. CPU-belastning) for at opdage usunde forekomster og om nødvendigt fjerne dem fra tjenesten.

Chaos Kong tog Chaos Monkey til det næste niveau ved at simulere en afbrydelse til en hel AWS tilgængelighedszone. ”Det er meget sjældent, at en AWS-region bliver utilgængelig, men det sker,” skitserer et Netflix-blogindlæg fra 2015.

"Ved regelmæssigt at køre eksperimenter, der simulerer et regionalt svigt, var vi i stand til at identificere eventuelle systemiske svagheder tidligt og rette dem," fortsætter indlægget. "Da US-EAST-1 faktisk blev utilgængelig, var vores system allerede stærkt nok til at håndtere en trafiknedbrud."

Som Jones og Rosenthal skitserer i deres bog var det at "lade Chaos Kong løs på infrastrukturen" en hvid-knok affære med et 'krigsværelse' samlet for at overvåge alle aspekter af streamingtjenesten, og det varede timer. '

To år senere, i juli 2017, introducerede Netflix ChAP, Chaos Automation Platform, som ”forhører implementeringsrørledningen for en brugerdefineret tjeneste. Derefter lancerer eksperiment- og kontrolklynger af denne tjeneste og dirigerer en lille mængde trafik til hver, ”hedder det i blogindlægget.

Kaostekniske principper

Grundlæggende Chaos Monkey-praksis har hurtigt udviklet sig med større og større implementeringer gennem Chaos Kong til det, der senere blev formaliseret som kaoteknik. Netflix opbyggede ikke sit eget formelle kaotekniske team før 2015. Det hold blev ledet af Bruce Wong, nu direktør for ingeniør hos Stitch Fix.

Principperne for kaoteknik er formelt blevet samlet af nogle af de oprindelige forfattere af Chaos Monkey og definerede praksis som: "Disciplinen med at eksperimentere med et system for at opbygge tillid til systemets evne til at modstå turbulente produktionsforhold."

I praksis tager dette form af en firetrinsproces:

  1. Definition af et systems "steady state" for at indstille en basislinje for normal adfærd.
  2. Hypoteser, at denne steady state vil fortsætte i både kontrolgruppen og den eksperimentelle gruppe.
  3. Indfør variabler, der afspejler begivenheder i den virkelige verden som servere, der går ned, harddiske, der fungerer forkert, eller netværksforbindelser, der er afbrudt.
  4. Prøv at modbevise hypotesen ved at lede efter en forskel mellem kontrolgruppen og den eksperimentelle gruppe.

Hvis stabil tilstand er vanskelig at forstyrre, har du et robust system; Hvis der er en svaghed, har du noget at gå og rette.

"I de fem år, siden 'Principperne' blev offentliggjort, har vi set kaoteknologi udvikle sig for at imødekomme nye udfordringer i nye industrier," bemærker Jones og Rosenthal. "Principperne og grundlaget for denne praksis vil helt sikkert fortsætte med at udvikle sig, når adoption udvides gennem softwareindustrien og ind i nye vertikaler."

Kaoteknik med Chaos Monkey

For at køre open source-versionen af ​​Chaos Monkey bliver dine systemer nødt til at opfylde et bestemt sæt forudsætninger som beskrevet på GitHub.

Chaos Monkey kører ikke som en tjeneste, så du bliver nødt til at oprette et cron-job som beskrevet på GitHub-siden, som derefter kalder Chaos Monkey en gang om hverdagen for at oprette en tidsplan for opsigelser.

For at bruge denne version af Chaos Monkey skal du bruge Netflix egen, open source, kontinuerlige leveringsplatform, Spinnaker, som kan begrænse visse organisations evne til at vedtage metoden. Chaos Monkey kræver også en MySQL-kompatibel database, version 5.6 eller nyere.

Tjenestejere indstiller deres Chaos Monkey-konfigurationer gennem Spinnaker. Chaos Monkey arbejder gennem Spinnaker for at få oplysninger om, hvordan tjenester implementeres og afslutter forekomster - virtuelle maskiner eller containere - tilfældigt på en frekvens og tidsplan, du angiver.

Selvfølgelig er implementering af Chaos Monkey kun begyndelsen på den vanskelige og komplekse opgave at løse problemer med systemets modstandsdygtighed. Chaos Monkey afslører blot svaghederne i systemet; det er derefter op til devops eller systemteknikhold at identificere deres årsager og komme med løsninger.

”Selve værktøjet er ikke dyrt, men den investering, du skal foretage for at reagere på værktøjet, er,” som Orzell udtrykker det. At forpligte sig til kaoteknik kræver også at skifte ressourcer fra at opbygge nye funktioner til at styrke modstandsdygtigheden. "Enhver virksomhed er på et andet tidspunkt inden for dette spektrum, og de skal hver især beslutte, hvor meget de skal ringe op eller ned i det rum," tilføjer han.

Jones og Rosenthal siger, at Netflix-ingeniører i de tidlige dage "modtog en masse pushback især fra finansielle institutioner."

På trods af at indsatsen var højere for banker, led de stadig afbrydelser, så ved omhyggeligt at implementere en "proaktiv strategi som kaosteknik for at forstå risici for at forhindre store, ukontrollerede resultater" ændrede mange af disse organisationer deres tankegang med Capital One tidligt adopter, som beskrevet i bogen.

Kaotekniske ressourcer

Igen er den seneste og endelige bog om emnet Chaos Engineering af tidligere Netflix-ingeniører Nora Jones og Casey Rosenthal, udgivet i april 2020, som bygger på meget af det arbejde, som forfatterne og andre udarbejdede i 2017-bogen Chaos Engineering. For en mere praktisk oversigt, se Russ Miles's At lære kaoteknik.

Netflix leverer et væld af ressourcer om emnet på GitHub, herunder en tutorial, masser af dokumentation, en fejltæller, afbrydelseskontrol og dekrypteringsværktøjer.

Gremlin - en leverandør af kommercielle værktøjer til at køre kaostekniske eksperimenter - tilbyder sit eget omfattende sæt ressourcer, som er tilgængelige gratis online og i PDF-format. Virksomheden støtter også forskellige samfundsindsatser, herunder Chaos Conf og en Slack-kanal.

O'Reilly har også et væld af ressourcer, herunder denne praktiske playliste med bøger og videoer om emnet.