Usanifu wa Programu na Usanifu wa Mifumo: Mwongozo Kubwa wa Picha na Nyenzo

Habari wenzangu.

Leo tunatoa kwa kuzingatia kwako tafsiri ya makala ya Tugberk Ugurlu, ambaye alichukua uamuzi wa kuelezea kwa kiasi kidogo kanuni za kubuni mifumo ya kisasa ya programu. Hivi ndivyo mwandishi anasema juu yake mwenyewe kwa muhtasari:

Usanifu wa Programu na Usanifu wa Mifumo: Mwongozo Kubwa wa Picha na Nyenzo
Kwa kuwa haiwezekani kabisa kuangazia katika makala ya habro mada kuu kama miundo ya usanifu + miundo ya muundo kufikia mwaka wa 2019, tunapendekeza sio maandishi ya Bw. Uruglu tu, bali pia viungo vingi ambavyo alijumuisha ndani yake. Ikiwa unaipenda, tutachapisha maandishi maalum zaidi kuhusu muundo wa mifumo iliyosambazwa.

Usanifu wa Programu na Usanifu wa Mifumo: Mwongozo Kubwa wa Picha na Nyenzo

Picha ndogo Isaac Smith kutoka kwa Unsplash

Ikiwa haujawahi kukumbana na changamoto kama vile kubuni mfumo wa programu kutoka mwanzo, basi wakati wa kuanza kazi kama hiyo, wakati mwingine hata haijulikani wazi wapi kuanza. Ninaamini kuwa unahitaji kwanza kuteka mipaka ili uwe na wazo la kujiamini zaidi au kidogo la nini hasa utaunda, na kisha funga mikono yako na ufanye kazi ndani ya mipaka hiyo. Kama sehemu ya kuanzia, unaweza kuchukua bidhaa au huduma (haswa ile unayopenda sana) na ujue jinsi ya kuitekeleza. Unaweza kushangazwa na jinsi bidhaa hii inavyoonekana rahisi, na ni ugumu kiasi gani unao. Usisahau: rahisi - kawaida ngumu, na hiyo ni sawa.

Nadhani ushauri bora ninayoweza kutoa kwa mtu yeyote anayeanza kuunda mfumo ni huu: usifanye mawazo yoyote! Tangu mwanzo kabisa, unahitaji kutaja ukweli unaojulikana kuhusu mfumo huu na matarajio yanayohusiana nayo. Hapa kuna baadhi ya maswali mazuri ya kuuliza ili kukusaidia kuanza na muundo wako:

  • Je, ni tatizo gani tunajaribu kutatua?
  • Ni idadi gani ya kilele cha watumiaji ambao wataingiliana na mfumo wetu?
  • Je, tutatumia mifumo gani ya kuandika na kusoma?
  • Je, ni kesi gani zinazotarajiwa kufeli, tutazishughulikia vipi?
  • Je, ni matarajio gani ya uthabiti wa mfumo na upatikanaji?
  • Je, unapaswa kuzingatia mahitaji yoyote yanayohusiana na uthibitishaji wa nje na udhibiti wakati wa kufanya kazi?
  • Je, ni aina gani za data nyeti tutakazohifadhi?

Haya ni maswali machache ambayo yamekuwa na manufaa kwangu na kwa timu ambazo nimeshiriki kwa miaka mingi ya shughuli za kitaaluma. Ikiwa unajua majibu ya maswali haya (na mengine yoyote ambayo yanafaa kwa muktadha ambao unapaswa kufanya kazi), basi unaweza kuzama hatua kwa hatua katika maelezo ya kiufundi ya shida.

Weka kiwango cha awali

Ninamaanisha nini kwa "msingi" hapa? Kweli, katika nyakati zetu, matatizo mengi katika sekta ya programu "yanaweza" kutatuliwa kwa kutumia mbinu na teknolojia zilizopo. Ipasavyo, kwa kuabiri mazingira haya, unapata mwanzo fulani unapokabiliwa na matatizo ambayo mtu mwingine alipaswa kutatua kabla yako. Usisahau kwamba mipango imeandikwa ili kutatua matatizo ya biashara na mtumiaji, kwa hiyo tunajitahidi kutatua tatizo kwa njia ya moja kwa moja na rahisi (kutoka kwa mtazamo wa mtumiaji). Kwa nini hii ni muhimu kukumbuka? Labda katika mfumo wako wa kuratibu unapenda kutafuta masuluhisho ya kipekee kwa matatizo yote, kwa sababu unafikiri, "ni aina gani ya programu ikiwa ninafuata mifumo kila mahali"? Kwa kweli, sanaa hapa ni kufanya maamuzi kuhusu wapi na nini cha kufanya. Bila shaka, kila mmoja wetu anapaswa kushughulika na matatizo ya pekee mara kwa mara, ambayo kila moja ni changamoto halisi. Walakini, ikiwa kiwango chetu cha kwanza kinafafanuliwa wazi, basi tunajua nini cha kutumia nguvu zetu: kutafuta chaguzi zilizotengenezwa tayari za kutatua shida iliyowekwa mbele yetu, au kuisoma zaidi na kupata ufahamu wa kina.

