9.6 Uhandisi wa machafuko na majaribio ya ustahimilivu
Muhtasari na msukumo
Uhandisi wa machafuko ni mazoea yenye nidhamu ya kuendesha majaribio kwenye mfumo ili kujenga imani katika uwezo wake wa kustahimili hali za msukosuko kwenye uzalishaji. Jina linaonekana la kizembe, na hilo ndilo jambo la kwanza la kuacha kuamini. Uhandisi wa machafuko si kuvunja vitu kwa nasibu na kutumaini utajifunza kitu. Ni kinyume chake: mbinu inayodhibitiwa, inayoendeshwa na dhana ya kuingiza kushindwa halisi ili ugundue udhaifu kabla watumiaji wako hawajafanya. Tayari unajua mfumo wako utakabiliwa na kushindwa, kwa sababu kila mfumo halisi hukabiliwa. Swali pekee ni kama utakutana na kushindwa huko alasiri ya Jumanne ukiwa na kurudisha nyuma tayari, au saa tisa usiku wakati wa saa yako yenye shughuli nyingi zaidi bila kujua kinachotokea.
Kwa timu kubwa, hili ni muhimu kwa sababu ugumu umekua kuliko uwezo wa yeyote kuufikiria kwa ukaguzi. Huduma ya kisasa ni utando wa makumi au mamia ya vijenzi, kila kimoja na muda wake wa kuisha, majaribio tena, kache, na njia za kushindwa, na mwingiliano kati yake huzaa tabia inayojitokeza ambayo hakuna mchoro wa usanifu unaoitabiri. Unaweza kupitia msimbo, kuchora masanduku, na bado ukashangazwa utegemezi wa polepole unapochochea dhoruba ya majaribio tena inayoangusha huduma iliyo hatua tatu mbali. Uhandisi wa machafuko ndio jinsi mnavyochunguza mwingiliano huo kwa majaribio, ili ustahimilivu wenu uwe kitu mlichokithibitisha badala ya kitu mnachodhania.
Mazingira ya mashirika makubwa na serikali huinua dau na, zaidi na zaidi, agizo. Wadhibiti wa kifedha sasa wanatarajia makampuni kujaribu ustahimilivu wa uendeshaji dhidi ya hali kali-lakini-zinazowezekana na kuthibitisha yanaweza kuendeleza huduma muhimu kupitia usumbufu. Vyombo vya serikali huendesha mazoezi ya mwendelezo wa shughuli ili huduma muhimu za umma zinusurike kukatika, maafa, na mashambulizi ya mtandaoni. Katika ulimwengu wote wawili, “tunadhani itashikilia” si jibu linalokubalika kwa mkaguzi au raia. Uhandisi wa machafuko unakupa ushahidi. Sura hii inajengwa juu ya uhandisi wa kutegemewa wa tovuti (sura ya 9.1) na mifumo ya ustahimilivu katika sura ya 3.5, na inaunganishwa kwa karibu na usimamizi wa matukio (sura ya 9.3) na kupona kutoka maafa (sura ya 9.5).
Kanuni kuu
- Jenga imani, usiunde machafuko. Lengo ni ustahimilivu uliothibitishwa, si tamasha. Kila jaribio hujibu swali maalumu kuhusu jinsi mfumo unavyofanya chini ya mkazo.
- Fafanua hali thabiti kwanza. Huwezi kugundua tatizo bila fasili wazi, inayopimika ya “afya” inavyoonekana.
- Unda dhana. Taja unachotarajia kitokee kabla ya kuingiza kosa. Mshangao ni tokeo; kutokuwepo kwake ni tokeo pia.
- Punguza na dhibiti eneo la mlipuko. Anza kidogo, linda watumiaji halisi, na panua wigo tu imani inapokua.
- Pendelea uzalishaji, kwa uangalifu. Kushindwa kunafanya tofauti chini ya trafiki halisi, data halisi, na ukubwa halisi. Pata haki ya kujaribu huko.
- Otomatisha kuelekea uthibitisho endelevu. Udhaifu unaorekebisha mara moja unaweza kurudi nyuma. Ustahimilivu unaojaribiwa mfululizo unabaki kweli.
- Kushindwa ni mwalimu, si hukumu. Matokeo huboresha mfumo; si sababu ya kumlaumu mtu aliyeendesha jaribio.
Mapendekezo
Weka masharti ya awali kabla ya kuingiza kosa lolote
Uhandisi wa machafuko ni kizidisha nguvu kwa mfumo uliokomaa na dhima kwa ule usiokomaa. Kabla ya kuanza, unahitaji vitu vitatu mahali pake. Kwanza, uonekanaji, yaani vipimo, kumbukumbu, na nyayo zinazokuruhusu kuona mfumo wako unafanya nini kutoka nje, kwa sababu jaribio usiloweza kuliona halikufundishi chochote. Pili, malengo ya kiwango cha huduma au fasili sawa ya afya ya hali thabiti (sura ya 9.1), ili uweze kutofautisha jaribio lenye mafanikio na la madhara kwa wakati halisi. Tatu, njia ya haraka na inayoaminika ya kurudisha nyuma au kusitisha, ili jaribio linapotishia watumiaji halisi uweze kulisimamisha na kurejesha huduma ya kawaida ndani ya sekunde. Ikiwa huwezi kupima mfumo wako, kufafanua hali yake nzuri, na kuuvuta kurudi kutoka ukingoni, usiendeshe majaribio ya machafuko bado. Jenga uwezo huo kwanza. Unajilipia bila kujali.
Fafanua hali thabiti na uunde dhana halisi
Kila jaribio linaanza kwa kuandika kawaida inaonekanaje kwa maneno yanayopimika: kiwango cha mafanikio ya maombi juu ya asilimia 99.9, ucheleweshaji wa malipo chini ya milisekunde 400 kwenye asilimia ya 95, kina cha foleni chini ya kizingiti. Hii ndiyo fasili yako ya hali thabiti, na inapaswa kuakisi afya inayoonekana kwa mtumiaji, si mabomba ya ndani. Kisha taja dhana kwa lugha rahisi: “Tukiongeza milisekunde 300 za ucheleweshaji kwenye huduma ya mapendekezo, ukurasa wa bidhaa bado utaonyeshwa ndani ya bajeti yake ya ucheleweshaji kwa sababu ukurasa unachukulia mapendekezo kuwa ya hiari na kuisha muda baada ya milisekunde 200.” Sasa una dai linaloweza kukanushwa. Unapoendesha jaribio, mojawapo ya mambo mawili mazuri hutokea. Ama mfumo unafanya kama ulivyotabiriwa na imani yako imepatikana, au haufanyi na umepata udhaifu halisi kwa bei nafuu, kwa masharti yako, na wahandisi wakitazama.
Ingiza makosa halisi, si ya kiholela
Makosa unayoingiza yanapaswa kuakisi kushindwa ambako mfumo wako unapitia kweli. Uingizaji wa makosa, kuingiza makosa kwa makusudi kupima jinsi mfumo unavyojibu, unakupa menyu inayotokana na matukio halisi ya uzalishaji. Ingiza ucheleweshaji kuiga utegemezi wa polepole au kiungo cha mtandao kilichojaa. Ingiza makosa, kurudisha HTTP 500 au kukataa miunganisho, kuiga huduma ya chini ya mkondo inayoshindwa. Ingiza uchovu wa rasilimali kwa kutumia CPU, kumbukumbu, diski, au vielezi vya faili, kuona jinsi mfumo unavyoshuka chini ya shinikizo. Ingiza kushindwa kwa utegemezi kwa kufanya hifadhidata nzima, kache, foleni, au API ya mtu wa tatu isifikike. Katika mfumo uliosambazwa, ambapo vijenzi vinaendesha kwenye mashine tofauti na kuwasiliana kwa mtandao usiotegemewa, haya ndiyo kushindwa kunakotawala kukatika halisi. Ucheleweshaji na kushindwa kwa sehemu, si kuanguka safi, ndiyo vinavyovunja mambo kwa vitendo, kwa hiyo pima majaribio yako kuelekea katikati yenye fujo.
Thibitisha kwamba mifumo yako ya ustahimilivu inafanya kazi kweli
Hapa ndipo uhandisi wa machafuko unapopata riziki yake. Mfumo wako umejaa taratibu zinazotakiwa kukulinda: muda wa kuisha unaomzuia mpigaji kusubiri milele, majaribio tena yanayofunika hitilafu za muda mfupi, vivunja mzunguko vinavyoacha kupiga nyundo utegemezi unaoshindwa, na kuhamisha kwa kushindwa kunakobadilisha hadi kusubiri msingi unapokufa. Mifumo hii, iliyoshughulikiwa katika sura ya 3.5, ndiyo tofauti kati ya tatizo lililodhibitiwa na kukatika kwa mfululizo. Tatizo ni kwamba mara chache sana hujaribiwa chini ya hali ambazo zipo kwa ajili yake. Muda wa kuisha uliowekwa sekunde 30 wakati tarehe ya mwisho ya mpigaji mwenyewe ni sekunde 2 hauwezi kitu. Jaribio tena bila kurudi nyuma hugeuza huduma moja inayohangaika kuwa dhoruba ya maombi (thundering herd). Kivunja mzunguko ambacho hakijawahi kutumika kinaweza kuwa kimesanidiwa vibaya na kisichofanya kazi kamwe, au kufanya kazi daima. Majaribio ya machafuko ndiyo jinsi mnavyothibitisha kwamba kila moja hufanya kama ilivyobuniwa kosa linalolilinda linapofika kweli. Dhania kila utaratibu wa usalama usiojaribiwa umevunjika hadi jaribio lithibitishe vinginevyo.
Anza na siku za michezo kabla hujaotomatisha
Usianze na jukwaa la kiotomatiki linaloingiza makosa mfululizo. Anza na siku ya mchezo: zoezi lililopangwa, la vitendo ambapo timu hukusanyika, huchagua hali, huingiza kosa katika mazingira yaliyodhibitiwa, na kutazama pamoja. Kabla ya hata hiyo, zoezi la mezani, ambapo mnazungumza kupitia hali kwenye ubao bila kugusa mfumo, hufichua mapengo katika vitabu vya mwongozo, tahadhari, na umiliki bila hatari yoyote. Siku za michezo ndio njia yako ya kuingia. Zinajenga misuli ya kuunda dhana, kudhibiti eneo la mlipuko, na kusoma mfumo chini ya mkazo, na zinajenga uaminifu na uongozi na timu jirani utakaouhitaji kabla yeyote hajakuruhusu kuendesha majaribio kwenye uzalishaji. Pia zinaimarisha mwitikio wa tukio moja kwa moja, kwa sababu ujuzi ni ule ule ambao wahandisi wenu wa simu ya dharura wanautumia wakati wa tukio halisi (sura ya 9.3). Endesha siku zako za kwanza za michezo kwenye maandalizi, kisha kwenye uzalishaji wakati wa saa tulivu kwa eneo dogo la mlipuko, kisha upanue.
Dhibiti eneo la mlipuko kwa makusudi
Mazoea muhimu zaidi ya usalama ni kupunguza madhara yanayowezekana ya kila jaribio. Anza na wigo mdogo zaidi unaoweza kukufundisha kitu: mfano mmoja, asilimia moja ya trafiki, utegemezi mmoja usio muhimu, eneo moja la upatikanaji. Fafanua masharti ya kusitisha kabla ya kuanza, yafunge kwenye vipimo vyako vya hali thabiti, na ufanye kusimamisha jaribio kuwa kitendo kimoja ambacho yeyote anayetazama anaweza kuchochea. Pendelea kuendesha wakati wa saa za kazi timu ikiwa macho na ina wafanyakazi, si usiku mshangao unapokuwa tukio bila mtu anayetazama. Panua eneo la mlipuko tu majaribio madogo yanapoendesha safi na imani yako imeongezeka kweli. Nidhamu ya udhibiti ndiyo inayotenganisha uhandisi wa machafuko na kukatika ulikosababisha mwenyewe.
Kua kuelekea uthibitisho endelevu, wa kiotomatiki wa ustahimilivu
Siku za michezo za mara kwa mara hupata udhaifu, lakini mifumo hubadilika kila siku, na marekebisho ya robo iliyopita yanaweza kurudi nyuma kimyakimya. Hali ya mwisho iliyokomaa ni uthibitisho endelevu: seti iliyopangwa ya majaribio ya ustahimilivu yanayoendesha kiotomatiki, kwenye bomba au kwa ratiba, ili kurudi nyuma kwenye muda wa kuisha, sera ya majaribio tena, au njia ya kuhamisha kwa kushindwa kukamatwe ndani ya siku badala ya wakati wa kukatika halisi kunakofuata. Hapa ndipo zana kama Chaos Monkey ya Netflix, inayokatisha mifano kwa nasibu kwenye uzalishaji kuwalazimisha wahandisi kujenga huduma zinazovumilia kupoteza mfano, zilipopata sifa yake. Otomatisha tu majaribio unayoyaelewa na kuyaamini kutokana na uendeshaji wa mkono. Machafuko endelevu juu ya mfumo usiokomaa ni njia ya kuzalisha matukio, si imani.
Unganisha majaribio na kupona kutoka maafa na kujifunza kutokana na matukio
Uhandisi wa machafuko hauishi peke yake. Hali kubwa zaidi, adimu zaidi, kupoteza kanda nzima, kuhamisha hifadhidata kwa kushindwa, kurejesha kutoka nakala rudufu, ni za majaribio ya kupona kutoka maafa (sura ya 9.5), na siku ya mchezo mara nyingi ndiyo chombo bora cha kuzoeza mipango hiyo badala ya kuiacha ioze kama nyaraka zisizojaribiwa. Upande mwingine, kila jaribio linalofichua udhaifu linapaswa kulisha mzunguko ule ule wa kujifunza kama tukio halisi (sura ya 9.3): uchambuzi usio na lawama, marekebisho yanayofuatiliwa, na jaribio la kufuatilia kuthibitisha marekebisho yanashikilia. Matokeo ya machafuko, mazoezi ya kupona kutoka maafa, na mapitio ya matukio yote yanapotiririka kwenye mrundikano mmoja wa kazi ya ustahimilivu, unapata faida zinazojilimbikiza badala ya mazoezi ya mara moja yaliyotawanyika.
Mabadilishano: faida na hasara
| Uamuzi | Faida | Hasara |
|---|---|---|
| Kujaribu kwenye uzalishaji | Trafiki, data, na ukubwa halisi; matokeo ni ya kweli | Hatari kwa watumiaji udhibiti ukishindwa; inahitaji ukomavu |
| Kujaribu kwenye maandalizi tu | Salama, dau ndogo, rahisi kuanza | Inakosa tabia ya ulimwengu halisi; imani ya uongo |
| Siku za michezo za mkono | Hujenga ujuzi na uaminifu; gharama ndogo ya zana | Si za mara kwa mara; matokeo yanaweza kurudi nyuma bila kuonekana |
| Machafuko endelevu ya kiotomatiki | Hukamata kurudi nyuma haraka; inapanuka | Inahitaji zana zilizokomaa na uonekanaji kwanza |
| Eneo pana la mlipuko | Hufichua udhaifu mkubwa wa kimfumo | Hatari kubwa; kosa linakuwa tukio |
| Eneo finyu la mlipuko | Salama na linaloweza kudhibitiwa | Linaweza kukosa kushindwa kunakojitokeza kuvuka huduma |
Mvutano wa kati ni kati ya uhalisia na usalama. Matokeo unayoyataka zaidi yanatoka uzalishaji, kwa sababu ndipo pekee mfumo wako unakabiliwa na trafiki halisi, data halisi, na ukubwa halisi, hata hivyo uzalishaji ndipo hasa jaribio lililoharibika linaumiza watumiaji. Suluhisho si kuchagua upande mmoja. Ni kupata haki yako ya kuelekea uzalishaji hatua kwa hatua: thibitisha masharti yako ya awali, zoeza kwenye maandalizi, kisha endesha majaribio madogo, yaliyodhibitiwa vizuri kwenye uzalishaji yenye masharti ya kusitisha yaliyofungwa kwenye vipimo hai, na upanue wigo tu ushahidi unapojilimbikiza. Mvutano mwingine unaojirudia, wa mkono dhidi ya wa kiotomatiki, hutatuliwa kwa njia ileile kwa muda. Anza kwa mkono kujenga uelewa na uaminifu, kisha otomatisha majaribio ambayo umeyategemea, ili ustahimilivu uliouthibitisha mara moja ubaki umethibitishwa.
Maswali ya kujadili na timu yako
Je, tuko tayari kweli kuendesha majaribio ya machafuko, na tungejuaje? Ni jambo la kuvutia kuanza kuingiza makosa kwa sababu linasikika la kisasa, lakini uhandisi wa machafuko kwenye mfumo usioonekana usio na fasili wazi ya afya wala kurudisha nyuma kwa haraka ni kukatika tu ulikosababisha mwenyewe. Leta ushahidi wa uaminifu kwenye mjadala huu: unaweza kuona viwango vya mafanikio ya maombi na ucheleweshaji kwa wakati halisi, mna fasili iliyokubaliwa ya hali thabiti, na mnaweza kusitisha jaribio na kupona ndani ya sekunde? Kwa timu kubwa, jibu mara nyingi hutofautiana kwa huduma, kwa hiyo tokeo lenye manufaa ni kiwango cha utayari ambacho huduma lazima ikivuke kabla ya kustahiki majaribio. Katika mazingira yanayodhibitiwa kiwango hicho cha utayari kinafanya kazi pia kama kidhibiti mnachoweza kumwonyesha mkaguzi. Ikiwa jibu la uaminifu ni kwamba hamko tayari, kazi yenye thamani zaidi ya machafuko unayoweza kufanya robo hii ni kujenga uonekanaji na uwezo wa kurudisha nyuma unaokufanya uwe tayari.
Sera yetu ya eneo la mlipuko ni ipi, na nani ana mamlaka ya kusimamisha jaribio? Kila jaribio la machafuko hubeba hatari fulani kwa watumiaji halisi, na tofauti kati ya tokeo lenye thamani na tukio ulilosababisha ni jinsi ulivyolidhibiti kwa ukali. Zungumza kupitia mipaka halisi: sehemu gani ya trafiki, mifano mingapi, mazingira yapi, nyakati gani za siku, na vizingiti vipi vya vipimo vinavyositisha uendeshaji kiotomatiki. Amua mapema nani anatazama kila jaribio na nani ana swichi ya kuzima ya kitendo kimoja, kwa sababu jaribio ambalo hakuna anayeweza kulisimamisha haraka halijadhibitiwa. Kwa shirika kubwa sera hii ndiyo inayoziruhusu timu nyingi kujaribu bila yeyote kati yao kuangusha kwa bahati mbaya utegemezi wa pamoja. Jibu linapaswa kuandikwa, kukubaliwa na timu ambazo huduma zao mnaweza kuziathiri, na kuchukuliwa kama sharti la awali la kuendesha chochote kwenye uzalishaji.
Ni taratibu zipi za ustahimilivu tunaamini zinatulinda, na je, tumewahi kuzijaribu kweli? Mifumo mingi imejaa muda wa kuisha, majaribio tena, vivunja mzunguko, kache, na njia za kuhamisha kwa kushindwa zilizosanidiwa mara moja na hazijawahi kutumika chini ya kushindwa zilizopo kwa ajili yake. Tengeneza orodha ya taratibu mnazozitegemea, kisha uulize, kwa kila moja, lini ilithibitishwa mwisho kufanya kazi chini ya kosa halisi lililoingizwa. Mazingatio yanayoshindana ni muda: kuthibitisha kila utaratibu kunagharimu juhudi ya kihandisi, na daima kuna tarehe ya mwisho ya kipengele. Leta ushahidi wa kupinga pingamizi hilo, yaani gharama ya kukatika kwa zamani ambako kivunja mzunguko kinachofanya kazi au muda sahihi wa kuisha kungedhibiti. Jibu linapaswa kugeuza orodha ya kufariji ya ulinzi uliodhaniwa kuwa mrundikano uliopewa kipaumbele wa majaribio, ukianza na taratibu ambazo kushindwa kwake kungeumiza zaidi.
Nini lazima kiwe kweli kabla hatujaendesha jaribio kwenye uzalishaji badala ya maandalizi, na huduma zipi zimepata haki hiyo leo? Matokeo mnayoyataka zaidi yanatoka uzalishaji, kwa sababu ndipo pekee mfumo wenu unakutana na trafiki halisi, data halisi, na ukubwa halisi, lakini uzalishaji pia ndio mahali pekee ambapo jaribio lililoharibika linaumiza watumiaji halisi. Kwa timu kubwa uhalisia wa uaminifu ni kwamba huduma tofauti ziko katika ngazi tofauti za utayari, kwa hiyo kanuni ya blanketi ya “hakuna machafuko ya uzalishaji” inapoteza kujifunza kwenu bora huku ya blanketi ya “ndiyo” ikialika kukatika mnakosababisha wenyewe. Leta ushahidi kwa kila huduma: ubora wa uonekanaji wake, kama hali thabiti imefafanuliwa na inaweza kutahadharishwa, kurudisha nyuma ni kwa haraka kiasi gani, na rekodi ya majaribio safi ya maandalizi yatakayohalalisha kuipandisha daraja. Katika mazingira ya mashirika makubwa na serikali, funga lango la uzalishaji na kidhibiti kilichoandikwa kinachotaja nani anaidhinisha kupandishwa daraja na masharti gani ya kusitisha yamefungwa kwenye vipimo hai, ili mkaguzi aone uamuzi wa makusudi, uliothibitishwa badala ya timu inayobuni na watumiaji halisi.
Jaribio la machafuko linapofichua udhaifu, matokeo yanaenda wapi, na tunazuiaje yasioze bila kuguswa? Programu inayogundua udhaifu lakini haurekebishi kamwe ni mbaya kuliko kutokuwa na programu, kwa sababu inachoma juhudi, inamomonyoa uaminifu, na kuwafundisha watu majaribio ni maigizo. Shinikizo linaloshindana ni daima ramani ya njia ya vipengele: marekebisho ya ustahimilivu mara chache huhisi ya dharura kama toleo linalofuata hadi kukatika ambako yangezuia kufika kweli. Leta hali ya sasa ya mrundikano wenu wa ustahimilivu kwenye mjadala: matokeo mangapi ya machafuko ni wazi, la zamani zaidi lina umri gani, na kama matokeo kutoka majaribio, mazoezi ya kupona kutoka maafa, na mapitio ya matukio yanatiririka kwenye foleni moja ya pamoja au yanatawanyika kuvuka timu. Kubaliani nani anamiliki kila marekebisho na nani anaendesha jaribio la kufuatilia linalothibitisha yanashikilia. Kwa shirika kubwa au linalodhibitiwa, taja jukwaa linalopitia mrundikano kwa mzunguko uliowekwa na lenye mamlaka ya kutanguliza marekebisho ya ustahimilivu kuliko kipengele, kwa sababu tokeo ambalo hakuna anayewajibika kulifunga ni hatari mliyoiandika tu badala ya kuiondoa.
Tuko tayari kuotomatisha majaribio yetu yoyote kuwa uthibitisho endelevu, na yapi hasa? Siku za michezo za mara kwa mara hupata udhaifu, lakini mifumo hubadilika kila siku na marekebisho ya robo iliyopita yanaweza kurudi nyuma kimyakimya, kwa hiyo hali ya mwisho iliyokomaa ni seti iliyopangwa ya majaribio yanayoendesha kiotomatiki na kukamata kurudi nyuma ndani ya siku. Hatari ni kuotomatisha mapema mno: machafuko endelevu yaliyowekwa juu ya mfumo usiokomaa wenye uonekanaji dhaifu huzalisha matukio kwa kasi kuliko ufahamu. Leta orodha ya majaribio mliyoyaendesha kwa mkono mara nyingi vya kutosha kuyaamini kikamilifu, vizuizi vya eneo la mlipuko na masharti ya kusitisha yatakayoyatawala bila usimamizi, na ufuatiliaji utakaokamata uendeshaji wa kiotomatiki ukienda vibaya saa tisa usiku wakati hakuna anayetazama. Kwa biashara kubwa au wakala wa umma, pima uchunguzi ulioongezwa ambao uingizaji wa makosa usio na usimamizi unaalika: idhini ya usimamizi wa mabadiliko, nyayo za ukaguzi ambazo kila uendeshaji wa kiotomatiki lazima uziache, na uwajibikaji wazi kwa jaribio lililopangwa linalopatana na tukio halisi. Otomatisha tu majaribio mnayoyaelewa tayari, na weka mengine ya mkono hadi yapate uaminifu uleule.
Mtazamo wa sekta
Kampuni changa. Kasi na kuishi vinatawala, kwa hiyo usitumie chochote kwenye jukwaa la machafuko. Endesha siku moja ya mchezo ya dakika tisini kwenye maandalizi dhidi ya utegemezi mmoja ambao kushindwa kwake kungekuua kweli, kwa kawaida malipo, uthibitishaji, au hifadhi yako kuu ya data. Ingiza kosa kwa wakala rahisi au mchakato ulioviuliwa, tazama kinachovunjika, rekebisha muda wa kuisha au mbadala uliokosekana, na usonge mbele. Hoja nzima ni kukamata kukatika dhahiri unakosababisha mwenyewe kwa bei nafuu kabla mteja hajafanya, si kujenga nidhamu usiyoweza kuiajiria.
Biashara ndogo. Bila mtaalamu wa kutegemewa na bajeti finyu, chukulia majaribio ya ustahimilivu kama zoezi la mara kwa mara, la makusudi badala ya programu unayoiajiria. Egemea vipengele vya kuingiza makosa ambavyo mtoa huduma wako wa wingu au zana zinazosimamiwa tayari zinajumuisha badala ya kununua jukwaa maalumu, na ulenge majaribio kwenye utegemezi mchache ambao mteja angeugundua. Liweke kama bima: alasiri inayotumika kuthibitisha nakala zako rudufu zinarejeshwa na malipo yako yanashuka kwa upole ni nafuu zaidi sana kuliko kukatika kunakothibitisha hazifanyi.
Biashara kubwa. Tatizo ni kuratibu timu nyingi dhidi ya utegemezi wa pamoja kwa ukubwa, kwa hiyo sawazisha kiwango cha utayari, sera ya eneo la mlipuko, na uunganishaji wa masharti ya kusitisha ambao kila timu lazima ivuke kabla ya kuendesha kwenye uzalishaji. Elekeza matokeo ya machafuko, mazoezi ya kupona kutoka maafa, na mapitio ya matukio kwenye mrundikano mmoja wa ustahimilivu wenye umiliki wazi, na utumie siku za michezo za kila robo mwaka pamoja na seti iliyopangwa ya majaribio ya kiotomatiki kutimiza matarajio ya ustahimilivu wa uendeshaji kwa ushahidi. Tawala nani anaweza kuathiri huduma ya pamoja ili jaribio la timu moja lisiangushe miundombinu ambayo wengine wanaitegemea.
Serikali. Kanuni za ununuzi, wajibu wa uwazi, na uwajibikaji wa umma huumba kazi. Maagizo ya mwendelezo wa shughuli mara nyingi yanahitaji mazoezi ya mara kwa mara hata hivyo, kwa hiyo yaendeshe kama siku za michezo hai zinazozaa matokeo halisi badala ya faili ambayo hakuna anayeifungua, na uweke nyayo za ukaguzi za kila jaribio, eneo lake la mlipuko, na matokeo yake. Pale zana za kuingiza makosa zinaponunuliwa, dai zitoshe ndani ya kanuni za usalama na ushughulikiaji wa data, na uhifadhi majaribio ya uzalishaji kwenye huduma zinazowakabili raia kwa madirisha yaliyodhibitiwa kwa ukali, yaliyoidhinishwa. Ushahidi ambao programu ya machafuko inazalisha ndio hasa chombo cha usimamizi au mkaguzi anachotarajia kuona.
Mifano
Kampuni changa. Kampuni changa ya watu kumi na watano inaendesha programu ya wavuti kwenye huduma chache na inategemea API ya malipo ya mtu wa tatu. Hakuna aliye na muda wa jukwaa la machafuko, kwa hiyo timu inaendesha siku ya mchezo ya dakika tisini kwenye maandalizi. Wanaunda dhana: API ya malipo ikianza kurudisha makosa, malipo yanapaswa kuonyesha ujumbe wazi wa kujaribu tena na kuweka oda kwenye foleni badala ya kuanguka. Wanaingiza majibu ya 500 kwa wakala rahisi, na kugundua kiolesura cha mbele kinaning’inia milele kwa sababu mwito wa mteja hauna muda wa kuisha. Wanaongeza muda wa kuisha na mbadala wa kirafiki, wanaendesha jaribio tena kuthibitisha marekebisho, na kuandika dokezo la aya mbili kwenye waraka wa pamoja. Gharama jumla: alasiri moja na hitilafu moja halisi sana iliyokamatwa kabla mteja hajaifikia.
Biashara kubwa. Benki ya kimataifa lazima ionyeshe ustahimilivu wa uendeshaji kwa wadhibiti dhidi ya hali kali-lakini-zinazowezekana. Timu yake ya kutegemewa inaendesha programu ya siku za michezo za kila robo mwaka pamoja na seti ya majaribio ya kiotomatiki kwenye uzalishaji. Hali moja inahamisha hifadhidata ya msingi ya miamala hadi kusubiri wakati wa dirisha la trafiki ndogo, kwa eneo la mlipuko lililodhibitiwa kwa ukali na masharti ya kusitisha yaliyofungwa kwa kiwango cha mafanikio ya miamala. Uendeshaji wa kwanza unafichua kwamba huduma ya maridhiano ya chini ya mkondo ina sera ya majaribio tena bila kurudi nyuma, ikizalisha ongezeko la mzigo linalochelewesha kupona zaidi ya lengo la muda wa kupona katika mpango wa kupona kutoka maafa (sura ya 9.5). Tokeo linaingia kwenye mrundikano ule ule kama mapitio ya matukio, sera ya majaribio tena inarekebishwa kwa kurudi nyuma kwa kielelezo (exponential backoff), na jaribio la kufuatilia linathibitisha kuhamisha kwa kushindwa sasa kunakamilika ndani ya lengo. Zoezi zima linakuwa ushahidi kwa mdhibiti.
Serikali. Wakala wa kitaifa unaoendesha tovuti ya mafao inayowakabili raia unahitajika kudumisha mwendelezo wa shughuli kupitia usumbufu. Badala ya kuchukulia mpango wake wa mwendelezo kama faili ambayo hakuna anayeifungua, wakala unaendesha zoezi la kila mwaka la mwendelezo kama siku ya mchezo hai. Timu inaiga kupoteza kituo cha msingi cha data na kupitia kuhamisha kwa kushindwa hadi tovuti ya pili, huku ikiingiza kando ucheleweshaji kwenye utegemezi wa uthibitishaji wa utambulisho kuona kama tovuti inashuka kwa upole. Wanajifunza kwamba pengo la ufuatiliaji lisilojaribiwa liliiacha timu ya simu ya dharura kipofu kwa huduma ya utambulisho kupungua kasi, kwa hiyo tahadhari ziliwaka kwa kuchelewa. Wakala unafunga pengo la uonekanaji, unasasisha vitabu vyake vya mwongozo, na kupanga zoezi lile lile kwa mwaka unaofuata, ukigeuza sharti la uzingatiaji kuwa ustahimilivu halisi, uliojaribiwa kwa huduma muhimu ya umma.
Kesi ya biashara: sababu, ROI, na TCO
Faida ya uhandisi wa machafuko inatokana na kukatika ambako hakutokei kamwe. Kukatika kubwa kwa huduma kubwa kunaweza kugharimu popote kutoka makumi ya maelfu hadi mamilioni katika mapato yaliyopotea, adhabu za kisheria, kazi ya urekebishaji, na uharibifu wa sifa unaodumu muda mrefu baada ya huduma kurejeshwa. Majaribio ya machafuko hubadilisha mshangao huo usiotabirika, ghali kuwa matokeo ya bei nafuu, yaliyopangwa mnayoyarekebisha kwa ratiba yenu wenyewe wahandisi wakitazama na kurudisha nyuma tayari. Kupata muda wa kuisha uliovunjika wakati wa siku ya mchezo iliyodhibitiwa kunagharimu alasiri. Kuupata wakati wa tukio halisi kunagharimu kukatika, haraka ya kila mtu, na uaminifu wa watumiaji wenu. Hesabu inapendelea siku ya mchezo kwa tofauti kubwa.
Jumla ya gharama ya umiliki ni ndogo masharti ya awali yakishakuwepo, kwa sababu uhandisi wa machafuko hutumia tena uwekezaji wa uonekanaji, tahadhari, na kurudisha nyuma ambao mnahitaji hata hivyo. Gharama za uaminifu ni muda wa kihandisi wa kuendesha majaribio, zana fulani za kuingiza makosa na kudhibiti eneo la mlipuko, na kazi ya kitamaduni ya kuwafanya viongozi wawe na raha na kuingiza kushindwa kwa makusudi. Ya mwisho ndiyo kizuizi halisi, na njia ya kupita ni kuanza kwenye maandalizi, kuonyesha matokeo yanayohusiana na fedha au hatari, na kuacha majaribio machache ya uzalishaji yaliyodhibitiwa yajenge uaminifu. Kutoa hoja kwa uongozi, weka uhandisi wa machafuko kama bima unayoweza kuipima: wasilisha gharama ya matukio ya hivi karibuni, onyesha yapi jaribio la ustahimilivu lingeyakamata, na pendekeza programu inayoanza kidogo na kupanuka tu inapojithibitisha. Katika mazingira ya serikali na yanayodhibitiwa, ongeza pembe ya uzingatiaji, kwa sababu majaribio ya ustahimilivu wa uendeshaji na mazoezi ya mwendelezo yanatarajiwa zaidi na zaidi, na programu ya machafuko ndiyo jinsi mnavyotimiza matarajio hayo kwa ushahidi badala ya makaratasi.
Mifumo mibaya na mitego
- Machafuko bila uonekanaji. Kuingiza makosa kwenye mfumo usioweza kuuona ni kukisia kwa hatua za ziada; utasababisha madhara na hutajifunza chochote.
- Hakuna fasili ya hali thabiti. Bila kipimo kilichokubaliwa cha afya, huwezi kusema kama jaribio lilifichua tatizo au lilisababisha.
- Hakuna dhana. Kuvunja vitu kwa nasibu si uhandisi wa machafuko; ni uharibifu wenye jina la kuvutia na bila matokeo.
- Eneo la mlipuko lisilodhibitiwa. Kuruka majaribio madogo, salama na kwenda moja kwa moja kwenye kushindwa kwa uzalishaji mzima kunageuza jaribio kuwa kukatika kunakosababisha mwenyewe.
- Hakuna njia ya kusitisha. Jaribio usiloweza kulisimamisha mara moja si jaribio; ni tukio linalosubiri kichochezi.
- Kuotomatisha mapema mno. Machafuko endelevu juu ya mfumo usiokomaa huzalisha matukio kwa kasi kuliko ufahamu.
- Matokeo yasiyoenda popote. Kugundua udhaifu na kutourekebisha kamwe kunapoteza zoezi na kumomonyoa uaminifu katika programu nzima.
- Lawama baada ya jaribio baya. Kumwadhibu mhandisi aliyeendesha jaribio lililofichua kasoro halisi kunahakikisha hakuna atakayeendesha linalofuata.
Kielelezo cha ukomavu
- Ngazi ya 1, Kuanzisha: Ustahimilivu unadhaniwa, haujajaribiwa. Kushindwa kunagunduliwa kwenye uzalishaji wakati wa matukio halisi. Hakuna siku za michezo, hakuna uingizaji wa makosa, na mara nyingi hakuna fasili wazi ya afya inavyoonekana. Timu hujifunza udhaifu wake kwa njia ngumu, kukatika kimoja kwa wakati.
- Ngazi ya 2, Kuendeleza: Timu inaendesha siku za michezo za mara kwa mara, kwa kawaida kwenye maandalizi, zenye hali iliyofafanuliwa na dhana. Hali thabiti imefafanuliwa kwa huduma chache kuu na uonekanaji wa msingi upo. Matokeo yananaswa na baadhi hurekebishwa, lakini mazoea hayana uthabiti kuvuka timu na yanategemea mabingwa binafsi badala ya mbinu iliyoimarika.
- Ngazi ya 3, Kusawazisha: Majaribio ya machafuko ni mazoea yaliyoandikwa, ya shirika zima yenye sera za eneo la mlipuko zinazotekelezwa, masharti ya kusitisha, na vigezo vya utayari ambavyo huduma lazima ivuke kabla ya kujaribu kwenye uzalishaji. Majaribio yanaendesha kwenye uzalishaji chini ya hali zilizodhibitiwa, matokeo yanatiririka kwenye mrundikano wa ustahimilivu wa pamoja kando ya mapitio ya matukio na mazoezi ya kupona kutoka maafa, na taratibu za ustahimilivu zinathibitishwa badala ya kudhaniwa. Kila timu inafuata kitabu kimoja cha mchezo.
- Ngazi ya 4, Kusimamia: Programu inapimwa na kudhibitiwa kwa data dhidi ya vipimo vya msingi. Mnafuatilia ufunikaji wa ustahimilivu (huduma zipi muhimu na taratibu zipi, kama muda wa kuisha, majaribio tena, vivunja mzunguko, na kuhamisha kwa kushindwa, zimethibitishwa chini ya kosa halisi lililoingizwa na lini mwisho), kiwango ambacho majaribio yanafichua matokeo, muda wa wastani wa kufunga tokeo la ustahimilivu, na mara ngapi utaratibu uliothibitishwa hapo awali unarudi nyuma. Vipimo hivi vinapitiwa kwa mzunguko uliowekwa, kupandishwa daraja hadi uzalishaji kunawekewa lango kwa ushahidi badala ya maoni, na majaribio yanapewa kipaumbele kwa hatari iliyopimwa ya taratibu ambazo bado hazijathibitishwa.
- Ngazi ya 5, Kuratibu: Seti iliyopangwa ya majaribio inaendesha mfululizo na kiotomatiki, ikikamata kurudi nyuma ndani ya siku, na programu inajirekebisha mfumo na picha yake ya hatari inapobadilika. Uhandisi wa machafuko umeunganishwa kuvuka shirika na mabomba ya utoaji, kujifunza kutokana na matukio, na majaribio ya kupona kutoka maafa, kwa hiyo huduma mpya hurithi uthibitisho wa ustahimilivu kwa chaguo-msingi. Ustahimilivu ni sifa inayothibitishwa mfululizo ya mfumo, na uongozi unachukulia programu kama usimamizi wa kawaida wa hatari unaoboreshwa kwa ushahidi badala ya mpango maalumu.
Mawazo ya kujadili
- Mnaamuaje huduma ipi katika shirika lenu inapata haki ya kuendesha majaribio ya machafuko kwenye uzalishaji kwanza, na nini lazima kiwe kweli kabla yake?
- Jaribio la machafuko linapofichua udhaifu mkubwa, nani anamiliki marekebisho, na mnazuiaje tokeo hilo lisikae bila kuguswa kwenye mrundikano?
- Mstari uko wapi kati ya jaribio la machafuko, zoezi la kupona kutoka maafa, na siku ya mchezo katika muktadha wenu, na je, tofauti hiyo hata ni muhimu kwa jinsi mnavyoyapanga?
- Mngemshawishije mtendaji mwenye mashaka kwamba kuingiza kushindwa kwa makusudi kwenye uzalishaji ni salama zaidi kuliko hali ya sasa ya kusubiri kukatika halisi?
- Jaribio dogo zaidi, lenye thamani zaidi la kwanza ambalo timu yenu inaweza kuendesha mwezi ujao ni lipi, na nini kingewazuia kulifanya?
- Majaribio ya ustahimilivu yanapaswa kutofautianaje kati ya huduma ya umma inayowakabili raia yenye agizo la mwendelezo na zana ya ndani ya biashara kubwa yenye watumiaji wachache?
Mambo muhimu ya kukumbuka
- Uhandisi wa machafuko ni majaribio yenye nidhamu, yanayoendeshwa na dhana ya kujenga imani katika ustahimilivu, si kuvunja kwa nasibu.
- Weka uonekanaji, fasili ya hali thabiti, na kurudisha nyuma kwa haraka kabla ya kuingiza kosa lolote.
- Ingiza makosa halisi (ucheleweshaji, makosa, uchovu wa rasilimali, kushindwa kwa utegemezi) na uyatumie kuthibitisha kwamba muda wa kuisha, majaribio tena, vivunja mzunguko, na kuhamisha kwa kushindwa vinafanya kazi kweli.
- Anza na mazoezi ya mezani na siku za michezo, dhibiti eneo la mlipuko kwa makusudi, na upate haki yako ya kuelekea uzalishaji na uotomatishaji.
- Unganisha majaribio na majaribio ya kupona kutoka maafa (sura ya 9.5) na kujifunza kutokana na matukio (sura ya 9.3) ili matokeo yajilimbikize kuwa mrundikano mmoja wa ustahimilivu.
- Chukulia matokeo bila lawama na uyarekebishe; jaribio ambalo somo lake halishughulikiwi ni baya kuliko kutokuwa na jaribio kabisa.
Marejeo na usomaji zaidi
- Casey Rosenthal, Nora Jones, Chaos Engineering: System Resiliency in Practice
- Russ Miles, Learning Chaos Engineering: Discovering and Overcoming System Weaknesses Through Experimentation
- Mikolaj Pawlikowski, Chaos Engineering: Crash Test Your Applications
- Ali Basiri et al., Chaos Engineering (IEEE Software, 2016)
- Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy, Site Reliability Engineering: How Google Runs Production Systems
- Michael T. Nygard, Release It! Design and Deploy Production-Ready Software
- Principles of Chaos Engineering, principlesofchaos.org