Tehnologija je posvuda. Ovisno o tome koliki je ulog u vašoj industriji, neuspjeh tehnološkog proizvoda ili sustava može pasti negdje između potpuno zanemarivog do kraja života kakav poznajete.

Glavni bolnički okviri? Nekako važno. Otpornost aplikacije Candy Crush na vašem mobitelu? Vjerojatno nešto niže na ukupnoj listi prioriteta.

U distribuiranom mrežnom sustavu neuspjeh je neizbježan. Sprječavanje katastrofe započinje čvrstim, vodonepropusnim sigurnosnim dizajnom. No, osim toga, što se još može učiniti?

Što je Netflix Chaos Engineering?

20. rujna 2015.

Sasvim tiho na zapadnoj fronti, kad odjednom nekoliko važnih korporativnih poslužitelja Amazon Web Services padne bez riječi.

Mnoge velike tvrtke nekoliko sati nisu mogle osigurati svoje kupce. Netflix se, međutim, vratio na noge za nekoliko minuta. Kako? Interna Netflixova kultura tvrtke evoluirala je tako da uključuje mnoge prakse "izazivanja neuspjeha" implementirane u stvarnom vremenu kako bi se i sustavi i inženjeri pripremili za slučaj katastrofe.

instagram viewer

Vodstvo tvrtke namjerno je provodilo simulirane ispade poslužitelja u sadržaju dijelova sustava kako bi proučilo i pripremilo se za događaje poput ovih. To im je pomoglo da prepoznaju rupe u sustavu i naprave viškove koji omogućuju neprekidnu uslugu, čak i u slučaju većeg kvara poput prethodno spomenutog.

Ove namjerne vježbe "inženjeringa kaosa" dale su svojim inženjerima dovoljno konkurentske prednosti da se vide kroz fijasko, dijelom zahvaljujući preventivnoj infrastrukturi koju su izgradili ovakvim događajem sudnjeg dana na umu.

Nitko drugi nije bio spreman kad je udario veliki val. Netflix sustav bio je dovoljno jak da se sam snađe. Zaključak? Ovi kaotični nalogodavci možda su ovdje na nečemu.

Namjerno uništavajući one koji te vole

"Inženjerstvo kaosa disciplina je eksperimentiranja na sustavu kako bi se izgradilo povjerenje u sposobnost sustava da izdrži turbulentne uvjete u proizvodnji."

Principi manifesta kaosa

Ovo je srce inženjerstva kaosa - u osnovi, "vatrogasna vježba" nametnuta sustavu tijekom radnog vremena kada su na raspolaganju oči i ruke za rješavanje predstavljenog izazova. Sposobnost određenog sustava da tolerira neuspjeh testira se kad su izložene bilo kakve ranjivosti.

U izvornom kontekstu iz 2011. inženjerstvo kaosa odnosilo se na Netflixov IT odjel. Njihovo vodstvo željelo je testirati koliko su otporni napori tima bili kad su jedno ili više njihovih računala namjerno onesposobljeni. Ovi neuspjesi omogućili su IT timu da identificira ključne slabosti prije nego što postanu problem cijelog sustava i mogu se iskoristiti izvana.

Pravi neuspjeh? To može skupo koštati, a to nadilazi novčane implikacije. Čak i razdoblja zastoja, bez stvarnog propusta u sigurnosti, vjerojatno će rezultirati obiljem propuštenih prilika za zaradu. Zašto čekati hitan slučaj da vas zaslijepi?

Majmuni iza ludila

Neke će tvrtke usvojiti model "crvenog tima" koji postavlja timove programera protiv svoje braće u više odjela. Klasični primjer koji je Netflix pokrenuo koristi "Simian Army". Ovi botovi rade prljavi posao za njih pošteno i potpuno nasumce.

Lud? Laiku, možda. Riječima autora "Kaos majmuna" autora Antonija Garcie Martineza:

"Zamislite majmuna koji ulazi u 'podatkovni centar', ove 'farme' poslužitelja koji su domaćin svim kritičnim funkcijama naših mrežnih aktivnosti. Majmun nasumično trga kablove i uništava uređaje. Izazov je dizajnirati informacijski sustav za koji su odgovorni kako bi mogao raditi unatoč tim majmunima, za koje nitko nikad ne zna kad dođu i što će uništiti. "

Šarena analogija. Nisu svi Simci okrutni: doktor Monkey, na primjer, nadgleda izvedbu sustava. Međutim, kada Chaos Kong navrati u posjet, sve oklade su isključene; ovaj će znak ukloniti cijelu zonu dostupnosti AWS-a.

Povezano: Kako se procjenjuju sigurnosne ranjivosti?

Inženjerstvo kaosa i znanstvena metoda