Nadhani niliweza kukushawishi kwamba ikiwa mtaalamu anaelewa kwa ujasiri ni nini sehemu ya usanifu wa mifumo ya ajabu ya programu, basi ujuzi huu utakuwa muhimu kwa ujuzi wa sanaa ya mbunifu na kuendeleza msingi imara katika uwanja huu.

Sawa, kwa hivyo pa kuanzia? U Donna Martina Kuna hazina kwenye GitHub inayoitwa mfumo-design-primer, ambayo unaweza kujifunza jinsi ya kuunda mifumo mikubwa, na pia kujiandaa kwa mahojiano juu ya mada hii. Hifadhi ina sehemu yenye mifano usanifu halisi, ambapo, hasa, inachukuliwa jinsi wanavyokaribia muundo wa mifumo yao baadhi ya makampuni maalumukwa mfano Twitter, Uber, nk.

Hata hivyo, kabla ya kuendelea na nyenzo hii, hebu tuangalie kwa karibu changamoto muhimu zaidi za usanifu ambazo tunakabiliana nazo katika mazoezi. Hili ni muhimu kwa sababu unapaswa kutaja vipengele NYINGI vya tatizo la ukaidi na lenye vipengele vingi, na kisha kulitatua ndani ya mfumo wa kanuni zinazotumika katika mfumo fulani. Jackson Gabbard, mfanyakazi wa zamani wa Facebook, aliandika Video ya dakika 50 kuhusu mahojiano ya muundo wa mifumo, ambapo alishiriki uzoefu wake mwenyewe wa kukagua mamia ya waombaji. Ingawa video inazingatia sana muundo wa mfumo mkubwa na vigezo vya mafanikio ambavyo ni muhimu wakati wa kutafuta mgombea wa nafasi kama hiyo, bado itatumika kama nyenzo ya kina kuhusu mambo ambayo ni muhimu zaidi wakati wa kuunda mifumo. Pia ninapendekeza muhtasari video hii.

Jenga maarifa kuhusu kuhifadhi na kurejesha data

Kwa kawaida, uamuzi wako kuhusu jinsi ya kuhifadhi na kurejesha data yako kwa muda mrefu una athari kubwa kwenye utendaji wa mfumo. Kwa hiyo, lazima kwanza uelewe sifa za kuandika na kusoma za mfumo wako. Kisha unahitaji kuwa na uwezo wa kutathmini viashiria hivi na kufanya uchaguzi kulingana na tathmini zilizofanywa. Hata hivyo, unaweza kukabiliana na kazi hii kwa ufanisi ikiwa tu unaelewa mifumo iliyopo ya kuhifadhi data. Kimsingi, hii ina maana maarifa imara kuhusiana na uteuzi wa hifadhidata.

Hifadhidata inaweza kuzingatiwa kama miundo ya data ambayo inaweza kubadilika na kudumu. Kwa hiyo, ujuzi wa miundo ya data unapaswa kuwa muhimu sana kwako wakati wa kuchagua database fulani. Kwa mfano, Rejea ni seva ya muundo wa data inayoauni aina mbalimbali za thamani. Inakuruhusu kufanya kazi na miundo ya data kama vile orodha na seti, na kusoma data kwa kutumia algoriti zinazojulikana, kwa mfano, LRU, kuandaa kazi hiyo kwa mtindo wa kudumu na unaopatikana sana.

Usanifu wa Programu na Usanifu wa Mifumo: Mwongozo Kubwa wa Picha na Nyenzo

Picha ndogo Samuel Zeller kutoka kwa Unsplash

Pindi tu unapokuwa na uelewa wa kutosha wa mifumo mbalimbali ya kuhifadhi data, endelea kusoma uthabiti na upatikanaji wa data. Kwanza kabisa, unahitaji kuelewa Nadharia ya CAP angalau kwa maneno ya jumla, na kisha ung'arishe ujuzi huu kwa kuangalia kwa karibu mifumo iliyoanzishwa uthabiti ΠΈ upatikanaji. Kwa njia hii, utakuwa na ujuzi zaidi katika eneo hili na kuelewa kwamba kusoma na kuandika data ni matatizo mawili tofauti sana, kila moja ikiwa na changamoto zake za kipekee. Ukiwa na mifumo michache ya uthabiti na upatikanaji, unaweza kuongeza utendaji wa mfumo kwa kiasi kikubwa huku ukihakikisha mtiririko wa data kwa programu zako.

