![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Maalin kasta, daqiiqad kasta inta lagu jiro xirfada injineernimada, waxaan la kulannaa dhibaatooyin badan oo kala duwan oo kakanaanta kala duwan iyo xaaladaha aan u baahanahay inaan go'aan ka gaarno ama dib u dhigno xog la'aan awgeed. Mar kasta oo aan dhisno adeegyo cusub, dhisno kaabayaasha, ama aan sameyno hannaan horumarineed, waxaan taabanaa adduun weyn oo caqabado kala duwan leh.
Waa adag tahay, lagana yaabo xataa inaan macquul ahayn, in la taxo dhammaan dhibaatooyinka. Waxaad la kulmi doontaa qaar ka mid ah arrimahan kaliya haddii aad ka shaqeyso meel gaar ah. Dhanka kale, waxaa jira qaar badan oo ay tahay inaan dhammaanteen fahamno sida loo xalliyo, maadaama ay muhiim u yihiin dhismaha nidaamyada IT-ga. Iyada oo ay suurtogal tahay, waxaad kula kulmi doontaa dhammaan mashaariicda.
Maqaalkan, waxaan kula wadaagi doonaa waayo-aragnimadayda qaar ka mid ah dhibaatooyinka aan la kulmay markii aan abuurayay barnaamijyada software.
Haddii aan eegno Wikipedia, waxaan heli doonaa qeexida soo socota
Kobcinta softiweerka ku jihaysan dhinaca, welwelka gooyntu waa dhinacyo barnaamijka saameeya qaybo badan, iyada oo aan suurtagal ahayn in lagu soo koobo mid ka mid ah. Walaacyadan inta badan si nadiif ah loogama dumin karo nidaamka intiisa kale qaabaynta iyo hirgalinta labadaba, waxayna keeni karaan kala firdhiso (kuwa koodhka), isku-xidhnaanta (ku-tiirsanaanta muhiimka ah ee nidaamyada), ama labadaba.
Waxay si weyn u qeexaysaa waxa ay tahay, laakiin waxaan rabaa inaan kordhiyo oo aan yara fududeeyo:
Walaaca is-goynta ahi waa fikrad ama qayb ka mid ah nidaamka/ururka oo saameeya (ama 'jaro') qaybo kale oo badan.
Tusaalooyinka ugu fiican ee walaacyada noocan oo kale ah waa qaab-dhismeedka nidaamka, gooynta, amniga, maaraynta wax kala iibsiga, telemetry, naqshadaynta xogta iyo kuwo kale oo badan. Qaar badan oo iyaga ka mid ah ayaannu gadaal kaga soo gudbin doonnaa maqaalkan.
Marka la eego heerka koodhka, welwelka is-goynta ayaa inta badan lagu fuliyaa iyadoo la adeegsanayo farsamooyinka sida Barnaamij-ku- Jiheysan (AOP) , halkaasoo walaacyadan loo habeeyey qaybo kala duwan oo lagu dabaqi karo arjiga oo dhan. Tani waxay ka dhigaysaa macquulka ganacsiga in laga takooro walaacyadan, taasoo ka dhigaysa koodhka mid la akhriyi karo oo la ilaalin karo.
Waxaa jira siyaabo badan oo suurtogal ah sida loo kala saaro dhinacyada iyadoo loo kala saarayo sifooyin kala duwan sida baaxadda, cabbirka, shaqeynta, muhiimada, bartilmaameedka, iyo kuwa kale, laakiin maqaalkan, waxaan isticmaali doonaa kala soocida baaxadda fudud. Tan, waxaan ula jeedaa halka dhinacan gaarka ah lagu hagayo hadday tahay ururka oo dhan, nidaam gaar ah, ama qayb gaar ah oo nidaamkaas ah.
Sidaa darteed, waxaan u kala qaybin doonaa dhinacyada Macro iyo Micro .
Dhanka Macro waxaan ula jeedaa inta badan tixgalinta aan raacno nidaamka oo dhan sida qaab dhismeedka nidaamka la doortay iyo qaabayntiisa ( monolithic, microservices, architecture adeeg ku jihaysan), kaydka tignoolajiyada, qaab dhismeedka ururka, iwm. go'aannada.
Dhanka kale, dhinaca Micro ayaa aad ugu dhow heerka koodhka iyo horumarka. Tusaale ahaan, qaab-dhismeedka loo isticmaalo isdhexgalka xogta xogta, qaab dhismeedka mashruuca ee galka iyo fasallada, ama xitaa qaababka naqshadaynta shay gaar ah.
In kasta oo kala-soociddani aysan ahayn mid ku habboon, waxay gacan ka geysaneysaa qaabeynta fahamka dhibaatooyinka suurtagalka ah iyo muhiimadda iyo saameynta xalalka aan ku dabaqno iyaga.
Maqaalkan, diiraddayda koowaad waxay noqon doontaa dhinacyada macro.
Markii aan hadda bilaabay inaan wax ka barto qaab-dhismeedka software-ka, waxaan akhriyay maqaallo xiiso badan oo ku saabsan sharciga Conway iyo saamaynta uu ku leeyahay qaab-dhismeedka ururka. Gaar ahaan kan . Haddaba, sharcigan ayaa sidaas dhigaya
Urur kasta oo qaabeeya hab (si ballaaran loo qeexay) wuxuu soo saari doonaa naqshad qaab dhismeedkiisu yahay nuqul ka mid ah qaab dhismeedka isgaarsiinta ururka.
Had iyo jeer waxaan rumaysnaa in fikraddani runtii tahay mid caalami ah oo ka dhigan Xeerka Dahabka ah.
Kadib waxaan bilaabay inaan barto Eric Evans's Domain-Driven Design (DDD) habka qaabaynta qaabaynta. Eric Evans waxa uu xooga saarayaa muhiimada aqoonsiga macnaha guud Fikradani waxay ku lug leedahay in loo qaybiyo qaabka domain kakan qaybo yar yar, oo la maarayn karo, mid walbana leh aqoontiisa xadidan. Habkani waxa uu caawiyaa wada xidhiidhka kooxeed ee wax ku ool ah, maadaama ay yarayso baahida aqoonta ballaadhan ee qaybta oo dhan oo ay yarayso beddelka macnaha guud, sidaas awgeed wada sheekaysigu mid hufan. Beddelka macnaha guud waa shaygii ugu darnaa uguna kheyraadka badnaa abid. Xitaa kombuyuutarrada ayaa la halgamaya. In kasta oo aanay suurtogal ahayn in la gaadho maqnaansho dhammaystiran oo beddelaadda macnaha guud, waxaan ku xisaabtamayaa taasi waa waxa ay tahay in aan ku dadaalno.
Ku soo noqoshada sharciga Conway, waxaan ka helay arimo dhowr ah.
Arrinka ugu horreeya ee aan la kulmay sharciga Conway, kaas oo soo jeedinaya in naqshadaynta nidaamka muraayadaha qaab-dhismeedka ururka, ay tahay suurtogalnimada samaynta mawduucyo xaddidan oo adag oo dhammaystiran. Kakanaantani waxay soo ifbaxdaa marka qaab-dhismeedka ururku aanu la jaan qaadin xudduudaha domainka, taasoo horseedaysa Mawduucyo Xadaysan oo si aad ah ugu tiirsan oo ay ku raran yihiin macluumaadka. Waxay u horseedaysaa isbeddel joogto ah oo ku saabsan kooxda horumarinta.
Arrin kale ayaa ah in erey-bixinta ururka ay u daadato heerka koodka. Marka qaab-dhismeedka ururku isbeddelaan, waxay u baahan tahay wax ka beddelka codebase, oo cunaya ilo qiimo leh.
Markaa, raacaya Inverse Conway Maneuver waxay gacan ka geysataa dhisidda nidaamka iyo ururka dhiirigeliya qaab dhismeedka software ee la doonayo. Si kastaba ha ahaatee, waxaa xusid mudan in habkani aanu si fiican ugu shaqayn doonin qaab-dhismeedka hore loo sameeyay iyo qaab-dhismeedyada tan iyo markii isbeddelada marxaladani ay sii dheeraadeen, laakiin si gaar ah ayay u shaqaynaysaa bilawga maadaama ay si degdeg ah u soo bandhigaan isbeddel kasta.
Hannaankan ama "qaab-ka-hortagga" ayaa keenaya dhismaha nidaam aan lahayn wax dhisme ah. Ma jiraan sharciyo, ma jiraan xuduudo, iyo ma jirto xeelad ku saabsan sida loo xakameeyo kakanaanta sii kordhaysa ee lama huraanka ah. Kakanaanta ayaa ah cadowga ugu cabsida badan safarka dhismaha nidaamyada software.
Si aan uga fogaano dhisidda nidaamka noocan oo kale ah, waxaan u baahanahay inaan raacno xeerar gaar ah iyo caqabado.
Waxaa jira qeexitaanno aad u tiro badan oo loogu talagalay Farshaxanka Software-ka. Waxaan jeclahay qaar badan oo iyaga ka mid ah maadaama ay daboolayaan dhinacyo kala duwan. Si kastaba ha ahaatee, si aan u awoodno in aan u sababeyno dhismaha, waxaan u baahannahay si dabiici ah si aan u samayno qaar ka mid ah maskaxdeena. Waxaana xusid mudan in la yiraahdo qeexitaankan ayaa laga yaabaa inuu horumariyo. Markaa, ugu yaraan hadda, waxaan naftayda u hayaa sharraxaadda soo socota.
Software Architecture waxay ku saabsan tahay go'aamo iyo doorashooyin aad samayso maalin kasta kuwaas oo saameeya nidaamka la dhisay.
Si aad u gaadho go'aanno aad u baahan tahay inaad ku haysato mabaadi'da "bacda" iyo qaababka lagu xalliyo dhibaatooyinka soo baxaya, sidoo kale waa lagama maarmaan in la sheego in fahamka shuruudaha ay fure u tahay dhisidda waxa ganacsigu u baahan yahay. Si kastaba ha noqotee, mararka qaarkood shuruuduhu maaha kuwo hufan ama xitaa lama qeexin, kiiskan, way fiicantahay inaad sugto si aad u hesho caddayn dheeraad ah ama ku tiirsanaato khibradaada oo aad ku kalsoonaato dareenkaaga. Laakiin si kastaba ha ahaatee, go'aannada si sax ah uma qaadan kartid haddii aanad lahayn mabaadii' iyo qaabab aad ku tiirsato. Taasi waa meesha aan ku imanayo qeexida Habka Dhismaha Software.
Qaabka Dhismaha Software waa mabaadi' iyo habab tilmaamaya sida loo dhiso software.
Waxaa jira qaabab badan oo kala duwan oo qaab dhismeedka ah oo diiradda lagu saaray dhinacyo kala duwan oo ka mid ah qaab dhismeedka qorshaysan, iyo in la adeegsado ku dhufashada hal mar waa xaalad caadi ah.
Tusaale ahaan, sida:
Nashqada monolithic
Naqshad uu wado domain
Qayb ku salaysan
Adeegyada yaryar
Dhuumaha iyo filtarrada
Dhacdadu horseedday
Microkernel
Adeeg ku jihaysan
iyo wixii la mid ah…
Dabcan, waxay leeyihiin faa'iidooyin iyo faa'iido darrooyinkooda, laakiin waxa ugu muhiimsan ee aan bartay ayaa ah in qaab-dhismeedku si tartiib tartiib ah u kobcayo iyada oo ku xiran dhibaatooyinka dhabta ah. Laga bilaabo qaab-dhismeedka monolithic waa doorasho weyn oo lagu yareeynayo kakanaanta shaqada, waxay u badan tahay in qaab dhismeedkani uu ku habboon yahay baahiyahaaga xitaa ka dib marka la gaaro heerka Alaab-Suuqa Fit (PMI) ee dhismaha alaabta. Qiyaas ahaan, waxaa laga yaabaa inaad tixgeliso inaad u dhaqaaqdo hab-dhacu wado iyo adeegyo yar-yar si loo gaaro hawlgelin madax-bannaan, jawi tikniyoolajiyadeed oo kala duwan, iyo qaab-dhismeed yar oo isku-xidhan (iyo daahfurnaan yar inta lagu jiro wakhtigaas oo ay ugu wacan tahay dabeecadda habab-dhacu wado iyo hab-hoosaad hoosaadyo haddii kuwaas waa la korsaday). Fududeynta iyo hufnaantu waa isku dhow yihiin waxayna leeyihiin saameyn weyn midba midka kale. Caadi ahaan, qaab-dhismeedyada adagi waxay saameeyaan xawaaraha horumarinta sifooyinka cusub, taageeridda iyo ilaalinta kuwa jira, iyo caqabad ku ah horumarka dabiiciga ah ee nidaamka.
Si kastaba ha ahaatee, nidaamyada adag waxay inta badan u baahan yihiin qaab-dhismeed adag oo dhamaystiran, taas oo ah lama huraan.
Si cadaalad ah, kani waa mawduuc aad u ballaadhan, waxaana jira fikrado badan oo waaweyn oo ku saabsan sida loo qaabeeyo loona dhiso nidaamyada horumarka dabiiciga ah. Anigoo ka duulaya waayo-aragnimadayda, waxaan ka shaqeeyay habkan soo socda:
Waxa kale oo aad muhiim u ah in la fahmo tirooyinka iyo cabbirada sida DAU ( Isticmaalayaasha Firfircoon ee Maalinlaha ah), MAU (Isticmalayaasha Firfircoon ee Bil kasta), RPC (Codsiga Ilbiriqsi kasta), iyo TPC (Transaction Per Second) maadaama ay kaa caawin karto inaad sameyso doorashooyin sababtoo ah naqshadeynta Isticmaalayaasha firfircoon ee 100 iyo 100 milyan isticmaaleyaasha firfircoon way kala duwan yihiin.
Qoraal kama dambeys ah, waxaan dhihi lahaa naqshad-dhismeedku waxay saameyn weyn ku leedahay guusha badeecada. Nashqada qaab dhismeedka liidata ee alaabooyinka ayaa looga baahan yahay cabirida, taasoo ay u badan tahay inay horseeddo guul darro maadaama macaamiishu aysan sugi doonin inta aad nidaamka cabbirayso, waxay dooran doonaan tartame, marka waxaan u baahannahay inaan ka horrayno cabbirka suurtagalka ah. In kasta oo aan qirto in mararka qaarkood aanay noqon karin hab-dhaqan lidi ku ah, fikradda ayaa ah in la helo nidaam la miisaami karo balse aan hore loo cabbirin. Dhanka kale, haysashada nidaam aad u adag oo horayba loo miisaamay oo aan lahayn macaamiil ama qorshayaal lagu helo qaar badan oo iyaga ka mid ah waxay kuugu kici doontaa lacag ganacsigaaga lacag la'aan.
Xulashada xirmooyinka tignoolajiyada sidoo kale waa go'aan heer-makro ah maadaama ay saameynayso shaqaaleysiinta, nidaamka aragtiyaha kobaca dabiiciga ah, miisaanka, iyo waxqabadka nidaamka.
Tani waa liiska tixgalinta aasaasiga ah ee doorashada xirmada tignoolajiyada:
Sidee haysashada xirmo tignoolajiyada badan u saameyn kartaa kobaca ganacsiga?
Dhinac marka laga eego, soo bandhigida hal xidhmo oo dheeri ah waxay kordhin kartaa shaqaalayntaada, laakiin dhanka kale, waxay keenaysaa kharashyo dayactir oo dheeri ah maadaama aad u baahan tahay inaad taageerto labada xidhmo. Sidaa darteed, sidaan hore u sheegay, aragtidayda, kaliya baahida dheeraadka ah waa inay noqotaa dood ku saabsan isku dhafka tignoolajiyada badan.
Laakiin maxay ku saabsan tahay mabda'a doorashada qalabka ugu fiican ee dhibaato gaar ah?
Mararka qaarkood ma haysatid doorasho kale oo aan ahayn inaad keento qalab cusub si aad u xalliso dhibaato gaar ah oo ku salaysan isla tixgalinta aan soo sheegnay, xaaladahan oo kale, waxay macno u leedahay in la doorto xalka ugu fiican.
Abuuritaanka nidaamyada iyada oo aan la isku xidhin sare oo tiknoolajiyad gaar ah waxay noqon kartaa caqabad. Weli, way caawinaysaa in lagu dadaalo xaalad aan nidaamku si adag ugu xidhnayn tignoolajiyada, mana dhiman doono haddii berrito, qaab gaar ah ama qalab uu noqdo mid nugul ama xitaa la gooyo.
Tixgelin kale oo muhiim ah waxay la xiriirtaa ku tiirsanaanta ilo-furan iyo software lahaanshaha. Software-ka gaarka ah wuxuu ku siinayaa dabacsanaan yar iyo suurtogalnimada in lagu habeeyo. Weli, qodobka ugu khatarta badan waa qufulka iibiyaha, halkaas oo aad ku tiirsanaato badeecadaha iibiyaha, qiimayaasha, shuruudaha, iyo khariidad waddo. Tani waxay noqon kartaa khatar haddii iibiyuhu beddelo jihada, kordhiyo qiimaha, ama joojiyo alaabta. Software-ka isha furan wuxuu yareeyaa khatartan, maadaama hal qayb uusan xakameynin. Ciribtirka hal dhibic oo guul darro ah oo heer kasta ah ayaa fure u ah dhisidda habab la isku halayn karo oo korriin ah.
Hal dhibic oo guuldarro ah (SPOF) waxa ay tilmaamaysaa qayb kasta oo ka mid ah nidaamka, haddii ay ku guul daraysato, keeni doonta in dhammaan nidaamka uu joojiyo shaqayntiisa. Burburinta SPOF-yada heer walba waxay muhiim u tahay nidaam kasta oo u baahan helitaan sare. Wax kasta, oo ay ku jiraan aqoonta, shaqaalaha, qaybaha nidaamka, bixiyeyaasha daruuraha, iyo fiilooyinka internetka, way fashilmi karaan.
Waxaa jira dhowr farsamooyin aasaasi ah oo aan codsan karno si aan u baabi'inno hal qodob oo guul-darro ah:
Maqaalkan, waxaan ku soo sheegnay dhowr arrimood oo muhiim ah Macro iyo sida aan ula macaamili karno kakanaantahooda.
Waad ku mahadsan tahay akhrinta! Marka xigta waan ku arki doonaa!