2.15 Utatuzi wa hitilafu na kutatua matatizo
Muhtasari na msukumo
Utatuzi wa hitilafu ni kazi yenye nidhamu ya kugundua kwa nini mfumo unafanya kitu ambacho haukupaswa kufanya, na kutatua matatizo ni ujuzi uleule unaoelekezwa kwa mfumo wa uzalishaji unaoendesha chini ya shinikizo la muda. Yote mawili ni mbinu ya kisayansi inayotumika kwa kasoro: unaona tabia ya kushangaza, unaunda dhana kuhusu chanzo chake, unabuni jaribio ambalo lingethibitisha au kukanusha, na unaacha ushahidi, si hisia zako, ukuambie nini cha kubadilisha. Ukifanywa hivi, utatuzi ni ujuzi wa kihandisi unaoweza kujifunzwa na kufundishwa. Ukifanywa kama hadithi za kale, unageuka ushirikina: kubadilisha mistari bila mpangilio, kuanzisha upya seva, na kutumaini.
Kwa timu kubwa, tofauti ni ghali. Kasoro moja ngumu inaweza kuvuta wahandisi kuvuka huduma kadhaa, kutumia saa za zamu, na kukwamisha toleo. Kila mtu anapotatua kwa hisia, juhudi hiyo haijumlishwi, kwa sababu hakuna anayeweza kuzalisha upya wala kueleza yale ambayo wengine walijaribu. Timu inaposhiriki mbinu (zalisha upya kwanza, tenga kwa utafutaji, nasa hitilafu katika jaribio linalofeli, kisha rekebisha), juhudi hiyo hiyo inageuka mchakato unaorudiwa na safu ya majaribio ya kurudi nyuma inayokua. Utatuzi unaunganishwa kwa karibu na mkakati wa majaribio (sura ya 2.4), ubora wa programu (sura ya 2.11), na tabia za ujenzi (sura ya 2.9) zinazofanya msimbo uweze kutambuliwa tangu mwanzo.
Katika mazingira ya mashirika makubwa na ya serikali, dau hupanda. Kasoro za mashirika makubwa huvuka mipaka ya huduma na timu, kwa hiyo mtu anayeona dalili mara chache ndiye anayemiliki chanzo. Mifumo ya serikali huongeza vikwazo ambavyo wahandisi wengi hawakutani navyo kamwe: mazingira yaliyotengwa au yenye vikwazo ambapo huwezi kuambatisha kitatuzi kwenye uzalishaji, ujenzi unaoweza kuzalishwa upya unaopaswa kutambuliwa kutoka vitu vilivyotengenezwa, na njia za ukaguzi zinazopaswa kurekodi ulichobadilisha na kwa nini. Katika yote matatu, lengo ni lilelile: badilisha kubahatisha na ushahidi.
Kanuni kuu
- Zalisha upya kabla ya kuunda nadharia. Hitilafu usiyoweza kuichochea kwa mahitaji ni uvumi, si kasoro.
- Utatuzi ni kujaribu dhana. Taja unachoamini, kisha ubuni jaribio la bei nafuu zaidi ambalo lingeweza kukuthibitisha kuwa umekosea.
- Soma kosa na ufuatiliaji wa safu kwanza. Mfumo kwa kawaida hukuambia ulivunjika wapi kabla hujabadilisha mstari.
- Tafuta katika nafasi ya tatizo, usiichanganue. Gawanya eneo linalotiliwa shaka kwa nusu kila hatua badala ya kusoma kutoka juu hadi chini.
- Punguza hadi kiwango cha chini. Vua kesi hadi kichocheo cha msingi tu kibaki.
- Badiliko moja kwa wakati. Marekebisho ya risasi ya kutawanya huharibu ushahidi ambao ungekuambia badiliko lipi lilijalisha.
- Nasa hitilafu katika jaribio linalofeli kabla ya kurekebisha. Marekebisho yanathibitishwa tu jaribio hilo linapogeuka kijani na kubaki kijani.
- Tafuta chanzo cha msingi, si dalili iliyo karibu zaidi. Kiraka kinachoficha dalili kinaacha kasoro irudi.
Mapendekezo
Zalisha kasoro upya kwa uhakika kabla ya kubadilisha chochote
Kazi yako ya kwanza ni uzalishaji upya wa kuaminika: seti ya hatua au kesi ya kiotomatiki inayochochea hitilafu kwa mahitaji. Bila hiyo huwezi kutofautisha suluhisho halisi na bahati nasibu, kwa sababu dalili inaweza kuja na kuondoka kwa sababu ambazo hukuzidhibiti kamwe. Bainisha ingizo, mazingira, matoleo, na muda. Hitilafu ikiwa ya mara kwa mara, tafuta kigeu kilichofichika kinachoifanya ionekane (rekodi mahususi ya data, mpaka wa saa, ombi la wakati mmoja) hadi uzalishaji upya uweze kutegemewa. Uzalishaji upya wa kuaminika ndicho kitu chenye thamani zaidi katika utatuzi, kwa sababu kila kitu baada yake kinakuwa kinachopimika.
Soma kosa, kumbukumbu, na ufuatiliaji wa safu kabla ya kugusa msimbo
Kabla hujaunda nadharia moja, soma kile mfumo ulikwisha kukuambia. Ufuatiliaji wa safu (rekodi ya mnyororo wa miito wakati wa kushindwa) kwa kawaida hutaja faili, mstari, na mfuatano uliofeli. Ujumbe wa kighairi, mistari ya kumbukumbu iliyoizunguka, na thamani zilizo katika wigo hupunguza utafutaji kabla hujabadilisha chochote. Wahandisi hupoteza saa wakitunga nadharia kuhusu vyanzo ambavyo ufuatiliaji ulivikataa mstari wa kwanza. Chukulia matokeo ya kosa kama shahidi wa kwanza, yasome kwa uangalifu na kikamilifu, kisha ndipo uamue la kuchunguza.
Tenga kwa utafutaji wa mfumo wa mbili wa nafasi ya tatizo
Usichanganue msimbo kutoka juu hadi chini. Utafute. Tumia utafutaji wa mfumo wa mbili: tafuta nukta ambapo hali bado ni nzuri na nukta ambapo tayari ni mbaya, kisha angalia katikati, na urudie, ukigawanya eneo linalotiliwa shaka kwa nusu kila mara. Hii hugeuza utafutaji wa mistari elfu moja kuwa maswali kumi. Kurudi nyuma kulipotokea kwa wigo wa commit, tumia wazo lilelile kwa historia kwa kugawanya: git bisect hupitia wigo wa commit, na unaweka alama kila marekebisho kuwa mazuri au mabaya hadi litaje badiliko hasa lililoleta kasoro. Otomatisha jaribio la nzuri-au-mbaya na ugawanyaji unajiendesha wenyewe.
Punguza hadi mfano mdogo unaoweza kuzalishwa upya
Ukishaweza kuchochea hitilafu, ipunguze. Mfano mdogo unaoweza kuzalishwa upya ni ingizo dogo zaidi na njia ya msimbo ambayo bado inafeli: ondoa data, vipengele, na hatua hadi uondoaji wowote zaidi ufanye hitilafu itoweke. Kupunguza si kazi ya bure; kila kipengele unachokiondoa ni chanzo ulichokikataa, kwa hiyo kesi ndogo mara nyingi huelekeza moja kwa moja kwenye kasoro. Ingizo likiwa kubwa au lenye muundo, otomatisha upunguzaji kwa utatuzi wa delta, algoriti inayoondoa vipande vya ingizo linalofeli kwa utaratibu kupata sehemu ndogo zaidi inayofeli. Uzalishaji upya mdogo, unaojitegemea pia ni ripoti bora zaidi ya hitilafu unayoweza kumkabidhi timu nyingine.
Weka vifaa vya kupima kwa kumbukumbu, kisha utumie kitatuzi shirikishi
Linganisha zana na hitilafu. Uandishi wa kumbukumbu na ufungaji wa vifaa vya kupima unaolengwa ni bora unapohitaji kuona tabia kwa muda, kuvuka michakato, au katika mazingira usiyoweza kusimamisha. Kitatuzi shirikishi, kinachokuruhusu kuweka sehemu za kusimama, kupita mstari kwa mstari, na kukagua hali hai, ni bora unapoweza kuendesha msimbo kwa ndani na unahitaji kutazama utekelezaji mmoja kwa karibu. Ongeza vifaa vya kupima kama jaribio la makusudi lililofungwa na dhana, si kama taarifa za uchapishaji zilizotawanyika, na viondoe au uvipandishe kuwa kumbukumbu za kudumu zenye muundo hitilafu ikishatatuliwa. Katika uzalishaji, tegemea utatuzi unaoendeshwa na uonekanaji: matukio yenye ukubwa wa juu wa vikundi na ufuatiliaji uliosambazwa (sura ya 9.2) hukuruhusu kufuata ombi moja kuvuka huduma nyingi, ambayo mara nyingi ndiyo njia pekee ya kutatua mfumo uliosambazwa usioweza kuambatisha kitatuzi.
Andika jaribio linalofeli linalonasa hitilafu kabla ya kurekebisha
Kabla hujaandika marekebisho, andika jaribio linalofeli kwa sababu ya hitilafu. Hili hufanya mambo matatu kwa wakati mmoja: linathibitisha kwamba unaelewa chanzo kweli, linafafanua hasa “imerekebishwa” inamaanisha nini, na linakuwa kinga ya kudumu. Kisha fanya marekebisho na utazame jaribio likigeuka kijani. Jaribio hilo sasa linajiunga na safu yako kama kinga ya majaribio ya kurudi nyuma, ili kasoro ileile isirudi bila kuonekana. Mazoea haya yanafunga utatuzi moja kwa moja na mkakati wako wa majaribio (sura ya 2.4): kila hitilafu ngumu unayoitatua inaacha safu ikiwa imara kuliko ulivyoikuta, na jaribio lisilotegemewa linapata matibabu yaleyale (zalisha upya kutokuwa na uamuzi, kisha ujilinde dhidi yake) badala ya maelezo ya kujaribu upya.
Tafuta chanzo cha msingi, na uweke uchambuzi bila lawama
Kurekebisha dalili si kurekebisha hitilafu. Fuatilia kushindwa hadi asili yake ya kweli, ukiuliza kwa nini katika kila safu hadi ufikie chanzo unachoweza kukiondoa badala ya kukificha. Kwa kasoro zilizofika kwenye uzalishaji, endesha uchambuzi wa chanzo cha msingi usio wa lawama kama sehemu ya usimamizi wa matukio (sura ya 9.3): lenga hali za mfumo na mchakato zilizoruhusu hitilafu kusafirishwa na kunusurika, kamwe si mtu aliyeandika mstari. Lawama hupeleka taarifa chini ya ardhi, na utatuzi unaendeshwa na taarifa. Matokeo ni marekebisho na badiliko la jinsi darasa la kasoro linavyonaswa mapema zaidi wakati ujao.
Mabadilishano: faida na hasara
| Mbinu | Faida | Hasara |
|---|---|---|
| Kumbukumbu na vifaa vya kupima | Hufanya kazi kwenye uzalishaji na mifumo iliyosambazwa; hunasa tabia kwa muda | Kelele, gharama, na kuenea kwa kumbukumbu; inaweza kuvuruga hitilafu za muda |
| Kitatuzi shirikishi | Ukaguzi sahihi wa hali hai; haraka kwa hitilafu za ndani | Hakina maana kwenye uzalishaji wenye vikwazo au uliotengwa; kinaweza kuficha hitilafu za ulinganifu |
| Nidhamu ya kuzalisha upya kwanza | Hugeuza kubahatisha kuwa upimaji; huwezesha jaribio linalofeli | Polepole mapema; baadhi ya hitilafu ni ngumu kweli kuchochea |
| Utafutaji wa mfumo wa mbili na ugawanyaji | Utengaji wa haraka, hata katika msimbo usiofahamika | Unahitaji jaribio la kuaminika la nzuri-au-mbaya; ngumu hitilafu zinapoingiliana |
| Upunguzaji wa utatuzi wa delta | Hupunguza ingizo kubwa kiotomatiki hadi kichocheo | Gharama ya usanidi; inadhani kushindwa ni kwa uhakika |
| Rekebisha dalili sasa | Hurejesha huduma haraka chini ya shinikizo | Huacha chanzo cha msingi kirudi; hujilimbikiza deni |
Mvutano wa msingi ni kasi dhidi ya uhakika. Chini ya tukio la uzalishaji unaweza kuhitaji kuzuia damu kutoka kwanza (kurudisha nyuma au kiraka cha dalili) kurejesha huduma, na hilo ni halali. Kosa ni kuishia hapo. Tatua mvutano kwa kutenganisha kazi mbili: punguza makali haraka kulinda watumiaji, kisha zalisha upya, tafuta chanzo cha msingi, na uongeze kinga ya kurudi nyuma kabla hujazingatia kasoro imefungwa. Marekebisho ya dalili bila ufuatiliaji ni hitilafu uliyokubali kukutana nayo tena.
Maswali ya kujadili na timu yako
Mtu anapokutana na hitilafu ngumu, jambo la kwanza analofanya ni lipi, na je, ni kuzalisha upya au kubahatisha? Jibu la uaminifu hufichua kama timu yenu ina mbinu ya pamoja au chumba kilichojaa hadithi za kale za faragha. Waombe watu wasimulie kasoro yao ngumu ya mwisho kwa sauti: je, walipata uzalishaji upya wa kuaminika kwanza, au walianza kubadilisha msimbo na kuanzisha upya vitu? Timu inayozalisha upya kwanza inaweza kukabidhi hitilafu kati ya watu, kwa sababu uzalishaji upya husafiri; timu inayobahatisha haiwezi, kwa sababu kila jaribio haliwezi kurudiwa. Hili ni muhimu zaidi timu inapokua, kwa kuwa mtu anayeona dalili anazidi kuwa si yule anayeweza kuirekebisha. Chaguo-msingi likiwa kubahatisha, kubaliana kuzalisha upya kwanza kama kanuni na ufanye uzalishaji upya safi kuwa bei ya kuingia kwenye tiketi ya hitilafu.
Hitilafu tunazozirekebisha zinarudi, na je, tungejua zikirudi? Kasoro inayorudi ni kasoro ambayo chanzo chake cha msingi hakikuondolewa na marekebisho yake hayakulindwa kamwe na jaribio. Vuta matukio na tiketi zilizofunguliwa upya za robo yenu iliyopita na uhesabu ngapi zilikuwa marudio au binamu wa karibu wa hitilafu za awali. Kila marudio ni ushahidi kwamba timu iliziba dalili, iliruka jaribio linalofeli, au ilisimamisha uchambuzi wa chanzo cha msingi mapema mno. Suluhisho ni kanuni: hakuna hitilafu inayofungwa hadi jaribio linalofeli kwa tabia ya zamani lipite kwa mpya na lijiunge na safu. Leta hitilafu moja ya hivi karibuni inayojirudia na uulize kinga gani ingeinasa, kwa sababu kinga hiyo ndiyo mliyokosa.
Je, tunaweza kutatua mifumo yetu ya uzalishaji kabisa, kwa kuzingatia jinsi tunavyoruhusiwa kuigusa? Katika mazingira ya mashirika makubwa na hasa ya serikali, mara nyingi huwezi kuambatisha kitatuzi, huwezi kuzalisha upya kwa data halisi, na huwezi kubadilisha mfumo unaoendesha bila njia ya ukaguzi. Ikiwa mbinu yenu pekee ya utatuzi ni kitatuzi shirikishi cha ndani, mko vipofu hasa mahali hitilafu ngumu zaidi zinapoishi. Uliza ni ushahidi gani kushindwa kwa uzalishaji kunaacha nyuma kweli: kumbukumbu zenye muundo, ufuatiliaji uliosambazwa (sura ya 9.2), nakala za kiini, au vitu vya ujenzi vinavyoweza kuzalishwa upya. Amua sasa mnachopaswa kunasa kwa chaguo-msingi ili tukio la baadaye liweze kutambuliwa, kwa sababu huwezi kuongeza vifaa vya kupima kwenye kushindwa kulikokwisha tokea. Katika mazingira yanayodhibitiwa, thibitisha kwamba njia ileile pia inatimiza wajibu wenu wa ukaguzi.
Tukio la uzalishaji linapotulazimisha kuzuia damu haraka, tunahakikishaje chanzo cha msingi bado kinapatikana baadaye? Chini ya tukio, kurudisha nyuma au kiraka cha dalili ndio hatua sahihi ya kwanza kulinda watumiaji, lakini hatari ni kwamba tiketi inafungwa huduma ikirudi na kasoro ya msingi haitambuliwi kamwe. Kwa timu kubwa hapa ndipo deni hujilimbikiza bila kuonekana, kwa sababu darasa lilelile la kushindwa hujitokeza upya kwenye huduma tofauti na mhandisi tofauti wa zamu miezi baadaye. Leta matukio yenu machache ya mwisho ya ukali wa kwanza na ukague kila moja: je, uzalishaji upya, uchambuzi wa chanzo cha msingi, na kinga ya kurudi nyuma vilifuata upunguzaji makali, au hadithi iliishia “huduma imerejeshwa”? Kubaliana kanuni wazi kwamba tukio lililopunguzwa makali linabaki wazi hadi chanzo cha msingi kieleweke na kilindwe, na taja nani anamiliki ufuatiliaji huo. Katika mazingira ya mashirika makubwa na ya serikali, funga hili na mchakato wenu wa usimamizi wa matukio (sura ya 9.3) ili mapitio ya baada ya tukio yawe hatua ya lazima, inayokaguliwa badala ya fadhila inayoteleza moto unaofuata unapoanza.
Tunaweza kujenga upya kiasi gani cha kushindwa baada ya tukio, na nani aliamua tunachonasa kwa chaguo-msingi? Huwezi kuambatisha vifaa vya kupima kwenye kushindwa ambako tayari kumetokea, kwa hiyo uwezo wa kutambua tukio lolote umewekwa mapema na kumbukumbu, ufuatiliaji, vipimo, na nakala mlizochagua kutoa. Jambo linaloshindana ni gharama na kelele: matukio yenye ukubwa wa juu wa vikundi na ufuatiliaji kamili si bure, na kuandika kumbukumbu nyingi kupita kiasi huzika ishara huku kukipandisha hifadhi na, katika muktadha unaodhibitiwa, mfiduo wako wa uhifadhi wa data. Leta tukio halisi la hivi karibuni na uulize liliacha ushahidi gani, kisha fanya kazi nyuma hadi ulichotamani ungenasa na kingegharimu kiasi gani kukihifadhi. Amua kwa makusudi ni ishara zipi ziwe zimewashwa kwa chaguo-msingi dhidi ya zilizochukuliwa sampuli au za hiari, na urekodi uamuzi huo ili uwe sera, si ajali. Kwa mfumo wa shirika kubwa au serikali, ongeza nani anawajibika kwa bajeti hiyo ya uonekanaji na kama njia iliyonaswa pia inatimiza wajibu wa ukaguzi, faragha, na makazi ya data.
Tunachukulia utatuzi kama ujuzi unaofundishwa, unaopimika, au wahandisi wapya wanaufyonza kwa kuzoea? Utatuzi unaweza kujifunzwa, hata hivyo timu nyingi hazifundishi waziwazi, kwa hiyo vijana hurithi hadithi za kale zilizo karibu zaidi nao, na mbinu ya kuzalisha upya kwanza huenea bila usawa au haienei kabisa. Mvutano ni kwamba ufundishaji wa makusudi (kuoanishwa kwenye hitilafu ngumu, kuandika matokeo ya baada ya tukio, kufuatilia vipimo) hugharimu muda wa wakuu ambao daima unahisi unahitajika kwingineko. Leta namba mbili kwenye mjadala: kiwango chenu cha kasoro zinazorudiwa na muda wenu wa kutambua, kwa sababu usipoweza kuvipima huwezi kujua kama mbinu yenu inaboreka au inaoza. Fikiria kama utambulisho unajumuisha zoezi halisi la utatuzi na kama matokeo ya chanzo cha msingi yanalisha ugunduzi wa mapema kweli. Katika shirika kubwa au la umma, mazoea ya utatuzi yaliyoandikwa, yanayopimwa pia yanakuwa ushahidi wa ukali wa kihandisi ambao wakaguzi, wadhibiti, na vyombo vya usimamizi wanazidi kutarajia kuuona.
Mtazamo wa sekta
Kampuni changa. Ukiwa na wahandisi wachache na bila nafasi ya ziada, lengo lako ni kufanya hitilafu ziwe nafuu kuzalisha upya na zisiwezekane kusahaulika, si kujenga mchakato mzito. Tegemea git bisect, uzalishaji upya wa haraka wa ndani, na jaribio moja linalofeli kwa kila hitilafu iliyorekebishwa, kwa sababu tabia hiyo inagharimu dakika na inakuzuia kulipia upya kasoro ileile unapojaribu kusafirisha. Ruka uchambuzi rasmi wa baada ya tukio, lakini kamwe usiruke jaribio la kurudi nyuma: ndicho kitu kimoja kidogo vya kutosha kila wakati kumudu na chenye thamani ya kutosha kila wakati kuweka.
Biashara ndogo. Huenda huna mtaalamu maalumu wa kutegemewa au uonekanaji na bajeti ya zana ni finyu, kwa hiyo pendelea kile ambacho teknolojia yako tayari inatoa: ufuatiliaji wa safu unaosomeka, kumbukumbu zenye muundo, na ufuatiliaji uliojengwa ndani ya mifumo ya kazi na huduma zinazohifadhiwa ulizonunua. Unapotathmini jukwaa jipya, pima jinsi linavyofanya kushindwa kutambulike, kwa sababu zana ya bei nafuu inayoficha kilichoharibika inakugharimu zaidi sana kwa muda wa kubahatisha kuliko leseni ilivyokuokoa. Kuzalisha upya kwanza na badiliko moja kwa wakati ni nidhamu za bure zinazolipa haraka zaidi pale ambapo hakuna anayeweza kutoa saa za ziada.
Biashara kubwa. Hitilafu zenu ngumu zinavuka mipaka ya huduma na timu, kwa hiyo mtu anayeona dalili mara chache ndiye anayemiliki chanzo, na mbinu ya pamoja ni muhimu kuliko ujuzi wa mtu yeyote. Sawazisha kuzalisha upya kwanza, utengaji wa utafutaji wa mfumo wa mbili, jaribio linalofeli kabla ya marekebisho, na uchambuzi wa baada ya tukio usio wa lawama kuvuka timu, na uwekeze katika ufuatiliaji uliosambazwa (sura ya 9.2) ili ombi moja liweze kufuatwa kuvuka huduma. Simamia utatuzi kama uwezo unaopimwa: fuatilia kiwango cha kasoro zinazorudiwa na muda wa kutambua, na ulishe matokeo ya chanzo cha msingi kwenye ugunduzi wa mapema ili darasa lilelile la kushindwa lisizunguke ramani ya huduma zenu.
Serikali. Kanuni za ununuzi, mazingira yenye vikwazo, na uwajibikaji wa umma huumba jinsi unavyoweza kutatua kabisa. Mara nyingi huwezi kuambatisha kitatuzi kwenye uzalishaji wala kunakili data ya raia kwenye kompyuta mpakato, kwa hiyo buni kwa utambuzi kutoka kinachoruhusiwa: ujenzi unaoweza kuzalishwa upya, rekodi bandia katika eneo lililotengwa, na kumbukumbu zenye muundo na ufuatiliaji unaonaswa kwa chaguo-msingi. Rekodi kila hatua ya utambuzi na kila badiliko kwenye njia ya ukaguzi, na uhitaji wauzaji waonyeshe telemetri ya kutosha na uwezo wa kuzalisha ujenzi upya ili mchunguze kushindwa kwa kujitegemea badala ya kutegemea neno la mgavi.
Mifano
Kampuni changa. Timu ya wahandisi wanne inaendelea kuona malipo yakifeli kwa sehemu ya watumiaji, lakini kamwe katika majaribio. Badala ya kubahatisha, mhandisi mmoja anapata uzalishaji upya wa kuaminika kwa kurudia hasa mzigo wa ombi linalofeli, kisha anasoma ufuatiliaji wa safu waliokuwa wakiupuuza, unaoelekeza kwenye wito wa kuchanganua tarehe. git bisect ya haraka kuvuka commit za wiki inataja badiliko lililobadilisha maktaba ya tarehe. Wanaandika jaribio linalofeli lenye muhuri wa muda unaokosea, wanarekebisha kichanganuzi, wanatazama jaribio likigeuka kijani, na kulihifadhi kwenye safu. Uchunguzi mzima unachukua alasiri kwa sababu walizalisha upya kabla ya kuunda nadharia, na hitilafu haitarudi kamwe.
Biashara kubwa. Jukwaa la malipo linaona muda kuisha wa mara kwa mara ambao hakuna timu moja inayoweza kuueleza, kwa sababu dalili inaonekana kwenye malipo lakini chanzo kinaishi huduma tatu mbali. Wahandisi wa zamu wanatumia ufuatiliaji uliosambazwa (sura ya 9.2) kufuata ombi moja linalofeli kuvuka mipaka ya huduma na kupata wito wa chini ya mkondo unaokwama mara kwa mara chini ya mzigo wa wakati mmoja, hali ya mbio ya kawaida ambapo matokeo yanategemea muda wa bahati mbaya kati ya nyuzi. Wanaizalisha upya kwa jaribio la mzigo, wanaikamata katika jaribio la uunganishaji linalofeli, wanarekebisha ufungaji, na kuendesha uchambuzi wa baada ya tukio usio wa lawama (sura ya 9.3) unaoongeza muda wa ufuatiliaji na tahadhari ili tukio linalofuata linaswe kwa dakika, si siku.
Serikali. Wakala wa manufaa unaendesha mfumo wake wa kesi katika mazingira yaliyotengwa ambapo wahandisi hawawezi kuambatisha kitatuzi kwenye uzalishaji wala kunakili data ya raia kwenye kompyuta mpakato zao. Kasoro ya hesabu inajitokeza katika upatanisho. Timu inatatua kutoka kile mazingira yanachoruhusu: kumbukumbu zenye muundo, ujenzi unaoweza kuzalishwa upya wanaoweza kuuanzisha katika eneo lililotengwa la majaribio, na rekodi bandia zinazorudia kesi inayofeli. Kila hatua ya utambuzi inarekodiwa kwenye njia ya ukaguzi, marekebisho yanasafirishwa na jaribio linalofeli-kisha-kupita kama ushahidi, na uchambuzi wa chanzo cha msingi unalisha ukaguzi mpya wa kabla ya toleo. Kwa sababu uzalishaji upya ulitumia data bandia, hakuna rekodi ya raia iliyoondoka kwenye mpaka.
Kesi ya biashara: sababu, ROI, na TCO
Mapato ya utatuzi wenye nidhamu yanapimwa kwa saa za wahandisi zisizotumika kubahatisha na kasoro ambazo hazirudi. Hitilafu ya mara kwa mara isiyotambuliwa inaweza kutumia siku za muda wa wakuu na ongezeko la mara kwa mara la zamu; mbinu ya kuzalisha upya kwanza hugeuza hilo kuwa kazi iliyofungwa, inayoweza kukabidhiwa, na tabia ya jaribio linalofeli inakuzuia kulipishwa tena na kasoro ileile robo ijayo. Kuvuka shirika kubwa, athari ya jumla ya kutolipia upya hitilafu ileile ni kubwa, na inaboresha moja kwa moja kiwango cha kushindwa kwa mabadiliko na muda wa wastani wa kurejesha ambavyo uongozi tayari unafuatilia.
Jumla ya gharama ya umiliki hasa ni mafunzo na zana, na ni ya wastani. Unahitaji kanuni za pamoja (zalisha upya kwanza, badiliko moja kwa wakati, jaribio linalofeli kabla ya marekebisho), vitatuzi na ufuatiliaji ambavyo tayari ni vya kawaida katika mnyororo wa zana, na uwekezaji wa uonekanaji ulioelezwa katika sura ya 9.2. Gharama kubwa zaidi, iliyofichika ni mbadala: utamaduni wa ushirikina ambapo wahandisi hutumia mabadiliko ya risasi ya kutawanya, dalili zinazibwa na kurudi, na mzigo wa zamu unakua bila kikomo. Kupunguza taabu ya zamu peke yake mara nyingi kunahalalisha uwekezaji, na kesi kwa uongozi inasemwa kwa urahisi zaidi kama matukio machache yanayorudiwa na kurejesha haraka kwa gharama ya mara moja katika tabia na vifaa vya kupima.
Mifumo mibaya na mitego
- Utatuzi wa risasi ya kutawanya: kubadilisha vitu vingi kwa wakati mmoja, kwa hiyo hata marekebisho hayakufundishi chochote kuhusu chanzo.
- Kurekebisha bila kuzalisha upya: kutangaza ushindi kwenye hitilafu ambayo hukuweza kuichochea kwa mahitaji.
- Kupuuza matokeo ya kosa: kutunga nadharia kuhusu vyanzo ambavyo ufuatiliaji wa safu tayari ulivikataa.
- Kuziba dalili: kunyamazisha dalili huku chanzo cha msingi kinanusurika kurudi.
- Kuenea kwa taarifa za uchapishaji: matokeo ya utatuzi yaliyotawanyika yakiachwa kwenye msimbo, yakiongeza kelele badala ya jaribio lililofungwa na dhana.
- Kuruka jaribio la kurudi nyuma: kurekebisha hitilafu lakini kutoacha kinga, kwa hiyo inaweza kurudi kimyakimya.
- Kujaribu upya majaribio yasiyotegemewa: kuficha kutokuwa na uamuzi kwa kujaribu upya badala ya kutatua hali ya mbio ya msingi au heisenbug, hitilafu inayobadilika au kutoweka mara tu unapojaribu kuiangalia.
- Uchambuzi wa baada ya tukio unaoendeshwa na lawama: kumwadhibu mwandishi, kunakopeleka chini ya ardhi taarifa ambazo utatuzi unazitegemea.
Kielelezo cha ukomavu
- Ngazi ya 1, Kuanzisha: Utatuzi ni hadithi za kale za mtu binafsi na kuitikia. Wahandisi wanabahatisha, wanatumia mabadiliko ya risasi ya kutawanya, na wanaanzisha upya vitu. Hitilafu zinarekebishwa kwenye dalili, uzalishaji upya ni nadra, na kasoro zilezile zinarudi. Uzalishaji hautambuliki kwa shida, na hakuna anayeweza kukabidhi hitilafu kwa mwingine kwa sababu hakuna jaribio linaloweza kurudiwa.
- Ngazi ya 2, Kuendeleza: Baadhi ya wahandisi wanazalisha upya kwa uhakika, wanasoma ufuatiliaji wa safu, na kutumia vitatuzi, lakini mazoea hayana uthabiti na hutofautiana mtu hadi mtu na timu hadi timu. Kumbukumbu zipo lakini zina kelele na hazina muundo. Marekebisho wakati mwingine husafirishwa na jaribio linalofeli, mara nyingi hapana, na uchambuzi wa chanzo cha msingi hufanyika tu mtu anaposisitiza.
- Ngazi ya 3, Kusawazisha: Kuzalisha upya kwanza, utengaji wa utafutaji wa mfumo wa mbili, badiliko moja kwa wakati, na jaribio linalofeli kabla ya marekebisho ni kanuni za timu zilizoandikwa na kutekelezwa shirika zima. Ugawanyaji na upunguzaji wa utatuzi wa delta ni mazoea ya kawaida. Uzalishaji una uandishi wa kumbukumbu wenye muundo na ufuatiliaji (sura ya 9.2), na uchambuzi wa baada ya tukio usio wa lawama (sura ya 9.3) ndio jibu la kawaida kwa kila kasoro iliyotoroka.
- Ngazi ya 4, Kusimamia: Mazoea ya utatuzi yanapimwa na kudhibitiwa dhidi ya vipimo vya msingi. Kiwango cha kasoro zinazorudiwa, muda wa kutambua, hesabu ya tiketi zilizofunguliwa upya, na sehemu ya marekebisho yaliyosafirishwa na jaribio la kurudi nyuma vinafuatiliwa kwa kila timu na kupitiwa kwa ratiba. Kukamilika kwa uzalishaji upya na chanzo cha msingi kunachukuliwa kama malango badala ya nia njema, na mielekeo dhidi ya kipimo cha msingi huendesha mahali unapowekeza katika zana, mafunzo, na uonekanaji.
- Ngazi ya 5, Kuratibu: Utatuzi ni ujuzi unaofundishwa ulioungana na ubora (sura ya 2.11) na usimamizi wa matukio (sura ya 9.3), na mzunguko mzima hubadilika kila wakati. Uonekanaji umebuniwa ndani ili hitilafu nyingi za uzalishaji ziweze kutambuliwa bila kitatuzi, kila hitilafu iliyotatuliwa inaimarisha safu ya kurudi nyuma, na matokeo ya chanzo cha msingi yanalisha ugunduzi wa mapema ili madarasa ya kasoro yazuiwe badala ya kutambuliwa upya. Shirika linasawazisha upya juhudi mifumo yake na hali za kushindwa zinapobadilika, na kiwango cha kasoro zinazorudiwa kinaendelea kushuka.
Mawazo ya kujadili
- Sehemu gani ya hitilafu zenu za hivi karibuni ilizalishwa upya kwa uhakika kabla mtu yeyote hajabadilisha msimbo, na sehemu hiyo inasema nini kuhusu mbinu yenu?
- Kurudi nyuma kunapoonekana, timu yenu hutumia ugawanyaji, au inasoma msimbo kwa mkono hadi mtu auone?
- Mfumo wenu wa uzalishaji unatambulika kwa kiasi gani leo, na mngetoa nini kuwa mmenasa kuhusu kushindwa kulikokwisha tokea?
- Je, marekebisho yenu mfululizo yanasafirishwa na jaribio linalofeli-kisha-kupita, na kama sivyo, nidhamu hiyo inavunjikia wapi?
- Mnashughulikiaje majaribio yasiyotegemewa: kutatua kutokuwa na uamuzi, au kuyaficha kwa kujaribu upya?
- Je, utatuzi unafundishwa kwa makusudi kwa wahandisi wapya, au wanaachwa kufyonza hadithi za kale kwa kuzoea?
Mambo muhimu ya kukumbuka
- Utatuzi ni kujaribu dhana: zalisha upya kwa uhakika, soma kosa na ufuatiliaji wa safu, kisha tenga kwa utafutaji wa mfumo wa mbili na ugawanyaji badala ya kuchanganua.
- Punguza kushindwa hadi mfano mdogo unaoweza kuzalishwa upya, ukitumia utatuzi wa delta kwa ingizo kubwa, kwa sababu kila kipengele kilichoondolewa ni chanzo kilichokataliwa.
- Linganisha zana na hitilafu: vifaa vya kupima na ufuatiliaji kwa uzalishaji na mifumo iliyosambazwa (sura ya 9.2), vitatuzi shirikishi kwa uchunguzi wa ndani.
- Andika jaribio linalofeli linalonasa hitilafu kabla ya kurekebisha, ili marekebisho yathibitishwe na kasoro ilindwe dhidi yake milele (sura ya 2.4).
- Tafuta na uondoe chanzo cha msingi, endesha uchambuzi wa baada ya tukio usio wa lawama (sura ya 9.3), na uchukulie utatuzi kama ujuzi unaoweza kujifunzwa, si hadithi za kale.
- Badilisha kitu kimoja kwa wakati; mabadiliko ya risasi ya kutawanya na viraka vya dalili huharibu ushahidi na kuikaribisha hitilafu irudi.
Marejeo na usomaji zaidi
- David J. Agans, Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
- Andreas Zeller, Why Programs Fail: A Guide to Systematic Debugging
- Andreas Zeller and Ralf Hildebrandt, “Simplifying and Isolating Failure-Inducing Input” (the delta debugging algorithm)
- Brian W. Kernighan and Rob Pike, The Practice of Programming (chapter on debugging)
- Andrew Hunt and David Thomas, The Pragmatic Programmer (the chapters on debugging and assertions)
- Steve McConnell, Code Complete: A Practical Handbook of Software Construction (the debugging chapter)
- John Regehr, “Reducers Are Fuzzers” and related writing on test-case reduction
- Charity Majors, Liz Fong-Jones, and George Miranda, Observability Engineering (debugging production with high-cardinality telemetry and tracing)
- Betsy Beyer, Chris Jones, Jennifer Petoff, and Niall Richard Murphy, eds., Site Reliability Engineering (blameless postmortems and production debugging)