Hatimaye, kuhitimisha mazungumzo kuhusu masuala ya kuhifadhi data, tunapaswa pia kutaja caching. Inapaswa kuendeshwa wakati huo huo kwenye mteja na seva? Ni data gani itakuwa kwenye akiba yako? Na kwa nini? Je, unapangaje ubatilishaji wa akiba? Je, itafanyika mara kwa mara, kwa vipindi fulani? Kama ndiyo, mara ngapi? Ninapendekeza kuanza kusoma mada hizi na sehemu inayofuata utangulizi wa muundo wa mfumo uliotajwa hapo juu.

Miundo ya Mawasiliano

Mifumo inajumuisha vipengele mbalimbali; hizi zinaweza kuwa michakato tofauti inayoendesha ndani ya nodi sawa ya mwili, au mashine tofauti zinazoendesha sehemu tofauti za mtandao wako. Baadhi ya rasilimali hizi ndani ya mtandao wako zinaweza kuwa za faragha, lakini zingine zinapaswa kuwa za umma na wazi kwa watumiaji wanaozipata kutoka nje.

Inahitajika kuhakikisha mawasiliano ya rasilimali hizi na kila mmoja, na pia kubadilishana habari kati ya mfumo mzima na ulimwengu wa nje. Katika muktadha wa muundo wa mifumo, hapa tena tunakabiliwa na seti ya changamoto mpya na za kipekee. Hebu tuone jinsi zinavyoweza kuwa na manufaa mtiririko wa kazi usiolingana, na nini pAina mbalimbali za mifumo ya mawasiliano zinapatikana.

Usanifu wa Programu na Usanifu wa Mifumo: Mwongozo Kubwa wa Picha na Nyenzo

Picha ndogo Tony Stoddard kutoka kwa Unsplash

Wakati wa kuandaa mawasiliano na ulimwengu wa nje, daima ni muhimu sana usalama, utoaji ambao pia unahitaji kuchukuliwa kwa uzito na kufuatiliwa kikamilifu.

Usambazaji wa muunganisho

Sina hakika kuwa kuweka mada hii katika sehemu tofauti kutaonekana kuwa sawa kwa kila mtu. Walakini, nitawasilisha wazo hili kwa undani hapa, na ninaamini kuwa nyenzo katika sehemu hii inaelezewa kwa usahihi zaidi na neno "usambazaji wa unganisho".

Mifumo huundwa kwa kuunganisha vizuri vipengele vingi, na mawasiliano yao kwa kila mmoja mara nyingi hupangwa kwa misingi ya itifaki zilizoanzishwa, kwa mfano, TCP na UDP. Hata hivyo, itifaki hizi kama hizo mara nyingi hazitoshi kukidhi mahitaji yote ya mifumo ya kisasa, ambayo mara nyingi huendeshwa chini ya mzigo mkubwa na pia hutegemea sana mahitaji ya mtumiaji. Mara nyingi ni muhimu kutafuta njia za kusambaza viunganisho ili kukabiliana na mizigo hiyo ya juu kwenye mfumo.

Usambazaji huu unategemea kinachojulikana mfumo wa jina la kikoa (DNS). Mfumo kama huo huruhusu mabadiliko ya jina la kikoa kama vile robin yenye uzani na mbinu za muda wa kusubiri kusaidia kusambaza mzigo.

Kusawazisha mzigo kimsingi ni muhimu, na takriban kila mfumo mkubwa wa Intaneti tunaoshughulika nao leo uko nyuma ya kisawazishi kimoja au zaidi cha mzigo. Salio la mizigo husaidia kusambaza maombi ya mteja katika hali nyingi zinazopatikana. Mizani ya mzigo huja katika vifaa na programu, hata hivyo, katika mazoezi, mara nyingi zaidi unapaswa kushughulika na programu, kwa mfano. HAProxy ΠΈ ELB. Wakala wa kinyume kimawazo pia inafanana sana na visawazisha mizigo, ingawa kuna masafa kati ya kwanza na ya pili tofauti tofauti. Tofauti hizi lazima zizingatiwe wakati wa kuunda mfumo kulingana na mahitaji yako.

Unapaswa pia kujua kuhusu mitandao ya utoaji maudhui (CDN). CDN ni mtandao unaosambazwa kimataifa wa seva mbadala ambao hutoa taarifa kutoka kwa nodi ambazo ziko kijiografia karibu na mtumiaji mahususi. CDN ni vyema kutumia ikiwa unafanya kazi na faili tuli zilizoandikwa katika JavaScript, CSS na HTML. Kwa kuongeza, huduma za wingu ambazo hutoa wasimamizi wa trafiki ni za kawaida leo, kwa mfano, Meneja wa Trafiki wa Azure, hukupa usambazaji wa kimataifa na utulivu uliopunguzwa unapofanya kazi na maudhui yanayobadilika. Walakini, huduma kama hizo kawaida ni muhimu katika hali ambapo lazima ufanye kazi na huduma za wavuti zisizo na uraia.

