Programiranje

Kaj je Chaos Monkey? Razloženo inženirstvo kaosa

Chaos Monkey, ki je med prehodi z distribucije DVD-jev na gradnjo porazdeljenih sistemov v oblaku za pretakanje videoposnetkov izšel iz dvoran Netflixa, je predstavil inženirsko načelo, ki so ga sprejele organizacije za razvoj programske opreme vseh oblik in velikosti: namreč, da z namernim razbijanjem sistemov se lahko naučijo, kako jih narediti bolj odporne.

Glede na prvotno objavo v Netflixu na to temo, ki sta jo julija 2011 objavila Yury Izrailevsky, takrat direktor oblaka in sistemske infrastrukture, in Ariel Tseitlin, direktor rešitev za oblak pri pretočnem podjetju, je bil Chaos Monkey zasnovan tako, da naključno onemogoči proizvodne primere na svojo infrastrukturo Amazon Web Services in tako razkril slabosti, ki bi jih inženirji Netflix lahko odpravili z izgradnjo boljših samodejnih mehanizmov za obnovitev.

Privlačno ime je prišlo iz "ideje, da sprostite divjo opico z orožjem v vašem podatkovnem središču (ali oblačni regiji), da naključno sestreli primerke in prežvekuje kable - ves čas pa še naprej služimo strankam brez prekinitve," objava v blogu države.

V praksi bi to vključevalo preprosto aplikacijo, ki »naključno izbere primerek iz vsake gruče in ga v določenem času med delovnim časom brez opozorila izklopi. To bi počel vsak delovni dan, «kot sta v svoji obsežni knjigi na to temo podrobno opisali nekdanji inženirki Netflixa Nora Jones in Casey Rosenthal, Kaos inženiring, založnik O’Reilly Media.

Ideja je, da lahko inženirji z učenjem, kje so vaše najšibkejše točke, samodejno sprožijo sprožilce za odpravljanje težave in jim prihranijo klic sredi noči, če gre kaj narobe. Kaos Monkey se je od takrat razvil v celo vrsto načel kaosa pod zastavo inženiringa kaosa.

Opica kaosa na Netflixu

Chaos Monkey je zrasel iz inženirskih prizadevanj na Netflixu okoli leta 2010, ko je bil Greg Orzell, ki zdaj dela v Microsoftovem podjetju GitHub, zadolžen za vgradnjo odpornosti v novo arhitekturo v oblaku.

"Način razmišljanja o Chaos Monkey ni velik podvig inženirstva," je dejal Orzell. "Vrednost, ki jo prinaša, je sprememba miselnosti, ki je bila takrat kritična, ko smo prešli od pošiljanja DVD-jev do pretakanja prek interneta."

V zgodnjih dneh so inženirji Netflix v sisteme uporabljali celo vrsto izpadov in težav z uporabo odprte kode orodij "Simian Army", pri čemer je vsaka upoštevala določene vrste napak, začenši s tem, ko je Chaos Monkey odstranil grozde AWS.

Prvotna vojska (zdaj večinoma upokojena v korist novih orodij) je vključevala Latency Monkey, ki bi povzročil umetne zamude v komunikacijskem sloju RESTful odjemalec-strežnik, in Doctor Monkey, ki bi izkoristil zdravstvene preglede, ki se izvajajo v vsakem primeru , kot tudi monitorje za druge zunanje znake zdravja (npr. obremenitev procesorja), da zaznajo nezdrave primere in jih po potrebi odstranijo iz uporabe.

Chaos Kong je Chaos Monkey dvignil na naslednjo stopnjo s simulacijo izpada celotnega območja razpoložljivosti AWS. "Zelo redko je, da regija AWS postane nedostopna, vendar se to zgodi," opisuje objava v spletnem dnevniku Netflix iz leta 2015.

"Z rednimi eksperimenti, ki simulirajo regionalni izpad, smo lahko že zgodaj ugotovili morebitne sistemske pomanjkljivosti in jih odpravili," nadaljuje prispevek. "Ko US-EAST-1 dejansko ni bil na voljo, je bil naš sistem že dovolj močan, da je obvladal prometno odpoved."

Kot sta v svoji knjigi opisala Jones in Rosenthal, je bilo spuščanje Chaos Konga na infrastrukturi "afera z belim koljem z" vojno sobo ", sestavljeno za spremljanje vseh vidikov storitve pretakanja, in je trajala ure."

Dve leti kasneje, julija 2017, je Netflix predstavil ChAP, platformo za avtomatizacijo kaosa, ki »zaslišuje uvajalni cevovod za uporabniško določeno storitev. Nato sproži eksperimentalne in nadzorne grozde te storitve in vsakemu usmeri majhno količino prometa, «piše ​​v objavi v blogu.

Inženirska načela kaosa

Osnovne prakse opic Chaos Monkey so se z vse večjimi uvedbami skozi Chaos Kong hitro razvile v tisto, kar je bilo pozneje formalizirano kot inženiring kaosa. Netflix ni ustvaril lastne formalne inženirske ekipe za kaos do leta 2015. To ekipo je vodil Bruce Wong, zdaj direktor inženiringa v podjetju Stitch Fix.

