3.0

Tazama kwa Kiingereza

3.0 Utangulizi wa Sehemu ya 3: Mifumo

Usanifu ni seti ya maamuzi ambayo ni ghali kutengua. Unagawanyaje mfumo katika sehemu? Sehemu hizo huzungumzaje? Data inaundwaje? Na mfumo mzima hutendaje chini ya mzigo na chini ya kushindwa? Sehemu ya 3 inahusu kufanya maamuzi hayo kwa makusudi. Katika timu ndogo, usanifu unaweza kuishi vichwani mwa watu wachache na kubadilika unapoendelea. Katika shirika kubwa (mamia ya wahandisi, timu kadhaa, mifumo itakayodumu kuliko kazi za watu wanaoijenga), usanifu unakuwa kitu kinachoweka kila mtu akiwa ameratibiwa. Ukiwa wazi, timu husonga mbele kwa kujitegemea bila kugongana. Ukiwa na ukungu, kila utegemezi wa kuvuka timu hugeuka mazungumzo ya kujadiliana, na kila tukio hugeuka mradi wa kiakiolojia.

Dau ni kubwa zaidi katika mashirika makubwa na serikali. Injini ya kodi, jukwaa la manufaa, rekodi ya kitaifa ya afya, au leja kuu ya benki ni ya muda mrefu, inadhibitiwa sana, inashirikiwa kuvuka idara, na inawajibika kwa umma. Maamuzi unayofanya leo kuhusu uunganishaji, umiliki wa data, na sifa za ubora yatadhibiti kinachowezekana kwa muongo au zaidi. Wadhibiti na wakaguzi wanazidi kutarajia usanifu ulioandikwa, unaoweza kutetewa, wenye ushahidi halisi kwamba kutegemewa, usalama, faragha, na uimara vilibuniwa ndani, si kuongezwa baadaye. Kushindwa kunakofanya vichwa vya habari ni kushindwa kwa usanifu: lango zinazopinda siku ya uzinduzi, mifumo ya kuwasilisha inayoisha muda siku ya mwisho, uhamishaji unaopoteza au kuhesabu rekodi mara mbili.

Sehemu hii inaanza na misingi ya kudumu, inasonga kupitia uchaguzi madhubuti wa kimuundo, kisha hali halisi za usambazaji, data, na ukubwa, na kumalizia na tatizo gumu zaidi ambalo mashirika makubwa mengi yanakabiliana nalo kweli: kuboresha mifumo wanayoiendesha tayari. Uzi unaounganisha yote: usanifu mzuri ni mfululizo wa mabadilishano ya makusudi, si chaguo-msingi la mtindo.