Wacha tuzungumze juu ya mantiki ya biashara. Kuunda mantiki ya biashara, mtiririko wa kazi na vipengele

Kwa hiyo, tuliweza kujadili masuala mbalimbali ya miundombinu ya mfumo. Uwezekano mkubwa zaidi, mtumiaji hafikirii hata juu ya vipengele hivi vyote vya mfumo wako na, kwa kweli, hajali kabisa. Mtumiaji anavutiwa na jinsi kuingiliana na mfumo wako, ni nini kinachoweza kupatikana kwa kufanya hivi, na pia jinsi mfumo unavyofanya maagizo ya mtumiaji, nini na jinsi inavyofanya na data ya mtumiaji.

Kama kichwa cha kifungu hiki kinapendekeza, ningezungumza juu ya usanifu wa programu na muundo wa mfumo. Ipasavyo, sikupanga kufunika mifumo ya muundo wa programu ambayo inaelezea jinsi vipengee vya programu vinaundwa. Walakini, ninapofikiria zaidi juu yake, ndivyo inavyoonekana kwangu kuwa mstari kati ya mifumo ya muundo wa programu na mifumo ya usanifu ni wazi sana, na dhana hizi mbili zinahusiana kwa karibu. Hebu tuchukue kwa mfano usajili wa tukio (kupata tukio). Mara tu unapopitisha muundo huu wa usanifu, utaathiri karibu kila kipengele cha mfumo wako: uhifadhi wa muda mrefu wa data, kiwango cha uthabiti kilichopitishwa katika mfumo wako, sura ya vipengele ndani yake, nk, nk. Kwa hiyo, niliamua kutaja baadhi ya mifumo ya usanifu ambayo inahusiana moja kwa moja na mantiki ya biashara. Ingawa nakala hii italazimika kujiwekea kikomo kwa orodha rahisi, ninakuhimiza kuifahamisha na ufikirie juu ya maoni yanayohusiana na mifumo hii. Wewe hapa:

Mbinu shirikishi

Kuna uwezekano mkubwa sana kwamba utajikuta kwenye mradi kama mshiriki ambaye anawajibika pekee kwa mchakato wa kubuni mfumo. Kinyume chake, utalazimika kuingiliana na wenzako wanaofanya kazi ndani na nje ya kazi yako. Katika kesi hii, unaweza kuhitaji kutathmini ufumbuzi wa teknolojia iliyochaguliwa na wenzako, kutambua mahitaji ya biashara na kuelewa jinsi bora ya kusawazisha kazi.

Usanifu wa Programu na Usanifu wa Mifumo: Mwongozo Kubwa wa Picha na Nyenzo

Picha ndogo Kaleidico kutoka kwa Unsplash

Hatua ya kwanza ni kukuza uelewa sahihi na wa pamoja wa lengo la biashara unalojaribu kufikia ni nini na ni sehemu gani zinazosonga utalazimika kushughulika nazo. Mbinu za uundaji wa kikundi, haswa matukio ya dhoruba (tukio dhoruba) kusaidia kwa kiasi kikubwa kuharakisha mchakato huu na kuongeza nafasi yako ya mafanikio. Kazi hii inaweza kufanywa kabla au baada ya muhtasari mipaka ya huduma zako, na kisha uimarishe kwa kina kadiri bidhaa inavyozidi kukomaa. Kulingana na kiwango cha uthabiti ambacho kitapatikana hapa, unaweza pia kuunda lugha ya kawaida kwa muktadha mdogo ambao unafanya kazi. Unapohitaji kuzungumza juu ya usanifu wa mfumo wako, unaweza kupata ni muhimu mfano C4, iliyopendekezwa Simon Brown, hasa unapohitaji kuelewa ni kiasi gani utahitaji kuingia katika maelezo ya tatizo, kuibua mambo unayotaka kuwasiliana.

Pengine kuna teknolojia nyingine iliyokomaa kwenye mada hii ambayo haina manufaa kidogo kuliko Muundo Unaoendeshwa na Kikoa. Walakini, kwa njia fulani tunarudi kuelewa eneo la somo, kwa hivyo maarifa na uzoefu katika uwanja Muundo Unaoendeshwa na Kikoa inapaswa kuwa na manufaa kwako.

Chanzo: mapenzi.com

Kuongeza maoni