Načela kaosnega inženirstva so formalno strnili nekateri izvirni avtorji Chaos Monkey, pri čemer so prakso opredelili kot: "Disciplina eksperimentiranja na sistemu, da bi ustvarili zaupanje v sposobnost sistema, da zdrži turbulentne pogoje v proizvodnji."

V praksi to poteka v štirih korakih:

  1. Določitev "stabilnega stanja" sistema za določitev izhodišča za normalno vedenje.
  2. Predpostavimo, da se bo stanje dinamičnega ravnovesja nadaljevalo tako v kontrolni skupini kot v poskusni skupini.
  3. Uvedite spremenljivke, ki odražajo resnične dogodke, kot so strežniki, ki se zrušijo, trdi diski, ki ne delujejo, ali prekinjene omrežne povezave.
  4. Poskusite ovreči hipotezo tako, da poiščete razliko med kontrolno skupino in poskusno skupino.

Če je ravnotežje težko motiti, imate trden sistem; če obstaja šibkost, potem moraš kaj popraviti.

"V petih letih, odkar je bila objavljena knjiga" Načela ", smo videli, da se inženirstvo kaosa razvija, da se spopade z novimi izzivi v novih panogah," opažata Jones in Rosenthal "Načela in temelji prakse se bodo zagotovo še naprej razvijali, ko se bo sprejetje širilo skozi industrijo programske opreme in v nove vertikale."

Inženirstvo kaosa s Chaos Monkey

Če želite zagnati odprtokodno različico Chaos Monkey, bodo morali vaši sistemi izpolnjevati določen nabor predpogojev, kot je opisano na GitHub.

Chaos Monkey ne deluje kot storitev, zato boste morali nastaviti cron opravilo, kot je opisano na strani GitHub, ki nato enkrat tedensko pokliče Chaos Monkey, da ustvari urnik zaključkov.

Če želite uporabljati to različico Chaos Monkey, morate uporabljati Netflixovo lastno odprtokodno platformo za neprekinjeno dostavo Spinnaker, ki lahko omeji zmožnost nekaterih organizacij, da sprejmejo metodo. Chaos Monkey zahteva tudi zbirko podatkov, združljivo z MySQL, različice 5.6 ali novejše.

Lastniki storitev nastavljajo svoje konfiguracije Chaos Monkey prek Spinnakerja. Chaos Monkey deluje prek Spinnakerja, da dobi informacije o tem, kako so storitve razporejene, in naključno zaključi primerke - navidezne stroje ali vsebnike s frekvenco in razporedom, ki ga določite.

Seveda je izvajanje Chaos Monkey le začetek težke in zapletene naloge reševanja težav z odpornostjo sistema. Chaos Monkey zgolj odkrije slabosti sistema; Nato je na devopsih ali sistemskih inženirskih skupinah, da prepoznajo svoje vzroke in najdejo rešitve.

"Orodje samo po sebi ni drago, toda naložba, ki jo morate reagirati na orodje, je," kot pravi Orzell. Zavzetost za inženiring kaosa zahteva tudi preusmeritev virov z gradnje novih funkcij na povečanje odpornosti. "Vsako podjetje je na drugi točki tega spektra in vsak se mora odločiti, koliko klicati gor ali dol v tem prostoru," dodaja.

Jones in Rosenthal pravita, da so bili inženirji Netflixa v zgodnjih dneh "veliko odklonjeni predvsem od finančnih institucij."

Kljub večjim vložkom bank so kljub temu izpadale, zato so številne organizacije s skrbnim izvajanjem "proaktivne strategije, kot je inženiring kaosa, da bi razumele tveganja, da bi preprečile velike, nenadzorovane izide", spremenile svojo miselnost, pri čemer je Capital One že zgodaj posvojitelj, kot je podrobno opisano v knjigi.

Inženirski viri kaosa

Še enkrat, zadnja in dokončna knjiga na to temo je Kaos inženiring nekdanjih inženirjev Netflixa Nora Jones in Casey Rosenthal, objavljeno aprila 2020, ki temelji na številnih delih teh avtorjev in drugih, zbranih v knjigi 2017 Kaos inženiring. Za bolj praktičen pregled glejte Russ Miles's Učenje inženirstva kaosa.

Netflix ponuja veliko virov o tej temi na GitHubu, vključno z vadnico, veliko dokumentacijo, števcem napak, pregledom izpadov in orodji za dešifriranje.

Gremlin - ponudnik komercialnih orodij za izvajanje inženirskih poskusov kaosa - ponuja svoj obsežen nabor virov, ki so na voljo brezplačno na spletu in v obliki PDF. Podjetje podpira tudi različna prizadevanja skupnosti, vključno s Chaos Conf in kanalom Slack.

O’Reilly ima tudi veliko virov, vključno s tem priročnim seznamom predvajanja knjig in videoposnetkov na to temo.

$config[zx-auto] not found$config[zx-overlay] not found