Sura katika sehemu hii

  • 3.1 Misingi ya usanifu. Zana za kudumu zinazonusurika mitindo ya teknolojia: sifa za ubora (“-ilities”), mahitaji muhimu ya kiusanifu, kazi za ufaafu (majaribio ya kiotomatiki yanayolinda sifa ya usanifu iliyochaguliwa) na usanifu wa kubadilika, nyaraka nyepesi kwa kielelezo cha C4 (michoro ya usanifu iliyoota viota katika ngazi nne za ukaribu) na arc42 (kiolezo cha nyaraka za usanifu), na uchambuzi wenye muundo wa mabadilishano.

  • 3.2 Mitindo na mifumo ya usanifu. Uchunguzi wa maumbo makuu ya mifumo, kutoka monolith kupitia huduma ndogo, usanifu unaoendeshwa na matukio wenye CQRS (Command Query Responsibility Segregation, inayotenganisha vielelezo vya kusoma na vya kuandika) na event sourcing (kuhifadhi hali kama kumbukumbu ya matukio ya kuongeza tu), mesh ya huduma (safu maalumu ya miundombinu kwa mawasiliano ya huduma-hadi-huduma) na malango, serverless, na usanifu wa hexagonal na safi, pamoja na mwongozo wa lini kila mmoja unafaa, ukiwekwa katika mfumo wa Sheria ya Conway (mifumo huelekea kuakisi muundo wa mawasiliano wa shirika linaloijenga).

  • 3.3 Mifumo iliyosambazwa. Ukweli mgumu unaojitokeza mara unapovuka mpaka wa mtandao (mitandao isiyotegemewa, kushindwa kwa sehemu, hakuna saa ya pamoja), na ulinzi wa kawaida: kufikiri kuhusu uthabiti, kutobadilika thamani (kufanya operesheni iwe salama kurudia), majaribio ya kurudia na kurudi nyuma, vivunja mzunguko (vinavyoacha kuita utegemezi unaoshindwa), sagas (mfululizo wa miamala ya ndani yenye hatua za kutengua za fidia), na uonekanaji uliosambazwa.

  • 3.4 Usanifu wa data na uhifadhi. Jinsi data inavyoundwa, kuhifadhiwa, kuwekwa thabiti, na kuhudumiwa haraka kwa ukubwa: mifano mikuu ya uhifadhi na lini kutumia kila moja, uhifadhi wa lugha nyingi (kutumia hifadhi kadhaa maalumu za data katika mfumo mmoja), mageuzi ya muundo na uhamishaji, kache na CDN (mitandao ya usambazaji wa maudhui), na miamala na ulinganifu chini ya mzigo.

  • 3.5 Ukubwa, utendaji, na ustahimilivu. Sifa tatu tofauti zinazobuniwa ndani badala ya kuongezwa baadaye: kupanua kwa upana na kwa wima, kutokuwa na hali na kugawanya data (kugawanya data kuvuka mashine kwa ufunguo), kusawazisha mzigo na kupanua kiotomatiki, bajeti za utendaji, mifumo ya ustahimilivu na uhandisi wa machafuko, na urejeshaji baada ya maafa wa kanda nyingi ukiwekwa katika RTO (lengo la muda wa kurejesha) na RPO (lengo la nukta ya kurejesha).

  • 3.6 Uboreshaji wa mifumo ya urithi. Mifumo ya hatua kwa hatua inayofanya kazi kweli, mtini wa kunyonga (kukuza mfumo mpya kuzunguka wa zamani hadi wa zamani uweze kustaafu) na tawi-kwa-uondoaji-wa-maelezo (kubadilisha kijenzi nyuma ya kiolesura kwenye mstari mkuu wa uendelezaji), pamoja na tathmini ya hatari ya urithi, uangalizi wa kompyuta kuu na COBOL (Common Business-Oriented Language), uhamishaji wa data na uendeshaji sambamba, na jinsi ya kupinga kishawishi cha uandishi upya mkubwa kinachozalisha kushindwa ghali zaidi katika uwanja huu.

  • 3.7 Matengenezo ya programu. Awamu kuu ya maisha ya programu: matengenezo ya kusahihisha, ya kujirekebisha, ya kukamilisha, na ya kuzuia, uelewa wa programu na uhandisi upya, na kubuni kwa uwezo wa kudumishwa ili mifumo ya muda mrefu ibaki ya bei nafuu kubadilisha.

  • 3.8 Uwezo wa kuingiliana na viwango huria. Kubuni mifumo ishirikiane kupitia viwango huria badala ya uunganishaji maalumu: uwezo wa kuingiliana wa kiufundi, wa kisintaksia, na wa kimaana, viwango vya kikoa kama FHIR katika afya, na gharama ya kufungwa na umiliki.

  • 3.9 Uhandisi wa mifumo. Kuhandisi mifumo changamano mwanzo hadi mwisho, mara nyingi ikichanganya programu, vifaa, watu, na michakato: mzunguko wa maisha, ugawaji wa mahitaji na ufuatiliaji, violesura, uunganishaji, na uthibitisho na uthibitishaji wa kufaa.

  • 3.10 Mifumo iliyopachikwa na ya wakati halisi. Programu kwa vifaa vyenye vikwazo vikali: tabia ya wakati halisi na uamuzi, RTOS au firmware tupu, kumbukumbu na nguvu chache, mwingiliano na vifaa, na viwango vya usalama muhimu.

  • 3.11 Usanifu wa wingu. Kubuni kwa wingu badala ya kuhamisha kituo cha data kama kilivyo: mifano ya huduma na serverless, kanda na maeneo ya upatikanaji kama maeneo ya kushindwa, mfano wa wajibu wa pamoja, mabadilishano ya huduma zinazosimamiwa na kufungwa, wingu-nyingi na mseto yanapostahili ugumu wake, na usanifu unaozingatia gharama, ulioundwa vizuri.

  • 3.12 Usanifu unaoendeshwa na matukio na ujumbe. Kujenga mifumo inayowasiliana kwa kuzalisha na kuitikia matukio: foleni dhidi ya mikondo ya kudumu, uchoreaji dhidi ya uratibu, event sourcing na CQRS inapostahili, sagas kwa miamala iliyosambazwa, hakikisho za utoaji na kutobadilika thamani, na mifumo inayoweka mtiririko usio wa papo hapo ukitegemewa.

  • 3.13 Mitandao na muunganisho. Mitandao ambayo mhandisi wa programu anakutana nayo kweli: DNS, TCP na mageuzi ya HTTP, kukomesha TLS, kusawazisha mzigo na wakala wa kinyume, usambazaji wa maudhui na ukingo, ugunduzi wa huduma na mesh ya huduma, na muda wa kuisha, majaribio ya kurudia, na vivunja mzunguko vinavyofanya kutotegemewa kwa mtandao kunusurike.

  • 3.14 Wapangaji wengi na usanifu wa SaaS. Kuhudumia wateja wengi kutoka mfano mmoja wa programu bila kuwaacha waonane au kunyimana: wigo wa kutengwa dhidi ya ufanisi, ugawaji wa data, mgawo kwa kila mpangaji dhidi ya majirani wenye kelele, mzunguko wa maisha wa mpangaji, na uhusishaji wa gharama.

  • 3.15 Kache na usambazaji wa maudhui. Kubadilisha ukale kidogo kwa faida kubwa katika ucheleweshaji, mzigo, na gharama kuvuka daraja la kache (mteja, ukingo na CDN, wakala wa kinyume, programu, na hifadhi ya data), huku ukichukulia kubatilisha kache na ulinzi dhidi ya mkanyagano kama usanifu wa daraja la kwanza.

  • 3.16 Lango la API na mesh ya huduma. Kushughulikia trafiki ya kaskazini-kusini kwenye lango la API (uelekezaji, uthibitishaji, kikomo cha kasi, uunganishaji) na trafiki ya mashariki-magharibi kupitia mesh ya huduma (TLS ya pande zote, kuhamisha trafiki, majaribio ya kurudia, uonekanaji), na kuamua lini mesh inastahili ugumu wake.

  • 3.17 Utafutaji na urejeshaji wa taarifa. Kuchukulia utafutaji kama mfumo wa daraja la kwanza, kutoka faharasa kinyume na upangaji wa umuhimu hadi uelewa wa hoja, ugawaji wa sura, na urejeshaji wa vekta na mseto, kwa tathmini halisi ya umuhimu badala ya kubahatisha.

