Što je Chaos Monkey? Objasnio inženjering kaosa

Izbačen iz dvorana Netflixa tijekom prelaska s distribucije DVD-a na izgradnju distribuiranih sustava u oblaku za streaming video zapisa, Chaos Monkey predstavio je inženjerski princip koji su prihvatile organizacije za razvoj softvera svih oblika i veličina: naime, namjernim razbijanjem sustava mogu naučiti učiniti ih otpornijima.

Prema izvornom postu na Netflixovoj blogu na tu temu, koji su u srpnju 2011. objavili Yury Izrailevsky, tada direktor oblaka i sistemske infrastrukture, i Ariel Tseitlin, direktor rješenja za oblak u streaming tvrtki, Chaos Monkey osmišljen je tako da nasumično onemogući proizvodne instance na njegove infrastrukture Amazon Web Services, otkrivajući tako slabosti koje bi Netflixovi inženjeri mogli ukloniti izgradnjom boljih mehanizama automatskog oporavka.

Upečatljivo ime poteklo je od "ideje o oslobađanju divljeg majmuna s oružjem u vašem podatkovnom centru (ili regiji oblaka) kako bi nasumce pucao u slučajeve i žvakao kablove - sve dok mi nastavljamo služiti svojim kupcima bez prekida", blog Države.

U praksi bi to uključivalo jednostavnu aplikaciju „slučajno odabiranje instance iz svake skupine i u određenom trenutku tijekom radnog vremena isključite je bez upozorenja. To bi radio svakog radnog dana ”, kako su detaljno opisali bivši Netflixovi inženjeri Nora Jones i Casey Rosenthal u svojoj opsežnoj knjizi na temu Chaos Engineering u izdanju O'Reilly Media.

Ideja je da naučeći gdje su vaša najslabija mjesta, inženjeri mogu postaviti automatske okidače za borbu protiv problema, štedeći im poziv usred noći ako nešto pođe po zlu. Majmun kaosa se od tada razvio u čitav niz principa kaosa, pod zastavom inženjerstva kaosa.

Majmun kaosa na Netflixu

Chaos Monkey izrastao je iz inženjerskih napora u Netflixu oko 2010. godine, kada je Greg Orzell - koji sada radi u GitHubu u vlasništvu Microsofta - dobio zadatak da izgradi elastičnost u novoj kompanijinoj arhitekturi koja se temelji na oblaku.

"Način na koji razmišljam o Chaos Monkeyu nije glavni podvig tehnike", rekao je Orzell. "Vrijednost koju donosi je promjena načina razmišljanja koja je bila presudna u to vrijeme dok smo od isporuke DVD-a prelazili na streaming putem Interneta."

U ranim danima, Netflixovi inženjeri uveli su čitav niz ispada i problema u sustave koristeći "Simian Army" alata otvorenog koda, od kojih je svaki uzimao u obzir određene vrste kvarova, počevši od Chaos Monkeya koji je uklanjao AWS klastere.

Izvorna vojska (koja je sada uglavnom povučena u korist novih alata) uključivala je osobe poput Latency Monkey, što bi izazvalo umjetna kašnjenja u komunikacijskom sloju RESTful klijent-poslužitelj, i Doctor Monkey, koji bi se uključio u zdravstvene provjere koje se izvršavaju u svakoj instanci , kao i monitori za ostale vanjske znakove zdravlja (npr. opterećenje procesora) za otkrivanje nezdravih slučajeva i uklanjanje ih iz upotrebe ako je potrebno.

Chaos Kong podigao je Chaos Monkey na sljedeću razinu simulirajući prekid u cijeloj zoni dostupnosti AWS-a. "Vrlo je rijetko da AWS regija postane nedostupna, ali to se događa", navodi se na blogu tvrtke Netflix iz 2015. godine. 

"Redovitim izvođenjem eksperimenata koji simuliraju regionalni prekid uspjeli smo rano identificirati sve sistemske slabosti i otkloniti ih", nastavlja se u postu. "Kad je US-EAST-1 zapravo postao nedostupan, naš je sustav već bio dovoljno snažan da podnese preusmjeravanje prometa."

Kao što Jones i Rosenthal ističu u svojoj knjizi, puštanje Chaos Konga na infrastrukturu bila je "afera s bijelim zglobovima s" ratnom sobom "okupljenom za praćenje svih aspekata streaming usluge, koja je trajala satima."

Dvije godine kasnije, u srpnju 2017., Netflix je predstavio ChAP, Chaos Automation Platform, koja „ispituje cjevovod za postavljanje za uslugu koju je odredio korisnik. Zatim pokreće eksperimentalne i kontrolne klastere te usluge i usmjerava malu količinu prometa na svaku “, navodi se u blogu.

Principi kaosnog inženjerstva

Osnovne prakse majmuna kaosa brzo su evoluirale, sve većim i većim postavljanjem kroz Chaos Kong, do onoga što je kasnije formalizirano kao inženjerstvo kaosa. Netflix nije izgradio vlastiti tim za formalni inženjer kaosa do 2015. Tim je vodio Bruce Wong, sada direktor inženjeringa u Stitch Fixu.

