3.3 Mifumo iliyosambazwa
Muhtasari na msukumo
Mfumo uliosambazwa ni mfumo wowote ambao vipengele vyake vinaendesha kwenye zaidi ya mashine moja na kuratibu kupitia mtandao. Mara unapovuka mpaka wa mchakato kupitia mtandao, unarithi ukweli mgumu ambao haupo kabisa ndani ya mchakato mmoja. Mtandao haungeweza kutegemewa, na ucheleweshaji wake hutofautiana. Ujumbe unaweza kupotea, kurudiwa, kuchelewa, au kupangwa upya. Vipengele vya mbali hushindwa vyenyewe. Hakuna saa ya pamoja. ”Makosa ya dhana ya kompyuta iliyosambazwa” ya kawaida (mtandao unategemewa, ucheleweshaji ni sifuri, upana wa bendi hauna kikomo, topolojia haibadiliki kamwe) yanataja hasa dhana zinazosababisha kukatika. Kazi yako ni kubuni kwa hali halisi hizi tangu mwanzo, badala ya kuzigundua upya wakati wa tukio.
Kwa shirika kubwa, usambazaji si wa hiari. Mfumo wowote unaohudumia ukubwa wa kitaifa au wa dunia, unaounganisha idara nyingi, au unaohitaji upatikanaji wa juu utavuka mashine nyingi, vituo vya data, na mara nyingi kanda. Mashirika makubwa huendesha mifumo ya miamala iliyosambazwa, mabomba ya matukio, na usambazaji wa kanda nyingi. Serikali huendesha uunganishaji wa kati ya mashirika ambapo kila wakala anamiliki mifumo yake na hakuna anayedhibiti kila kitu. Hapa pengo kati ya usanifu thabiti na dhaifu linaonekana kama kukatika kwa vichwa vya habari, malipo ya manufaa yaliyokosekana, na matokeo ya udhibiti. Mbinu za sura hii (kufikiri kuhusu uthabiti, kutobadilika thamani, majaribio ya kurudia na kurudi nyuma, vivunja mzunguko, sagas, na uonekanaji uliosambazwa) ndizo ulinzi wako wa kawaida.
Sehemu ngumu zaidi ya mifumo iliyosambazwa ni kwamba kushindwa ni kwa sehemu na kwa mara kwa mara. Programu ya mashine moja ama inafanya kazi au inaanguka. Mfumo uliosambazwa unaweza kufanya kazi nusu: baadhi ya maombi yakifanikiwa, mengine yakiisha muda, na mengine yakipotea kimya, yote kwa wakati mmoja. Sura hii inalenga fikra na mifumo inayoruhusu timu kubwa kujenga mifumo inayodhoofika kwa neema na kubaki inayoeleweka chini ya kushindwa kwa sehemu.
Kanuni kuu
- Mtandao hautegemewi. Buni kila mwingiliano wa mbali ukidhani unaweza kuwa polepole, kushindwa, kurudiwa, au kupangwa upya.
- Huwezi kuwa na uthabiti kamili na upatikanaji kamili wakati wa mgawanyiko. Chagua kwa makusudi kwa kila mwingiliano (CAP/PACELC), na ukumbuke ucheleweshaji ni gharama hata pasipo mgawanyiko.
- Fanya operesheni zisizobadilika thamani. Operesheni ikiweza kurudiwa kwa usalama, ushughulikiaji mwingi wa kushindwa kwa kusambazwa unakuwa unaoweza kutawaliwa.
- Kila wito wa mbali unahitaji muda wa kuisha. Kusubiri bila kikomo hugeuza utegemezi mmoja polepole kuwa kukatika kwa mfumo mzima.
- Pendelea uthabiti wa mwisho pale biashara inaporuhusu, lakini ufanye wazi. Watumiaji na wakaguzi lazima waelewe lini wanaweza kuona data iliyopitwa na wakati.
- Tenga kushindwa. Vyumba vilivyotengwa na vivunja mzunguko huzuia kijenzi kimoja kinachoshindwa kuenea kwa vyote.
- Huwezi kutatua usichoweza kukiona. Mtiririko uliosambazwa unahitaji ufuatiliaji, vipimo, na kumbukumbu zilizohusishwa kuvuka kila kituo.
- “Utoaji mara moja tu” ni hadithi; uchakataji mara moja tu ni mafanikio ya kihandisi. Buni kwa angalau-mara-moja pamoja na kuondoa marudio.
Mapendekezo
Fikiri kuhusu uthabiti kwa CAP na PACELC
Nadharia ya CAP inasema wakati wa mgawanyiko wa mtandao mfumo lazima uchague kati ya uthabiti (kila usomaji huona uandishi wa hivi karibuni) na upatikanaji (kila ombi hupata jibu). PACELC inaongeza biashara ya pili: Else (pasipo mgawanyiko) bado unabadilishana Latency (ucheleweshaji) na Consistency (uthabiti). Usiipige muhuri kama lebo ya mfumo mzima. Iamue kwa kila operesheni. Uhamisho wa salio la benki unahitaji uthabiti mkali na utakataa badala ya kuhatarisha matumizi mara mbili. Mlisho wa kijamii au kaunta ya kutazama bidhaa unaweza kukubali kupitwa na wakati kwa kubadilishana na upatikanaji na kasi. Andika ni kielelezo kipi cha uthabiti kila mtiririko wa data unatumia (mkali, wa sababu, soma-maandishi-yako, au wa mwisho) ili hakuna anayedhania hakikisho ambalo mfumo hautoi kweli.
Jenga kutobadilika thamani, muda wa kuisha, majaribio ya kurudia, na kurudi nyuma pamoja
Chukulia mbinu hizi nne kama kifurushi kimoja. Mpe kila operesheni ya mbali muda wa kuisha, ili utegemezi uliokwama usiweze kuzuia uzi milele. Kwa kushindwa, jaribu upya, lakini kwa operesheni zilizo salama kurudiwa tu. Salama kurudiwa inamaanisha isiyobadilika thamani: mpe kila ombi ufunguo wa kipekee na mpokeaji aondoe marudio, ili “tozo kadi” iliyojaribiwa upya isitoze mara mbili. Panga nafasi kati ya majaribio kwa kurudi nyuma kwa kasi ya kipeo na mtetemo, ili uepuke mkanyagano wa kujaribu upya uliolingana unaogeuza hitilafu fupi kuwa kunyimwa huduma kulikosababishwa na wewe mwenyewe. Weka kikomo cha idadi ya majaribio na bajeti ya jumla ya muda, kwa sababu kujaribu milele kunahamisha tu kushindwa. Bila kutobadilika thamani, majaribio ya kurudia ni hatari. Bila kurudi nyuma, ni ya uharibifu.
Ongeza vivunja mzunguko na vyumba vilivyotengwa kuzuia mfululizo wa kushindwa
Kivunja mzunguko hufuatilia miito kwa utegemezi na, baada ya kizingiti cha kushindwa, “hufunguka”: hushindwa haraka kwa kipindi cha baridi badala ya kurundika maombi zaidi kwenye huduma inayohangaika, kisha “hufunguka nusu” kujaribu kupona. Hii huzuia mfululizo ambapo huduma ya chini ya mkondo polepole huchosha nyuzi za kila mpigaji hadi mfumo mzima ukwame. Vyumba vilivyotengwa hugawanya rasilimali (makundi ya nyuzi, makundi ya miunganisho) ili kujaa kwa utegemezi mmoja kusile uwezo ambao wengine wanauhitaji. Oanisha vyote viwili na kudhoofika kwa neema: utegemezi usio muhimu usipopatikana, rudisha majibu yaliyohifadhiwa au chaguo-msingi badala ya kushindwa ombi zima.
Simamia miamala iliyosambazwa kwa sagas, si two-phase commit
Kwa kawaida huwezi kushikilia muamala mmoja wa ACID (Atomicity, Consistency, Isolation, Durability) kuvuka huduma au hifadhidata nyingi. Two-phase commit iliyosambazwa ni polepole, hufunga rasilimali, na hupunguza upatikanaji. Tumia muundo wa saga badala yake. Unda muamala wa biashara kama mfululizo wa miamala ya ndani, kila mmoja ukichapisha tukio linaloanzisha unaofuata, na kitendo cha fidia kwa kila hatua kuitengua hatua ya baadaye ikishindwa. Sagas huja katika aina mbili. Uchoreaji hufanya huduma ziitikie matukio ya kila mmoja, bila kidhibiti cha kati. Uratibu hufanya mratibu wa kati aendeshe hatua, jambo rahisi zaidi kulifikiria na kulifuatilia. Sagas hukumbatia uthabiti wa mwisho: mfumo hupitia hali za kati kisha huungana. Kwa hiyo buni uzoefu wa mtumiaji na njia ya ukaguzi kuzingatia hali za “inaendelea” na “imefidiwa.”
Chukulia mara-moja-tu kama angalau-mara-moja pamoja na kuondoa marudio
Madalali wa ujumbe hawawezi kuhakikisha kweli utoaji mara moja tu kuvuka kushindwa. Wanachoweza kupata, na wewe pia, ni utoaji angalau-mara-moja pamoja na uchakataji usiobadilika thamani, unaozalisha athari za mara-moja-tu. Buni watumiaji washughulikie ujumbe uliorudiwa kwa usalama, ukitumia funguo za kutobadilika thamani au kumbukumbu ya ujumbe uliochakatwa. Jua hakikisho za mpangilio na utoaji za dalali wako kwa usahihi. Kwa mikondo, tumia vikundi vya watumiaji, vipande, na usimamizi wa offset kwa makusudi, na ufanye kuchakata upya kuwa salama, ili uweze kucheza upya mkondo baada ya kurekebisha hitilafu bila kuharibu hali ya chini ya mkondo.
Weka vifaa vya kupima kwenye mtiririko uliosambazwa mwanzo hadi mwisho
Pokea nguzo tatu za uonekanaji, zilizohusishwa kuvuka mipaka ya huduma. Sambaza kitambulisho cha ufuatiliaji/uhusiano kupitia kila kituo, ili uweze kufuata ombi moja la mtumiaji kuvuka huduma zote inazogusa (ufuatiliaji uliosambazwa). Toa vipimo vyenye muundo (asilimia za ucheleweshaji, viwango vya makosa, kujaa, uwezo wa kupitisha) kwa kila huduma na kila utegemezi. Toa kumbukumbu zenye muundo zinazobeba kitambulisho cha uhusiano. Tumia yote haya kuweka malengo ya kiwango cha huduma na kutoa tahadhari juu ya dalili ambazo watumiaji wanahisi kweli, kama kiwango cha makosa na ucheleweshaji, badala ya afya ya mashine moja moja tu. Katika mfumo uliosambazwa, uonekanaji si zana ya hiari. Ndiyo njia pekee ya kuelewa tabia chini ya kushindwa kwa sehemu.
Mabadilishano: faida na hasara
| Mbinu | Faida | Hasara / gharama |
|---|---|---|
| Uthabiti mkali | Kielelezo rahisi cha kiakili, hakuna usomaji uliopitwa na wakati | Upatikanaji wa chini wakati wa mgawanyiko, ucheleweshaji wa juu, gharama ya uratibu |
| Uthabiti wa mwisho | Upatikanaji wa juu, ucheleweshaji mdogo, unapanuka | Usomaji uliopitwa na wakati, fikra changamano, unahitaji kutatua migongano |
| Majaribio ya kurudia na kurudi nyuma | Hustahimili kushindwa kwa muda mfupi kiotomatiki | Huongeza mzigo ukitumiwa vibaya; inahitaji kutobadilika thamani na vikomo |
| Vivunja mzunguko / vyumba vilivyotengwa | Huzuia kushindwa kwa mfululizo, hushindwa haraka | Ugumu ulioongezwa, kurekebisha vizingiti, hatari ya kukatika mapema |
| Saga (dhidi ya 2PC) | Inapanuka, inapatikana, hakuna kufuli zilizosambazwa | Uthabiti wa mwisho, mantiki ya fidia, ngumu zaidi kufikiria |
Biashara kuu ni kati ya uratibu na uhuru. Kila hakikisho unalolitaka kuvuka mashine (uthabiti, mpangilio, mara-moja-tu) hugharimu ucheleweshaji, upatikanaji, au ugumu. Linahitaji mashine zikubaliane, na makubaliano juu ya mtandao usiotegemewa ni ghali. Ujuzi ni kununua tu hakikisho ambazo biashara inazihitaji kweli, operesheni kwa operesheni, na kubuni kila kitu kingine kwa kudhoofika kwa neema. Nunua uthabiti kupita kiasi na mifumo yako inakuwa polepole na dhaifu. Nunua kidogo mno na unapata uharibifu wa data wa kimya unaojitokeza kama kushindwa kwa ukaguzi miezi baadaye.
Maswali ya kujadili na timu yako
Mifumo yenu ya ustahimilivu inasafirishwa kama chaguo-msingi za jukwaa la pamoja, au kila timu inavumbua upya muda wa kuisha na majaribio ya kurudia? Sura inachukulia kutobadilika thamani, muda wa kuisha, majaribio ya kurudia yaliyofungwa, vivunja mzunguko, na ufuatiliaji kama vya bei nafuu na vya kutegemewa zaidi vikijengwa mara moja kwenye maktaba za pamoja na chaguo-msingi za jukwaa. Katika shirika kubwa, kuacha kila timu iviunde kwa mkono kunahakikisha kutokuwa na uthabiti: baadhi ya njia hujaribu upya operesheni zisizobadilika thamani, baadhi hazina muda wa kuisha, baadhi hazitoi kitambulisho cha uhusiano. Leta ushahidi kwa kukagua sampuli ya huduma na kuhesabu ngapi zinaweka muda wa kuisha wazi kwenye kila wito wa mbali na kusambaza kitambulisho cha ufuatiliaji mwanzo hadi mwisho. Namba ikiwa ndogo, suluhisho ni uwekezaji wa jukwaa, si waraka wa mafunzo. Chaguo-msingi za kawaida pia hufanya ustahimilivu ujaribike na ukaguliwe, jambo ambalo wadhibiti katika fedha na serikali wanazidi kutarajia uonyeshe.
Muda wenu wa kuisha na bajeti za kujaribu upya zinaunganika kuvuka mnyororo mzima wa miito, au ombi la kina linajaribu upya hadi kukatika? Ombi moja mara nyingi huvuka vituo vingi, na kila safu ikijaribu upya mara tatu kwa kujitegemea na muda wake wa kuisha, kushindwa kwa ndani kabisa kunazidishwa na mpigaji wa nje anasubiri zaidi sana ya kikomo chochote ambacho binadamu anaweza kuvumilia. Weka bajeti ya jumla ya muda kwa ombi linalomkabili mtumiaji na uigawanye chini ya mnyororo, ili huduma ya ndani ijue ni muda kidogo kiasi gani umebaki na ishindwe haraka badala ya kujaribu upya kuingia kwenye mkanyagano. Leta grafu yenu ya utegemezi na ufuatiliaji halisi, kisha jumlisha mchanganyiko mbaya zaidi wa muda wa kuisha na majaribio ya kurudia na ulinganishe na kile mtumiaji atakachosubiri kweli. Kurudi nyuma kwa kasi ya kipeo na mtetemo na kikomo cha jumla ya majaribio huzuia hitilafu fupi isigeuke kunyimwa huduma kulikosababishwa na wewe mwenyewe. Minyororo ya kina, inayozungumza sana ya usawazishaji ndiyo adui hapa, kwa hiyo jibu linaweza kukusukuma kuelekea mtiririko usio wa papo hapo au miruko michache.
Lini mara ya mwisho mliingiza kushindwa ambako usanifu wenu unadai kunusurika, na nini kilivunjika msichotarajia? Mifumo ya ustahimilivu ni dhana hadi uifanye mfumo ushindwe kwa makusudi: ua tukio, ongeza ucheleweshaji kwa utegemezi, angusha sehemu ya ujumbe, toa kundi mara mbili. Katika mfumo uliosambazwa kushindwa kunakovutia ni kwa sehemu na kwa mara kwa mara, kwa hiyo kivunja mzunguko au fidia ya saga inayoonekana sahihi kwenye msimbo bado inaweza kutenda vibaya chini ya muda-wa-kuisha-ambao-pengine-ulikamilika wa kweli. Leta matokeo ya siku halisi ya mchezo au uendeshaji wa kuingiza kushindwa, si waraka wa usanifu, na ubainishe tahadhari zipi zilipiga, ufuatiliaji ulichukua muda gani kupata kosa, na kama mkanyagano wowote wa kujaribu upya uliundwa. Katika sekta zinazodhibitiwa, ushahidi kwamba umejaribu kushindwa ni sehemu ya kuonyesha ustahimilivu wa uendeshaji kwa wakaguzi. Kama hamjawahi kuendesha, jaribio la kwanza linapaswa kuwa katika mazingira ya majaribio yenye eneo dogo la mlipuko na swichi ya kusitisha.
Kwa kila mtiririko mkuu wa data, je, timu inayomiliki inaweza kutaja kielelezo cha uthabiti inachotoa, na je, uchaguzi huo unalingana na kile biashara inachohitaji kweli? CAP na PACELC hulazimisha uchaguzi wa makusudi kwa kila operesheni, hata hivyo katika shirika kubwa chaguo-msingi ni kuteleza: mtiririko ulioanza kuwa wa uthabiti wa mwisho kwa kaunta ya dau la chini unatumika tena kwa kitu kinachoidhinisha malipo au kutoa ufikiaji sasa, na hakuna anayeuchunguza upya hakikisho. Mazingatio yanayoshindana ni halisi, kwa kuwa uthabiti mkali hugharimu upatikanaji wakati wa mgawanyiko na ucheleweshaji hata pasipo mgawanyiko, huku uthabiti wa mwisho ukinunua kasi kwa bei ya usomaji uliopitwa na wakati na utatuzi wa migongano unaopaswa kuubuni. Leta katalogi ya mitiririko yenu mikuu ya data, kila moja ikiwa na lebo ya kielelezo chake cha sasa (mkali, wa sababu, soma-maandishi-yako, au wa mwisho) na matokeo ya biashara ya usomaji uliopitwa na wakati au uliopotea, kisha tafuta kutolingana ambapo hakikisho ni kali au dhaifu kuliko dau linavyostahili. Katika fedha za mashirika makubwa na katika mifumo ya serikali ya manufaa au utambulisho, usomaji wa uthabiti wa mwisho nyuma ya uamuzi wenye mamlaka ni aina ya kasoro ya kimya inayojitokeza kama matokeo ya ukaguzi au kunyimwa kimakosa miezi baadaye, kwa hiyo mapitio yenyewe ni ushahidi ambao wakaguzi wataomba kuuona.
Miamala yenu ya biashara ya huduma nyingi hutenda vipi katikati, na nani anawajibika kwa fidia zinazoitengua? Kubadilisha two-phase commit kwa sagas kunamaanisha mfumo hupitia hali za kati zinazoonekana, na hatua inaweza kufanikiwa huku hatua ya baadaye ikishindwa na kuchochea kitendo cha fidia kinachoitengua. Kwa timu kubwa hili huibua maswali magumu ya umiliki: mnyororo wa idhinisha-debiti-krediti-leja mara nyingi huvuka timu kadhaa, na fidia ambayo timu moja imesahau kutekeleza huacha fedha au rekodi zisizo thabiti kabisa. Pima uchoreaji, ambapo huduma huitikia matukio ya kila mmoja bila kidhibiti cha kati na mtiririko ni mgumu kuonekana, dhidi ya uratibu, ambapo mratibu huendesha na kufuatilia hatua kwa gharama ya kijenzi cha kuendesha. Leta mchoro wa hali wa saga yenu muhimu zaidi, orodha ya vitendo vya fidia na wamiliki wake, na ushahidi kwamba hali za “inaendelea” na “imefidiwa” zinashughulikiwa katika uzoefu wa mtumiaji na njia ya ukaguzi. Katika benki na usimamizi wa kesi za sekta ya umma, wadhibiti wanatarajia uweze kujenga upya hasa kilichotokea kwa muamala ulioshindwa katikati, kwa hiyo hali ya kati isiyoundwa ni pengo la uzingatiaji, si hitilafu tu.
Watumiaji wa ujumbe wenu wananusurika utoaji uliorudiwa na uliopangwa upya, na mnaweza kuthibitisha kabla dalali hajalazimisha swali? Utoaji mara-moja-tu ni hadithi, kwa hiyo hakikisho lenu halisi ni angalau-mara-moja, na mtumiaji anayedhania kila ujumbe unafika mara moja na kwa mpangilio atachakata mara mbili siku dalali anaporudisha kundi baada ya kubadilisha. Kuvuka timu nyingi hatari hujumlika, kwa sababu mtumiaji mmoja asiyebadilika thamani kwenye mkondo wa pamoja anaweza kuharibu hali ya chini ya mkondo ambayo timu zingine zinaitegemea, na kushindwa hakuonekani hadi kucheza upya au mgawanyiko upange upya matukio. Biashara ni gharama ya kihandisi ya funguo za kutobadilika thamani, kumbukumbu ya ujumbe uliochakatwa, na ushughulikiaji wazi wa offset na vipande, ikilinganishwa na gharama ya uharibifu wa kimya. Leta orodha ya watumiaji kwenye mikondo yenu muhimu, bainisha ni nani anaondoa marudio na nani anatumaini tu, na leta matokeo ya jaribio halisi la kurudisha au kucheza upya badala ya uhakikisho kwamba inapaswa kuwa sawa. Kwa kubadilishana data kati ya mashirika ya serikali na kwa mabomba ya matukio ya mashirika makubwa, uwezo wa kucheza upya mkondo kwa usalama baada ya kurekebisha hitilafu, bila kuunda kesi au tozo zilizorudiwa, ni ulazima wa uendeshaji na kitu ambacho wakaguzi watataka kuonyeshwa.
Mtazamo wa sekta
Kampuni changa. Ukiwa na sehemu mbili au tatu zinazosonga na bila timu ya jukwaa, pinga kujenga mashine iliyosambazwa usiyoweza kuiajiria. Nunua ustahimilivu pale unaposhi kwenye SDK ambayo mtoa huduma wako wa malipo au ujumbe tayari anakupa, na utumie umakini wako adimu kwa mifumo miwili inayozuia madhara yasiyotenguka: ufunguo wa kutobadilika thamani kwenye kila wito unaohamisha fedha au kubadilisha akaunti, na muda wa kuisha pamoja na kujaribu upya kwa kikomo ili muunganisho dhaifu usitende mara mbili. Weka idadi ya miruko ya mtandao ndogo, kwa sababu kila utegemezi wa usawazishaji unaouongeza ni kitu kimoja zaidi kinachoweza kushindwa kabla hujapata mtu wa zamu wa kugundua.
Biashara ndogo. Huenda huna mtaalamu wa mifumo iliyosambazwa na bajeti ni finyu, kwa hiyo chukulia hili kama swali la kununua-si-kujenga: pendelea foleni zinazosimamiwa, hifadhidata zinazosimamiwa, na majukwaa yanayoshughulikia majaribio ya kurudia, mpangilio, na kuondoa marudio kwa ajili yako badala ya miundombinu unayopaswa kuiendesha. Weka hatari yako kwa maneno rahisi, ukijua ni operesheni zipi zingemuumiza mteja zikiendeshwa mara mbili au zikirudisha data iliyopitwa na wakati, na uwashe vipengele vya kutobadilika thamani na angalau-mara-moja ambavyo wauzaji wako tayari wanatoa. Epuka kuunganisha huduma kupitia hifadhidata ya pamoja kuigiza muamala, kwa kuwa hilo hurejesha kimyakimya tatizo gumu zaidi la kusambazwa bila zana za kulisimamia.
Biashara kubwa. Tatizo la msingi ni uthabiti kuvuka timu nyingi, kwa hiyo safirisha kutobadilika thamani, muda wa kuisha, majaribio ya kurudia yaliyofungwa, vivunja mzunguko, na ufuatiliaji uliohusishwa kama chaguo-msingi za jukwaa la pamoja badala ya kuacha kila kikundi kiviunde kwa mkono. Sawazisha jinsi vielelezo vya uthabiti na hakikisho za utoaji zinavyotangazwa kwa kila mtiririko, endesha uingizaji wa kushindwa na siku za mchezo kwa ratiba ya kawaida, na ufanye bajeti za jumla za muda ziunganike kuvuka minyororo ya kina ya miito ili huduma moja isiweze kujaribu upya jukwaa hadi kukatika. Simamia ustahimilivu kama uwezo unaopimwa wenye malengo ya kiwango cha huduma kwa dalili zinazoonekana na mtumiaji, kwa sababu kwa ukubwa wako muda mmoja wa kuisha uliokosekana unaweza kuenea kuwa kukatika kwa vichwa vya habari.
Serikali. Mifumo ya kati ya mashirika inamaanisha hakuna anayemiliki kila kitu, kwa hiyo buni kwa mipaka usiyoidhibiti: foleni za kudumu zenye utoaji angalau-mara-moja, kuondoa marudio kwenye kitambulisho thabiti cha ujumbe, na vitambulisho vya uhusiano vinavyotiririka kuvuka mistari ya mashirika ili kuwapa wakaguzi ufuatiliaji wa mwanzo hadi mwisho. Kanuni za ununuzi na uwazi zinakusukuma kuandika kielelezo cha uthabiti na hakikisho la utoaji la kila uunganishaji, na kuweka maamuzi yenye mamlaka (utambulisho, kustahiki, manufaa) kwenye usomaji wa uthabiti mkali badala ya vituo vilivyohifadhiwa kwenye kache. Chukulia ushahidi wa kushindwa kulikojaribiwa na historia ya miamala inayoweza kujengwa upya kama vitu vya kutoa, kwa kuwa ustahimilivu wa uendeshaji na uwajibikaji kwa umma ni wajibu wa kimkataba na kisheria, si fadhila za ndani.
Mifano
Kampuni changa. Kampuni changa ndogo ya fintech ina sehemu mbili tu zinazosonga zinazozungumza kwa mtandao: programu yake na mtoa huduma wa malipo wa mtu wa tatu. Hata kwa ukubwa huu inafanya kila ombi la tozo libebe ufunguo wa kutobadilika thamani na kufunga wito katika jaribio la kurudia lenye kurudi nyuma, ili jibu lililodondoshwa kwenye muunganisho dhaifu lisimtoze mteja mara mbili. Kuruka hili kunahisi nafuu siku ya kwanza, lakini tozo ya kwanza iliyorudiwa inayomfikia mtumiaji halisi inagharimu moto wa msaada, marejesho, na mchubuko wa uaminifu ambao kampuni changa haiwezi kuumudu.
Biashara kubwa. Jukwaa la kimataifa la kushiriki safari linachakata malipo ya safari kupitia saga: idhinisha kadi, debiti abiria, krediti dereva, rekodi ingizo la leja, kila moja muamala wa ndani wenye ubatilishaji wa fidia. Kila hatua hubeba ufunguo wa kutobadilika thamani, kwa hiyo majaribio ya kurudia baada ya muda wa mtandao kuisha hayamtozi mtu mara mbili. Miito kwa huduma ya alama za ulaghai iko nyuma ya kivunja mzunguko; inapodhoofika wakati wa kilele, kivunja kinafunguka na safari zinarudi kwenye alama ya tahadhari badala ya kuzuia kila safari. Mteja anapopinga safari, ufuatiliaji uliosambazwa unaruhusu wahandisi kuifuata kuvuka huduma kadhaa ndani ya sekunde.
Serikali. Huduma ya kitaifa ya utambulisho inatumiwa na mashirika mengi kwa uthibitishaji. Inatoa usomaji wa uthabiti mkali kwa ukaguzi wa hali wenye mamlaka (hupaswi kuidhinisha manufaa dhidi ya data ya utambulisho iliyopitwa na wakati), pamoja na kituo cha uthabiti wa mwisho kilichohifadhiwa kwenye kache kwa utafutaji wa kiasi cha juu usio muhimu. Kubadilishana data kati ya mashirika kunaendesha juu ya foleni ya ujumbe ya kudumu yenye utoaji angalau-mara-moja, na mtumiaji wa kila wakala anaondoa marudio kwa kitambulisho cha ujumbe, kwa hiyo rekodi iliyorudishwa haiundi kesi iliyorudiwa. Vitambulisho vya uhusiano vinatiririka kuvuka mipaka ya mashirika, vikiwapa wakaguzi ufuatiliaji wa mwanzo hadi mwisho wa jinsi data ya raia ilivyosogea kati ya idara.
Kesi ya biashara: sababu, ROI, na TCO
Nidhamu ya mifumo iliyosambazwa inanunuliwa kwa bei nafuu na kutokuwepo kwake kunalipwa kwa maafa. Gharama ya kupokea ni muda wa kihandisi wa kujenga kutobadilika thamani, muda wa kuisha, majaribio ya kurudia, vivunja mzunguko, na ufuatiliaji kwenye maktaba za pamoja na chaguo-msingi za jukwaa. Huo ni uwekezaji wa wastani, hasa wa mara moja unaonufaisha kila timu. Gharama ya kutopokea inapimwa kwa kukatika kwa kiasi kikubwa: muda mmoja wa kuisha uliokosekana unaoenea kuwa kukatika kwa jukwaa zima, njia ya malipo isiyobadilika thamani inayotoza maelfu ya wateja mara mbili, au muamala uliosambazwa bila saga unaoacha data isiyo thabiti kabisa. Kila moja ni tukio la kichwa cha habari lenye gharama ya moja kwa moja ya mapato, urekebishaji, na sifa, na katika sekta zinazodhibitiwa, faini.
Weka hoja kwa uongozi kuzunguka upatikanaji na eneo la mlipuko. Mifumo ya ustahimilivu hupunguza moja kwa moja mara ngapi na kwa muda gani matukio makali hutokea, vipimo ambavyo watendaji tayari wanavifuatilia kama muda wa kufanya kazi na muda wa wastani wa kurejesha. Uonekanaji uliosambazwa ndio kiegemeo kikubwa zaidi cha MTTR: timu zenye ufuatiliaji uliohusishwa hutatua matukio ya kuvuka huduma kwa sehemu ndogo ya muda. Kwa sababu uwezo huu unatolewa vyema kama chaguo-msingi za jukwaa la pamoja, gharama yao ya pembeni kwa kila timu ni ndogo na malipo yao ya shirika zima hujumlika. Hoja ya TCO ni rahisi: kujenga ustahimilivu ndani tangu mwanzo ni sehemu ndogo ya gharama ya kuurudisha baada ya kukatika kunakolazimisha suala.
Mifumo mibaya na mitego
- Hakuna muda wa kuisha. Utegemezi mmoja uliokwama huchosha kila uzi na kuangusha mfumo mzima.
- Kujaribu upya operesheni zisizobadilika thamani. Athari za pembeni zilizorudiwa: tozo mbili, rekodi zilizorudiwa, barua pepe mara mbili.
- Mikanyagano ya kujaribu upya. Majaribio ya kurudia yaliyolingana bila kurudi nyuma na mtetemo yanayokuza hitilafu ndogo kuwa kukatika.
- Kudhani utoaji mara-moja-tu. Kujenga watumiaji wanaovunjika kwa ujumbe uliorudiwa ambao dalali atautoa hatimaye.
- Miamala iliyosambazwa kupitia hifadhidata ya pamoja. Kuunganisha huduma kupitia hifadhidata moja kuigiza ACID, kuunda upya monolith iliyosambazwa.
- Kupuuza kushindwa kwa sehemu. Msimbo unaodhani wito wa mbali ama unafanikiwa kikamilifu au unashindwa kikamilifu, bila ushughulikiaji wa “uliisha muda lakini labda ulikamilika.”
- Hakuna vitambulisho vya uhusiano. Kutatua tukio la kuvuka huduma kwa kutafuta kumbukumbu zisizohusiana kwenye mashine kumi.
- Minyororo ya miito ya usawazishaji inayozungumza sana. Grafu za kina za utegemezi wa usawazishaji ambapo kituo kimoja polepole kinakwamisha ombi zima.
Kielelezo cha ukomavu
- Ngazi ya 1: Kuanzisha. Miito ya mbali inachukuliwa kama miito ya ndani. Muda wa kuisha haupo au ni wa kipuuzi, majaribio ya kurudia hayapo au ni ya pupa, na kushindwa kunaenea kuvuka mfumo. Hakuna mtazamo wa pamoja wa uthabiti au utoaji, na kutatua tukio la kuvuka huduma kunamaanisha kuchimba kumbukumbu za kila mashine baada ya tukio.
- Ngazi ya 2: Kuendeleza. Baadhi ya timu huongeza muda wa kuisha na majaribio ya msingi ya kurudia na kutobadilika thamani kidogo, lakini mazoea hayana uthabiti huduma hadi huduma. Kumbukumbu zimekusanywa kati lakini hazijahusishwa, kwa hiyo kufuatilia ombi kuvuka vituo ni kwa mkono. Miamala iliyosambazwa inatumainiwa kufanya kazi badala ya kuundwa, na hakikisho za uthabiti zinaishi katika vichwa vya wahandisi binafsi.
- Ngazi ya 3: Kusawazisha. Kutobadilika thamani, majaribio ya kurudia yaliyofungwa, kurudi nyuma na mtetemo, vivunja mzunguko, na vyumba vilivyotengwa ni vya kawaida kuvuka shirika kupitia maktaba za pamoja. Sagas zenye vitendo vya fidia zinashughulikia miamala ya huduma nyingi, ufuatiliaji uliosambazwa wenye vitambulisho vya uhusiano upo, na kila mtiririko mkuu wa data unaandika kielelezo chake cha uthabiti na hakikisho la utoaji. Kanuni zimeandikwa na kutekelezwa shirika zima badala ya kuachwa kwa kila timu.
- Ngazi ya 4: Kusimamia. Ustahimilivu unapimwa dhidi ya vipimo vya msingi, si kuwepo tu. Unafuatilia kiwango cha makosa, asilimia za ucheleweshaji, kujaa, na uwezo wa kupitisha kwa kila huduma na utegemezi, unatazama uwiano wa majaribio ya kurudia na viwango vya kufunguka vya vivunja mzunguko, na kuweka malengo ya kiwango cha huduma kwa dalili zinazoonekana na mtumiaji. Bajeti za jumla za muda zinathibitishwa kuunganika kuvuka minyororo ya miito, muda wa wastani wa kurejesha kwa matukio ya kuvuka huduma ni kipimo kinachofuatiliwa, na matokeo ya kuingiza kushindwa na siku za mchezo yanalisha namba zinazodhibiti kila badiliko.
- Ngazi ya 5: Kuratibu. Ustahimilivu ni chaguo-msingi la jukwaa linaloboreshwa mfululizo, lililounganishwa kuvuka shirika zima na linalojirekebisha kwa hali. Uingizaji wa kushindwa unaendeshwa mara kwa mara kwenye uzalishaji wenye maeneo madogo ya mlipuko, mifumo inadhoofika kwa neema kwa muundo, na uchaguzi wa uthabiti na utoaji unapitiwa upya mzigo na dau la biashara linapohama. Vipimo vya Ngazi ya 4 vinaendesha majibu ya kiotomatiki na mageuzi thabiti ya usanifu, kwa hiyo eneo lililosambazwa linazidi kuwa imara kwa kila tukio badala ya kunusurika tu.
Mawazo ya kujadili
- Ni operesheni zipi muhimu zenu zisizobadilika thamani kweli leo, na zipi si hivyo kimyakimya?
- Kwa kila mtiririko mkuu wa data, je, timu yenu inaweza kutaja kielelezo cha uthabiti na hakikisho la utoaji kwa kumbukumbu?
- Wapi kivunja mzunguko kingezuia kukatika kwenu kwa mfululizo wa mwisho?
- Inachukua muda gani sasa kufuatilia ombi moja linalofeli kuvuka huduma zote inazogusa?
- Ni “miamala iliyosambazwa” ipi kati ya yenu inategemea bahati, na ipi ni sagas za kweli zenye fidia?
- Dalali wenu wa ujumbe akirudisha kila ujumbe mara mbili kwa saa moja, nini kingevunjika?
Mambo muhimu ya kukumbuka
- Dhania mtandao hautegemewi na kushindwa ni kwa sehemu; buni kila mwingiliano wa mbali kwa ucheleweshaji, upotevu, urudiaji, na kupangwa upya.
- Amua uthabiti dhidi ya upatikanaji kwa kila operesheni kwa CAP/PACELC; andika kielelezo ambacho kila mtiririko unatoa.
- Kutobadilika thamani, muda wa kuisha, majaribio ya kurudia yaliyofungwa, na kurudi nyuma-na-mtetemo ni kifurushi kimoja; usipokee majaribio ya kurudia bila vitatu vingine.
- Vivunja mzunguko na vyumba vilivyotengwa hudhibiti kushindwa; sagas zenye fidia hubadilisha miamala iliyosambazwa isiyofanya kazi.
- Chukulia utoaji kama angalau-mara-moja na ufanye uchakataji usiobadilika thamani kupata athari za mara-moja-tu.
- Ufuatiliaji, vipimo, na kumbukumbu zilizohusishwa ndiyo njia pekee ya kuelewa na kuendesha mtiririko uliosambazwa.
Marejeo na usomaji zaidi
- Martin Kleppmann, Designing Data-Intensive Applications
- Andrew Tanenbaum and Maarten van Steen, Distributed Systems: Principles and Paradigms
- Michael Nygard, Release It!: Design and Deploy Production-Ready Software
- Sam Newman, Building Microservices
- Chris Richardson, Microservices Patterns (sagas, transactional messaging)
- Eric Brewer, “CAP Twelve Years Later” and Daniel Abadi on PACELC
- Leslie Lamport, “Time, Clocks, and the Ordering of Events in a Distributed System”
- Cindy Sridharan, Distributed Systems Observability
- Nassim Nicholas Taleb’s notion of antifragility (as applied by resilience-engineering literature)