Jinsi sura hizi zinavyohusiana

Sura zinajengana kwa mpangilio. Sura ya 3.1 inakupa msamiati (sifa za ubora na uchambuzi wa mabadilishano) ambao kila sura ya baadaye inautumia; “-ilities” inazozitaja ndizo hasa sura 3.4 na 3.5 zinazozifanya madhubuti. Sura ya 3.2 inageuza misingi hiyo kuwa uchaguzi wa kimuundo, na mitindo iliyosambazwa zaidi inayoiunga mkono (huduma ndogo, inayoendeshwa na matukio, mesh ya huduma) inaleta gharama ambazo sura ya 3.3 inakufundisha kuzisimamia. Sura 3.3, 3.4, na 3.5 zinategemeana sana: usambazaji unalazimisha maamuzi ya uthabiti na uimara wa usanifu wa data, na kwa pamoja usambazaji na data huumba ukubwa na ustahimilivu unaoweza kuufikia kweli. Sura ya 3.6 inafunga mzunguko, kwa sababu mashirika makubwa mengi hayajengi kwenye ukurasa mweupe: yanabadilisha mifumo ya rekodi inayodhibiti kila uchaguzi ambao sura za awali zinaueleza.

Sehemu ya 3 pia inafika nje. Sura ya 3.2 inatumia kanuni za usanifu na Domain-Driven Design za sura ya 2.2 kupata mipaka mizuri ya huduma. Nidhamu za uendeshaji zinazoweka mifumo hii ikiendesha ziko katika Sehemu ya 9: uhandisi wa kutegemewa kwa tovuti (sura ya 9.1) na uonekanaji (sura ya 9.2) ndipo ustahimilivu wa usanifu unathibitishwa kwenye uzalishaji. Sifa za usalama na faragha ambazo wadhibiti wanadai zinabuniwa hapa lakini zinaelezwa kwa kina katika Sehemu ya 4, na mazoea ya jukwaa na utoaji katika Sehemu ya 8 huamua kama usanifu unaweza kusafirishwa na kuendeshwa na timu nyingi kwa wakati mmoja.