Principe kaosnog inženjerstva formalno su objedinili neki izvorni autori Chaos Monkey, definirajući praksu kao: "Disciplina eksperimentiranja na sustavu kako bi se izgradilo povjerenje u sposobnost sustava da izdrži turbulentne uvjete u proizvodnji."

U praksi se to odvija u obliku postupka u četiri koraka:

  1. Utvrđivanje "stacionarnog stanja" sustava za postavljanje polazišta za normalno ponašanje.
  2. Pretpostavite da će se ovo stabilno stanje nastaviti i u kontrolnoj i u eksperimentalnoj skupini.
  3. Uvedite varijable koje odražavaju stvarne događaje kao što su poslužitelji koji se sruše, tvrdi diskovi koji kvare ili mrežne veze koje su prekinute.
  4. Pokušajte opovrgnuti hipotezu tražeći razliku između kontrolne i eksperimentalne skupine.

Ako je stabilno stanje teško poremetiti, imate robustan sustav; ako postoji slabost, onda morate nešto popraviti.

"U pet godina otkako su objavljeni 'Principi', vidjeli smo kako se inženjerstvo kaosa razvija kako bi se suočilo s novim izazovima u novim industrijama", primjećuju Jones i Rosenthal. "Načela i temelji prakse zasigurno će se i dalje razvijati kako se usvajanje širi kroz softversku industriju i prelazi u nove vertikale."

Inženjering kaosa s Chaos Monkeyom

Da bi pokrenuli otvorenu verziju Chaos Monkey, vaši će sustavi morati ispuniti određeni skup preduvjeta, kako je navedeno na GitHubu.

Chaos Monkey ne radi kao usluga, pa ćete morati postaviti cron posao kako je opisano na stranici GitHub, koji zatim poziva Chaos Monkey jednom tjedno za izradu rasporeda prekida.

Da biste koristili ovu verziju Chaos Monkeya, morate koristiti vlastitu Netflixovu platformu za kontinuiranu isporuku, Spinnaker, koja može ograničiti mogućnost određenih organizacija da usvoje metodu. Chaos Monkey također zahtijeva MySQL kompatibilnu bazu podataka, verzije 5.6 ili novije.

Vlasnici usluga postavljaju svoje konfiguracije Chaos Monkeya putem Spinnakera. Chaos Monkey radi putem Spinnakera kako bi dobio informacije o tome kako su usluge raspoređene i nasumično ukida instance - virtualne strojeve ili spremnike na frekvenciji i rasporedu koji navedete.

Naravno, implementacija Chaos Monkeya tek je početak teškog i složenog zadatka rješavanja problema otpornosti sustava. Majmun kaosa samo otkriva slabosti sustava; tada je na devopsima ili timovima inženjera sustava da identificiraju svoje uzroke i pronađu rješenja.

"Sam alat nije skup, ali ulaganje koje morate reagirati na alat je", kako kaže Orzell. Posvećivanje inženjerstvu kaosa također zahtijeva preusmjeravanje resursa s izgradnje novih značajki na pojačavanje otpornosti. "Svako je poduzeće u različitoj točki tog spektra i svako mora odlučiti koliko treba nazvati gore ili dolje u tom prostoru", dodaje.

Jones i Rosenthal kažu da su u ranim danima Netflixovi inženjeri "posebno od financijskih institucija dobili puno odstupanja".

Unatoč tome što je ulog za banke veći, one su i dalje trpjele prekide, pa su pažljivom primjenom "proaktivne strategije poput inženjeringa kaosa za razumijevanje rizika kako bi se spriječili veliki, nekontrolirani ishodi", mnoge od tih organizacija promijenile način razmišljanja, s Capital One rano posvojitelj, kako je detaljno opisano u knjizi.

Inženjerski resursi kaosa

Ponovno, najnovija i konačna knjiga o toj temi je Inženjerstvo kaosa bivših Netflixovih inženjera Nore Jones i Casey Rosenthal, objavljeno u travnju 2020. godine, koje se temelji na velikom broju djela tih autora i drugih, kompiliranom u knjizi Chaos Engineering iz 2017. godine. . Za praktičniji pregled, pogledajte Russ Miles's Learning Chaos Engineering .

Netflix nudi bogatstvo resursa na temu na GitHub-u, uključujući tutorial, puno dokumentacije, brojač pogrešaka, provjeru nestanka i alate za dešifriranje.

Gremlin - dobavljač komercijalnih alata za izvođenje inženjerskih eksperimenata kaosa - nudi vlastiti sveobuhvatan skup resursa koji su dostupni besplatno na mreži i u PDF formatu. Tvrtka također podržava razne napore zajednice, uključujući Chaos Conf i Slack kanal.

O'Reilly također ima mnoštvo resursa, uključujući ovaj zgodan popis pjesama i videozapisa na tu temu.