![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Buri munsi, buri mwanya mugihe cyumwuga wubwubatsi, duhura nibibazo byinshi bitandukanye byingorabahizi nibihe bitandukanye aho dukeneye gufata icyemezo cyangwa kubisubika kubera kubura amakuru. Igihe cyose twubatse serivisi nshya, twubaka ibikorwa remezo, cyangwa tunashiraho inzira ziterambere, dukora ku isi nini yibibazo bitandukanye.
Biragoye, kandi birashoboka ko bidashoboka, gutondeka ibibazo byose. Uzahura na bimwe muribi bibazo gusa niba ukora muri niche runaka. Ku rundi ruhande, hari byinshi twese tugomba kumva uburyo byakemuka, kuko ari ingenzi mu kubaka sisitemu ya IT. Hamwe nibishoboka byinshi, uzahura nabo mumishinga yose.
Muri iki kiganiro, nzabagezaho ibyambayeho hamwe nibibazo nahuye nabyo mugihe cyo gukora progaramu ya software.
Niba turebye muri Wikipedia, tuzabona ibisobanuro bikurikira
Mu iterambere rya porogaramu igamije iterambere, impungenge zambukiranya ni ibintu bigize porogaramu igira ingaruka ku buryo butandukanye, bitashoboka ko byakirwa muri kimwe muri byo. Izi mpungenge akenshi ntizishobora kubora neza mubindi bisigaye bya sisitemu haba mubishushanyo mbonera no kubishyira mubikorwa, kandi bishobora kuvamo gutatanya (kode yo kwigana), gutitirana (biterwa cyane na sisitemu), cyangwa byombi.
Irasobanura cyane icyo aricyo, ariko ndashaka kwagura no koroshya gato:
Impungenge zambukiranya ni igitekerezo cyangwa ibice bya sisitemu / ishyirahamwe bigira ingaruka (cyangwa 'guca hejuru') ibindi bice byinshi.
Ingero nziza zibyo bibazo ni sisitemu yububiko, gutema ibiti, umutekano, gucunga ibikorwa, telemetrie, igishushanyo mbonera kandi hariho nibindi byinshi. Tugiye gusobanura byinshi muribyinshi nyuma yiki kiganiro.
Kurwego rwa kode, impungenge zambukiranya akenshi zishyirwa mubikorwa hakoreshejwe tekinoroji nka Aspect-Orient Programming (AOP) , aho izo mpungenge zahinduwe mubice bitandukanye bishobora gukoreshwa mubisabwa byose. Ibi bituma logique yubucuruzi itandukana nizi mpungenge, bigatuma kode isomeka kandi ikagumaho.
Hariho inzira nyinshi zishoboka uburyo bwo gutondekanya ibintu mubitandukanya nibintu bitandukanye nkubunini, ingano, imikorere, akamaro, intego, nabandi, ariko muriki kiganiro, ngiye gukoresha urwego rworoshye rwashyizwe mubikorwa. Ibi, ndashaka kuvuga aho iyi ngingo yihariye yerekanwe niba ari organisation yose, sisitemu runaka, cyangwa ikintu cyihariye cya sisitemu.
Noneho, ngiye kugabanya ibice muri Macro na Micro .
Mubisobanuro bya Macro ndashaka kuvuga cyane cyane kubitekerezo dukurikiza kuri sisitemu yose nkuburyo bwa sisitemu yubatswe hamwe nigishushanyo cyayo (monolithic, microservices, serivisi zishingiye kuri serivise), tekinoroji yikoranabuhanga, imiterere yimiryango, nibindi. ibyemezo.
Hagati aho, icyerekezo cya Micro cyegereye cyane urwego rwimikorere niterambere. Kurugero, ni ubuhe buryo bukoreshwa muguhuza nububikoshingiro, imiterere yumushinga wububiko namasomo, cyangwa nuburyo bwihariye bwo gushushanya.
Mugihe ibi byiciro bitari byiza, bifasha muburyo bwo gusobanukirwa ibibazo bishoboka n'akamaro n'ingaruka z'ibisubizo tubikoresha.
Muri iyi ngingo, intego yanjye yibanze izaba yibanze kuri macro.
Mugihe natangiye kwiga ibijyanye nubwubatsi bwa software, nasomye ingingo nyinshi zishimishije zerekeye amategeko ya Conway n'ingaruka zayo mumiterere yubuyobozi. Cyane cyane iyi . Iri tegeko rero rivuga ko
Ishirahamwe iryo ariryo ryose rishushanya sisitemu (risobanuwe muri rusange) rizatanga igishushanyo mbonera cyacyo ni kopi yimiterere yitumanaho ryumuryango.
Nahoraga nizera ko iki gitekerezo rwose ari rusange kandi kigereranya Itegeko rya Zahabu.
Hanyuma natangiye kwiga Eric Evans's Domain-Driven Design (DDD) uburyo bwo kwerekana imiterere. Eric Evans ashimangira akamaro ko kumenyekanisha imipaka. Iki gitekerezo gikubiyemo kugabana imiterere igoye mubice bito, byacungwa cyane, buri kimwe gifite ubumenyi buke. Ubu buryo bufasha mu itumanaho ryiza ryitsinda, kuko rigabanya gukenera ubumenyi bwimbitse kuri domaine yose kandi bikagabanya guhinduranya imiterere, bityo ibiganiro bikagenda neza. Guhindura imiterere ni ikintu kibi kandi gikoresha umutungo cyane. Ndetse na mudasobwa zirarwana nayo. Nubwo bidashoboka kugera kubintu byuzuye byo guhinduranya imiterere, ndibwira ko aribyo tugomba guharanira.
Tugarutse ku Mategeko ya Conway, Nabonye ibibazo byinshi hamwe nayo.
Ikibazo cya mbere nahuye n amategeko ya Conway, yerekana ko igishushanyo mbonera cya sisitemu cyerekana imiterere yubuyobozi, nubushobozi bwo gukora ibintu bigoye kandi byuzuye. Ibi bigoye bivuka mugihe imiterere yubuyobozi idahujwe nimbibi za domaine, biganisha kuri Bounded Contexts ihuza cyane kandi yuzuye amakuru. Biganisha kumurongo-uhinduranya itsinda ryiterambere.
Ikindi kibazo nuko imvugo yubuyobozi isohoka kurwego rwimikorere. Iyo inzego zinzego zihindutse, bisaba guhindura codebase, ikoresha umutungo wingenzi.
Rero, gukurikira Inverse Conway Maneuver ifasha kubaka sisitemu numuryango utera inkunga software yububiko. Ariko, birashimishije kuvuga ko ubu buryo butazakora neza muburyo bwubatswe bwubatswe hamwe nuburyo kuva impinduka muriki cyiciro zimara igihe kirekire, ariko irakora cyane mubitangira kuko bihutira kumenyekanisha impinduka zose.
Iyi shusho cyangwa "anti-pattern" itera kubaka sisitemu idafite ubwubatsi. Nta mategeko, nta mipaka, nta n'ingamba zuburyo bwo kugenzura byanze bikunze gukura gukomeye. Ingorabahizi numwanzi uteye ubwoba murugendo rwo kubaka sisitemu ya software.
Kugira ngo twirinde kubaka ubwoko bwa sisitemu, dukeneye gukurikiza amategeko n'imbogamizi.
Hano haribisobanuro byinshi kububiko bwa software. Nkunda benshi muribo kuva bakubiyemo ibintu bitandukanye. Ariko, kugirango tubashe gutekereza kubijyanye nubwubatsi, dukeneye mubisanzwe gushiraho bimwe muribi mubitekerezo byacu. Kandi birashimishije kuvuga ko iki gisobanuro gishobora guhinduka. Nibura rero kuri ubu, mfite ibisobanuro bikurikira kubwanjye.
Software Architecture yerekeye ibyemezo no guhitamo ufata burimunsi bigira ingaruka kuri sisitemu yubatswe.
Kugira ngo ufate ibyemezo ukeneye kugira mu mahame n '“umufuka” wawe hamwe nuburyo bwo gukemura ibibazo bivuka, ni ngombwa kandi kuvuga ko gusobanukirwa ibisabwa ari urufunguzo rwo kubaka ibyo umushinga ukeneye. Ariko, rimwe na rimwe ibisabwa ntabwo bisobanutse cyangwa ntibisobanuwe, muriki gihe, nibyiza gutegereza kugirango ubone ibisobanuro byinshi cyangwa wishingikirije kuburambe bwawe kandi wizere ubushishozi bwawe. Ariko uko byagenda kwose, ntushobora gufata ibyemezo neza niba udafite amahame nuburyo bwo kwishingikiriza. Nibwo ndaje mubisobanuro byuburyo bwa Software Architecture.
Imiterere yububiko bwa software ni amahame nuburyo bugena uburyo bwo kubaka software.
Hano haribintu byinshi byububiko byubatswe byibanze kumpande zitandukanye zububiko bwateganijwe, kandi gukoresha byinshi murimwe icyarimwe nikintu gisanzwe.
Kurugero, nka:
Ubwubatsi bwa Monolithic
Igishushanyo mbonera
Ibigize
Microservices
Umuyoboro
Ibyabaye
Microkernel
Serivisi
n'ibindi…
Nibyo, bafite ibyiza nibibi, ariko icyingenzi namenye nuko ubwubatsi bugenda buhoro buhoro mugihe bitewe nibibazo bifatika. Uhereye ku bwubatsi bwa monolithic ni amahitamo meza yo kugabanya ibikorwa bigoye, birashoboka cyane ko iyi nyubako izahuza ibyo ukeneye nubwo nyuma yo kugera ku bicuruzwa-isoko Fit (PMI) yo kubaka ibicuruzwa. Ku gipimo, urashobora gutekereza kugana inzira-yayobowe na microservices kugirango ugere kubikorwa byigenga, ibidukikije bya tekinoroji itandukanye, hamwe nubwubatsi buke bufatanije (kandi ntibigaragara neza hagati aho bitewe nuburyo bwibikorwa biterwa na pub-sub niba niba byemewe). Ubworoherane nubushobozi biri hafi kandi bigira ingaruka zikomeye kuri buriwese. Mubisanzwe, inyubako zigoye zigira ingaruka kumuvuduko witerambere ryibintu bishya, gushyigikira no kubungabunga ibihari, no guhangana nihindagurika ryimiterere.
Nyamara, sisitemu igoye akenshi isaba ubwubatsi bugoye kandi bwuzuye, byanze bikunze.
Nibyiza, iyi ni ingingo yagutse cyane, kandi hariho ibitekerezo byinshi byiza byuburyo bwo kubaka no kubaka sisitemu yubwihindurize. Nkurikije uburambe bwanjye, nakoze uburyo bukurikira:
Ni ngombwa kandi gusobanukirwa imibare n'ibipimo nka DAU (Abakoresha buri munsi), MAU (Ukoresha Ukwezi Ukoresha), RPC (Gusaba Isegonda), na TPC (Transaction Per Second) kuko ishobora kugufasha guhitamo kuko ubwubatsi bwa Abakoresha 100 bakorana na miliyoni 100 bakoresha bakoresha baratandukanye.
Nkibisobanuro byanyuma, navuga ko ubwubatsi bugira ingaruka zikomeye kubicuruzwa byatsinze. Ubwubatsi bwateguwe nabi kubicuruzwa birasabwa mugupima, ibyo birashoboka cyane ko biganisha ku gutsindwa kuva abakiriya batazategereza mugihe wapimye sisitemu, bazahitamo umunywanyi, bityo rero dukeneye kuba imbere yubunini bushobora gupimwa. Nubwo nemera ko rimwe na rimwe bidashobora kuba inzira yoroheje, igitekerezo ni ukugira sisitemu nini ariko itaragera. Kurundi ruhande, kugira sisitemu igoye cyane kandi yamaze gupimwa idafite abakiriya cyangwa gahunda yo kubona byinshi muribyo bizagutwara amafaranga kubucuruzi bwawe kubusa.
Guhitamo ikorana buhanga kandi nicyemezo cya macro kurwego kuva bigira ingaruka kumurimo, sisitemu yubwihindurize karemano, ubunini, nibikorwa bya sisitemu.
Uru nurutonde rwibitekerezo byibanze byo guhitamo tekinoroji:
Nigute kugira ibice byinshi byikoranabuhanga bishobora kugira ingaruka mubucuruzi?
Urebye kimwe, kumenyekanisha ikindi gice gishobora gupima akazi kawe, ariko kurundi ruhande, bizana amafaranga yinyongera yo kubungabunga kuva ukeneye gushyigikira ibice byombi. Nkuko nabivuze mbere, uko mbibona, gusa ibikenewe byongeweho bigomba kuba impaka zo gushiramo ibikoresho byinshi byikoranabuhanga.
Ariko tuvuge iki ku ihame ryo guhitamo igikoresho cyiza kubibazo runaka?
Rimwe na rimwe, nta bundi buryo ufite uretse kuzana ibikoresho bishya byo gukemura ikibazo runaka ukurikije ibitekerezo bimwe bimaze kuvugwa, mu bihe nk'ibi, birumvikana guhitamo igisubizo cyiza.
Gushiraho sisitemu idafite guhuza cyane n'ikoranabuhanga runaka bishobora kuba ikibazo. Biracyaza, nibyiza guharanira imiterere aho sisitemu idahujwe cyane nikoranabuhanga, kandi ntizipfa niba ejo, urwego runaka cyangwa igikoresho cyoroshye cyangwa kigatakaza agaciro.
Ikindi gitekerezo cyingenzi kijyanye no gufungura-isoko hamwe na software yihariye. Porogaramu yihariye iguha guhinduka gake hamwe nibishoboka kugirango uhindurwe. Nubwo bimeze bityo, ikintu giteye akaga cyane ni ugucuruza ibicuruzwa, aho uhinduka bitewe nibicuruzwa byabacuruzi, ibiciro, amagambo, hamwe ninzira nyabagendwa. Ibi birashobora guteza akaga niba umucuruzi ahinduye icyerekezo, yongera ibiciro, cyangwa ahagarika ibicuruzwa. Porogaramu ifunguye-isoko igabanya ibi byago, nkikintu kimwe kitagenzura. Kurandura ingingo imwe yo gutsindwa kurwego rwose nurufunguzo rwo kubaka sisitemu yizewe yo gukura.
Ingingo imwe yo gutsindwa (SPOF) bivuga igice icyo aricyo cyose cya sisitemu, niba binaniwe, bizatera sisitemu yose guhagarika imikorere. Kurandura SPOF mu nzego zose ningirakamaro kuri sisitemu iyo ariyo yose isaba kuboneka cyane. Ibintu byose, harimo ubumenyi, abakozi, ibice bya sisitemu, abatanga ibicu, ninsinga za interineti, birashobora kunanirwa.
Hariho uburyo bwinshi bwibanze dushobora gukoresha kugirango dukureho ingingo imwe yo gutsindwa:
Muri iki kiganiro, twasuzumye ibintu byinshi byingenzi bya Macro nuburyo dushobora guhangana ningorabahizi.
Urakoze gusoma! Reba ubutaha!