Inženjerstvo kaosa služi kao dragocjeni izvor sistemskog uvida za one koji provode eksperimente. Ovdje nisu na ispitu samo programeri; to je sustav kakav i autonomno postoji.

Prije nego što bačvu majmuna baci na stol, inženjerstvo kaosa zahtijeva malo temelja.

  1. Prvo morate prepoznati ono što smatrate "stabilnim", zdravim, funkcionalnim stanjem vašeg sustava. Ovo će biti „kontrola“ prema kojoj mjerite opipljive rezultate.
  2. Počnite razmišljati o tome kako će ovo stanje izbiti iz ravnoteže upadom orkestriranog neuspjeha. Planirajte da malver za ispitivanje utječe samo na zatvoreno, kontrolirano područje vašeg sustava.
  3. Predstavite "uljeza" i dopustite sustavu da odgovori.
  4. Uočite i protumačite sve razlike između sustava kakav postoji sada i onoga kako se ponašao prije, dok je bio u homeostazi. Povećavajte svoj "radijus eksplozije" udara dok ne otkrijete ranjivost ili ne dosegnete puni opseg, što god se prije dogodi.

Ideja je da što je teže poremetiti funkcionalni sustav, to više povjerenja možete imati u njegovu otpornost na promjene i bombardiranje. Ovaj pristup pokazuje kako će različiti aspekti sustava nadoknaditi međusobne kvarove u slučaju prekida.

"Budući da niti jedna komponenta ne može jamčiti 100% vrijeme neprekidnog rada (pa čak i najskuplji hardver na kraju ne uspije), moramo dizajnirajte arhitekturu u oblaku u kojoj pojedine komponente mogu propasti bez utjecaja na dostupnost cjeline sustav."

The Netflix Blog

Ponekad se poigravanje sa sustavom na ovaj način niti približno ne odražava na iskustvo kupaca. Drugi će put na vidjelo izaći ozbiljne sigurnosne mane. Sada su, posebno u Netflixu, nepredviđene situacije namijenjene prikrivanju kvara sustava na korisničkoj razini ugrađene u temelj sustava.

Povezano: Što je iskorištavanje nula dana?

Vrijedi li inženjerstvo kaosa?

Ako želite razumjeti složeni sustav - uznemirite ga

- Farhan Thawar (@fnthawar) 26. svibnja 2021

Kritičari će reći da nijedna back-end igra ne vrijedi utjecati na iskustvo kupca, čak iako nakratko i slučajno. Oni koji su za inženjerstvo kaosa, pobit će činjenicom da bi ti "planirani prekidi" trebali biti puno manji od onoga što je AWS doživio 2015. godine. Ako vas mali, planirani problem dovede u situaciju da spriječite da se puno veći problem ikad predstavi, planiranje početnog incidenta može biti najbolji način za pripremu. Ukupno će to utjecati na manje korisnika. Matematika uspijeva.

S ljudskog kraja stvari, mentalitet je takav da su ovi inženjeri koji su imali pad sustava pred sobom i ako se s tim kompetentno bave, u budućnosti će biti i oprezniji, a ujedno i intelektualno opremljeniji za rukovanje svime što im padne na pamet put. Jači sustav koji rezultira u mnogim slučajevima govori sam za sebe.

Silicijska dolina: Gdje snovi umiru

Kažu da ako ga želite učiniti velikim, morate biti spremni ubiti svoje drage ili, u ovom slučaju, biti spremni dopustiti drugima da ih ubiju za vas. Kada je sigurnost na prvom mjestu od samog početka razvoja, mnogo je vjerojatnije da će vaš tim završiti s nečim neprobojnim i sigurnim za slobodno korištenje kupaca.

Iskušavanje igre na radnom mjestu čini izgled za uspjeh na ovom području uzbudljivim; kad je krajnji rezultat kvalitetan, svi se mogu poravnati. Moj Netflix izvrsno radi, a na njemu imamo samo luđake koji stoje iza kaosa.

Sad kad ste čvrsto shvatili inženjerstvo kaosa, zašto ne biste proširili svoje znanje drugom metodologijom za razvoj softvera? Agile je izvrstan sustav koji možete integrirati za objedinjavanje radne snage i proizvodnju čistog i učinkovitog koda.

E-mail
Što je agilna metodologija programiranja?

Bez obzira prijavljujete li se za posao programiranja ili želite učinkovitiji način rada, morat ćete znati o Agileu.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • Programiranje
O autoru
Emma Garofalo (Objavljeno 25 članaka)

Emma Garofalo spisateljica je koja trenutno ima sjedište u Pittsburghu u državi Pennsylvania. Kad se ne trudi za svojim stolom u želji za boljim sutra, obično je mogu naći iza kamere ili u kuhinji.

Više od Emme Garofalo

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Još jedan korak…!

Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.

.