Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Maqaalkan, waxaan ka hadli doonaa sida mashruuca aan ka shaqeynayo uu uga beddelay monolith weyn una beddelay adeeg yar yar.

Mashruucu wuxuu bilaabay taariikhdiisa waqti dheer ka hor, bilawgii 2000. Nuqulladii ugu horreeyay waxaa lagu qoray Visual Basic 6. Muddo ka dib, waxaa caddaatay in horumarinta luqaddan ay adkaan doonto in la taageero mustaqbalka, tan iyo IDE-ga. luqadda lafteedana si liidata uma horumarin. Dhammaadkii 2000-meeyadii, waxaa la go'aamiyay in loo beddelo C # oo rajo leh. Nuqulka cusub waxa uu barbar socday dib-u-eegistii kii hore, si tartiib tartiib ah oo aad u badan ayaa loo qoray .NET. Backend in C # ayaa markii hore diiradda lagu saaray qaab-dhismeedka adeegga, laakiin inta lagu guda jiro horumarinta, maktabadaha caadiga ah oo macquul ah ayaa la isticmaalay, iyo adeegyada waxaa lagu bilaabay hal hab. Natiijadu waxay ahayd codsi aan ugu yeernay "adeegga monolith."

Mid ka mid ah faa'iidooyinka yar ee isku-dhafkan ayaa ahaa awoodda adeegyada ay isugu wacaan API dibadda ah. Waxaa jiray shuruudo cadcad oo loogu gudbayo adeeg sax ah, mustaqbalkana, qaab dhismeedka adeega-yaraha.

Waxaan shaqadeena ka bilownay burburka qiyaastii 2015. Wali ma aanaan gaadhin xaalad ku haboon - wali waxa jira qaybo ka mid ah mashruuc weyn oo ay adag tahay in loogu yeedho monoliths, laakiin uma eka sida adeegaha yaryar sidoo kale. Si kastaba ha ahaatee, horumarku waa mid muhiim ah.
Waxaan kaga hadli doonaa maqaalka.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Tusmo

Dhismaha iyo dhibaatooyinka xalka jira


Markii hore, qaabdhismeedku wuxuu u ekaa sidan: UI waa codsi gooni ah, qaybta monolithic waxay ku qoran tahay Visual Basic 6, codsiga NET waa adeegyo la xidhiidha oo la shaqaynaya xog ururin si cadaalad ah u weyn.

Khasaaraha xalkii hore

Hal dhibic oo guul darro ah
Waxaan helnay hal dhibic oo guul darro ah: codsiga NET wuxuu ku socday hal nidaam. Haddii cutub ka mid ah uu guuldareysto, codsiga oo dhan wuu fashilmay oo waa in dib loo bilaabo. Maadaama aan si otomaatig ah ugu samaynay tiro badan oo ah hababka isticmaalayaasha kala duwan, sababtoo ah guuldarrooyinka mid ka mid ah, qof kastaa ma shaqeyn karin in muddo ah. Iyo haddii ay dhacdo qalad software, xitaa kaydinta ma caawin.

Safka hagaajinta
Dib u dhacani waa mid urureed. Codsigayagu waxa uu leeyahay macaamiil badan, dhamaantoodna waxa ay rabaan in ay horumariyaan sida ugu dhakhsaha badan. Markii hore, ma suurtagal ahayn in tan la sameeyo si isku mid ah, dhammaan macaamiishuna waxay istaageen saf. Nidaamkani wuxuu ahaa mid xun ganacsiyada sababtoo ah waxay ahayd inay caddeeyaan in hawshooda ay tahay mid qiimo leh. Waxayna kooxda horumarintu wakhti ku qaadatay abaabulka safkan. Tani waxay qaadatay waqti iyo dadaal badan, iyo badeecada ugu dambeyntii ma beddeli karto sida ugu dhakhsaha badan ee ay jeclaan lahaayeen.

Isticmaalka aan fiicnayn ee ilaha
Marka aan martigelinayno adeegyada hal nidaam, waxaan had iyo jeer si buuxda uga koobiynay habaynta server-ka. Waxaan rabnay in aan meel gaar ah u dhigno adeegyada aadka u cuslaa si aanaan u lumin kheyraadka oo aan u helno kontorool dabacsanaan leh oo ku saabsan nidaamkayaga dirista.

Way adag tahay in la hirgeliyo tignoolajiyada casriga ah
Dhibaato la yaqaan dhammaan horumarinta: waxaa jira rabitaan ah in lagu soo bandhigo tiknoolajiyada casriga ah ee mashruuca, laakiin ma jirto fursad. Xalka monolithic ee weyn, cusboonaysiinta maktabadda hadda jirta, oo aan lagu xusin u-guurka mid cusub, waxay isu beddeshaa hawl aan fududayn. Waxay qaadataa wakhti dheer si loo caddeeyo hogaamiyaha kooxda in tani ay keeni doonto gunooyin ka badan kuwa dareemaha khasaaray.

Dhibaato soo saarista isbeddelada
Tani waxay ahayd dhibaatada ugu daran - waxaan sii deyn jirnay sii deynta labadii biloodba mar.
Siideynta kasta waxay isu rogtay masiibo dhab ah bangiga, in kasta oo ay tijaabiyeen iyo dadaalka horumariyayaashu. Ganacsigu wuxuu fahmay in bilawga usbuuca qaar ka mid ah shaqeyntiisa aysan shaqeyn doonin. Waxayna horumariyayaashu fahmeen in usbuuc shilal halis ah ay sugayeen.
Qof kastaa wuxuu lahaa rabitaan ah inuu wax ka beddelo xaaladda.

Waxa laga filayo adeegyadda yar yar


Arrinta qaybaha marka la diyaariyo. Bixinta qaybaha marka la diyaariyo iyada oo la burburinayo xalka iyo kala saarista hababka kala duwan.

Kooxaha alaabta yaryar. Tani waa muhiim sababtoo ah koox weyn oo ka shaqeysa monolith hore way adkeyd in la maareeyo. Kooxda noocan oo kale ah ayaa lagu qasbay inay u shaqeeyaan si waafaqsan hab adag, laakiin waxay rabeen hal abuur iyo madax-bannaani dheeraad ah. Kaliya kooxo yaryar ayaa awoodi kara tan.

Go'doominta adeegyada hababka kala duwan. Fikrad ahaan, waxaan rabay inaan ku go'doomiyo weelasha, laakiin tiro badan oo adeegyo ah oo ku qoran qaabka NET Framework waxay ku shaqeeyaan kaliya Windows. Adeegyada ku saleysan .NET Core hadda waa soo muuqdaan, laakiin weli waa yar yihiin.

Dabacsanaanta hawlgelinta. Waxaan rabnaa in aan isku darsano adeegyada sida aan ugu baahanahay, ee ma aha sida uu xeerku u qasbo.

Isticmaalka tignoolajiyada cusub. Tani waxay xiiso u leedahay barnaamij kasta.

Dhibaatooyinka kala-guurka


Dabcan, haddii ay fududaan lahayd in monolith loo jebiyo adeegyadda yaryar, looma baahna in laga hadlo shirarka oo laga qoro maqaallo. Dabo-xumo badan baa ku jira geeddi-socodkan, waxaan ku tilmaami doonaa kuwa ugu waaweyn ee naga horjoogsaday.

Dhibka koowaad caadi ahaan monoliths intooda badan: isku xirnaanta macquulka ganacsiga. Marka aan qorno monolith, waxaan rabnaa inaan dib u isticmaalno fasaladayada si aanaan u qorin koodka aan loo baahnayn. Oo markaad u guurto microservices, tani waxay noqotaa dhibaato: dhammaan koodka ayaa si adag u xiran, wayna adagtahay in la kala saaro adeegyada.

Waqtiga bilawga shaqada, kaydku wuxuu lahaa in ka badan 500 mashruuc iyo in ka badan 700 kun oo khadadka code ah. Tani waa go'aan weyn iyo dhibaato labaad. Suurtagal ma ahayn in si fudud loo qaato oo loo qaybiyo adeegaha yaryar.

Dhibka saddexaad - la'aanta kaabayaasha lagama maarmaanka ah. Dhab ahaantii, waxaanu gacanta ku koobiyaynay koodhka isha server-yada.

Sida looga guuro monolith loona guuro adeegaha yaryar


Bixinta Adeegyada Yaryar

Marka hore, waxaan isla markiiba go'aansanay nafteena in kala-soocidda adeeg-yaraha ay tahay habsocod soo noqnoqonaysa. Had iyo jeer waxaa nalooga baahnaa inaan horumarinno mashaakil ganacsi oo is barbar socda. Sida aan tan farsamo ahaan u hirgelin karno waa dhib ina haysata. Sidaa darteed, waxaan u diyaarinay habraac ku celcelin ah. Si kale uma shaqayn doonto haddii aad haysato codsi weyn oo aan markii hore diyaar u ahayn in dib loo qoro.

Waa maxay hababka aan isticmaalno si aan u go'doominno adeegaha yar yar?

Sida ugu horeysa - u dhaqaaji modules jira adeeg ahaan. Marka la eego, waxaan nasiib u yeelannay: waxaa jiray adeegyo horey u diiwaan gashan oo ka shaqeynayay habka WCF. Waxa loo kala saaray shirar gaar ah. Si gooni ah ayaanu u xakameenay, anagoo ku darnay furiye yar dhisme kasta. Waxaa la qoray iyadoo la adeegsanayo maktabadda Topshelf ee cajiibka ah, taas oo kuu oggolaaneysa inaad ku socodsiiso codsiga adeeg ahaan iyo console ahaan labadaba. Tani waxay ku habboon tahay wax-ka-saarista maaddaama aan mashruucyo dheeraad ah looga baahnayn xalka.

Adeegyadu waxay ku xidhmeen si waafaqsan caqli-gal ganacsi, maadaama ay adeegsadeen shirar guud oo ay ku shaqaynayeen xog-ururin guud. Si dhib leh looguma yeedhi karo adeeg-yaraha qaabkooda saafiga ah. Si kastaba ha ahaatee, waxaan u bixin karnaa adeegyadan si gaar ah, habab kala duwan. Tani waxay kaligeed suurtagelisay in la yareeyo saamaynta ay ku leeyihiin midba midka kale, hoos u dhigista dhibaatada horumarinta barbar-dhigga iyo hal dhibic oo guul darro ah.

La kulanka martigeliyaha waa hal xariiq oo kood ah oo fasalka barnaamijka ah. Waxaanu ku qarinay shaqada Topshelf ee fasalka caawimada.

namespace RBA.Services.Accounts.Host
{
   internal class Program
   {
      private static void Main(string[] args)
      {
        HostRunner<Accounts>.Run("RBA.Services.Accounts.Host");

       }
    }
}

Habka labaad ee loo qoondeeyo adeegyada yaryar waa: abuurto si ay u xalliyaan mashaakil cusub. Haddii isla mar ahaantaana monolith uusan korin, tani waa horeba aad u fiican, taas oo macnaheedu yahay inaan u socono jihada saxda ah. Si loo xalliyo dhibaatooyin cusub, waxaan isku daynay inaan abuurno adeegyo gaar ah. Haddii ay jirto fursad noocan oo kale ah, markaa waxaan abuurnay adeegyo badan oo "canonical" ah oo si buuxda u maamula qaabka xogtooda, kayd gaar ah.

Anaga, sida kuwa badan, waxaan ku bilownay adeegyo xaqiijin iyo oggolaansho. Way ku fiican yihiin tan. Way madaxbannaan yihiin, sida caadiga ah, waxay leeyihiin qaab xog gaar ah. Iyaga laftoodu lama falgalaan monolith, kaliya waxay u jeeddaa iyaga si ay u xalliyaan dhibaatooyinka qaarkood. Adeegsiga adeegyadan, waxaad bilaabi kartaa u gudubka qaab dhismeedka cusub, waxaad ka saari kartaa kaabayaasha iyaga, isku day hababka qaar ee la xidhiidha maktabadaha shabakada, iwm. Ma hayno wax koox ah oo ka tirsan ururkayaga oo aan abuuri karin adeeg xaqiijin.

Habka saddexaad ee loo qoondeeyo adeegyada yaryarMidka aan isticmaalno ayaa in yar noo gaar ah. Tani waa ka saarida macquulka ganacsiga ee lakabka UI. Codsigayaga UI ee ugu weyn waa desktop, isaga, sida dhabarka dambe, wuxuu ku qoran yahay C #. Horumariyayaashu waxay si xilliyo ah u sameeyeen khaladaad waxayna u wareejiyeen qaybo macquul ah UI oo ay ahayd inay ka jiraan dhabarka dambe oo dib loo isticmaalo.

Haddii aad eegto tusaale dhab ah oo ka socda koodhka qaybta UI, waxaad arki kartaa in inta badan xalkani uu ka kooban yahay macquul ganacsi oo dhab ah oo faa'iido u leh hababka kale, ma aha oo kaliya dhismaha qaabka UI.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Caqliga dhabta ah ee UI wuxuu ku jiraa kaliya labada xariiq ee ugu dambeeya. Waxaan u wareejinay server-ka si dib loogu isticmaalo, si loo yareeyo UI oo aan gaarno qaab dhismeedka saxda ah.

Habka afraad ee ugu muhiimsan ee lagu karantiilo adeegaha yar yar, taas oo suurtogal ka dhigaysa in la yareeyo monolith, waa ka saarista adeegyada jira iyada oo la farsameeyo. Marka aan ka soo saarno cutubyada jira sida ay tahay, natiijadu mar walba ma jecla kuwa horumariyayaashu jecel yihiin, iyo habka ganacsigu wuxuu noqon karaa mid duug ah tan iyo markii la abuuray shaqeynta. Dib-u-habaynta, waxaan ku taageeri karnaa habka ganacsiga cusub sababtoo ah shuruudaha ganacsigu si joogto ah ayey isu bedelayaan. Waxaan hagaajin karnaa koodhka isha, ka saarno cilladaha la yaqaan, oo aan abuurno qaab xogeed oo wanaagsan. Waxaa jira faa'iidooyin badan oo isa soo taraya.

Kala soocida adeegyada iyo habaynta waxay si aan kala sooc lahayn ugu xidhan tahay fikradda macnaha guud. Tani waa fikrad ka timid Domain Driven Design. Waxay ka dhigan tahay qayb ka mid ah qaabka domainka kaas oo dhammaan shuruudaha hal luuqad si gaar ah loo qeexay. Aynu eegno macnaha guud ee caymiska iyo biilasha tusaale ahaan. Waxaan leenahay codsi monolithic ah, waxaanan u baahanahay inaan la shaqayno akoontiga caymiska. Waxaan ka fileynaa horumariyaha inuu helo fasalka xisaabta ee jira kulan kale, ka tixraac fasalka caymiska, waxaanan yeelan doonaa koodka shaqada. Mabda'a DRY waa la ixtiraami doonaa, hawshu si dhakhso leh ayaa loo qaban doonaa iyadoo la adeegsanayo koodka jira.

Natiijo ahaan, waxay soo baxday in macnaha guud ee xisaabaadka iyo caymiska ay isku xiran yihiin. Maaddaama shuruudo cusub ay soo baxayaan, isku xirkani wuxuu faragelin doonaa horumarka, kordhinta kakanaanta macquulnimada ganacsi ee horeba u adag. Si aad u xalliso dhibaatadan, waxaad u baahan tahay inaad hesho xudduudaha u dhexeeya macnaha guud ee koodhka oo ka saar xadgudubkooda. Tusaale ahaan, marka la eego xaaladda caymiska, waxaa suurtogal ah in lambarka xisaabta bangiga dhexe ee 20-god ah iyo taariikhda xisaabta la furay ay ku filan tahay.

Si aan u kala saarno mawduucyadan xaddidan midba midka kale oo aan bilowno habka kala soocida adeeg-yaraha iyo xalka monolithic, waxaan isticmaalnay hab ay ka mid yihiin abuurista API-yada dibadda ee codsiga dhexdiisa. Haddii aan ogaanay in qaar ka mid ah modulesku uu noqdo adeeg-yaro, oo si uun wax looga beddelay habka dhexdiisa, ka dib waxaan isla markiiba wicitaanno ku samaynay caqli-gal ka tirsan xaalad kale oo xaddidan iyada oo loo marayo wicitaanno dibadda ah. Tusaale ahaan, iyada oo loo marayo REST ama WCF.

Waxaan si adag u go'aansanay inaanaan ka fogaan doonin koodka u baahan macaamil ganacsi qaybsan. Xaaladeena, waxay noqotay mid aad u fudud in la raaco sharcigan. Weli ma aanan la kulmin xaalado halkaas oo macaamilada adag ee loo qaybiyo runtii loo baahan yahay - joogteynta kama dambaysta ah ee u dhaxaysa cutubyada ayaa ku filan.

Aynu eegno tusaale gaar ah. Waxaan haynaa fikradda orkester-ka - dhuumo socodsiiya qaybta "codsiga". Waxa uu samaystaa macmiil, xisaab iyo kaadh bangi markisa. Haddii macmiilka iyo koontada si guul leh loo abuuro, laakiin abuurista kaadhka ayaa ku guuldareysta, codsigu uma guuro heerka "guuleysiga" oo wuxuu ku sii jiraa heerka "kaarka aan la abuurin". Mustaqbalka, dhaqdhaqaaqa asalka ahi wuu soo qaadi doonaa oo dhammayn doonaa. Nidaamku waxa uu ku jiray xaalad iswaafaqsan in muddo ah, laakiin guud ahaan waanu ku qanacsannahay tan.

Haddii ay xaaladdu timaado marka ay lagama maarmaan tahay in si joogto ah loo kaydiyo qayb ka mid ah xogta, waxay u badan tahay inaynu aadi doono xoojinta adeegga si aan ugu socodsiino hal hab.

Aynu eegno tusaale qoondaynta adeeg-yaraha. Sideed ugu keeni kartaa wax soo saarka si badbaado leh? Tusaalahan, waxaan ku haynaa qayb gaar ah oo ka mid ah nidaamka - moduleka adeegga mushaharka, mid ka mid ah qaybaha code-ka kaas oo aan jeclaan lahayn inaan samayno adeeg-yaro.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Marka hore, waxaan abuurnaa adeeg-yaraha annagoo dib u qorayna koodka. Waxaan hagaajineynaa dhinacyo aan ku faraxsaneyn. Waxaan ka hirgelinnaa shuruudaha ganacsi ee cusub ee macaamiisha. Waxaan ku darnaa kadinka API xiriirka ka dhexeeya UI iyo dhabarka dambe, kaas oo bixin doona gudbinta wicitaanka.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Marka xigta, waxaanu ku sii daynaa qaabayntan si uu u shaqeeyo, laakiin xaalad tijaabo ah. Inta badan isticmaalayaashayadu waxay wali ku shaqeeyaan habab ganacsi oo hore. Isticmaalayaasha cusub, waxaan u soo saareynaa nooc cusub oo ah arjiga monolithic oo aan hadda ku jirin nidaamkan. Asal ahaan, waxaan haysanaa isku-dar ah monolith iyo adeeg-yar oo u shaqeeya duuliye ahaan.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Duuliye guuleysta, waxaan fahamsanahay in qaabeynta cusub ay dhab ahaantii shaqeyn karto, waxaan ka saari karnaa monolith-kii hore ee isla'egta oo aan ka tagno qaabeynta cusub ee halkii xalkii hore.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Guud ahaan, waxaan isticmaalnaa ku dhawaad ​​dhammaan hababka jira si loo kala qaybiyo koodhka isha ee monolith. Dhammaantood waxay noo oggolaadaan inaan yareyno cabbirka qaybaha codsiga oo aan u turjuno maktabado cusub, samaynta koodka isha wanaagsan.

La shaqaynta xogta xogta


Xogta waxaa loo qaybin karaa si ka xun koodhka isha, maadaama aysan ku jirin oo keliya qorshaha hadda jira, laakiin sidoo kale xog taariikhi ah oo la ururiyay.

Xogtayada xogta, sida kuwa kale oo badan, waxay lahayd cillad kale oo muhiim ah - cabbirkeeda weyn. Xog-ururintan waxa loo qaabeeyey iyadoo loo eegayo caqli-galnimada ganacsi ee hal-abuurka leh, iyo xidhiidhada ka dhexeeya miisaska xaaladaha kala duwan ee xaddidan.

Xaaladeena, si kor loogu qaado dhammaan dhibaatooyinka (database ballaaran, xiriiro badan, mararka qaarkood xuduudaha aan caddayn ee u dhexeeya miisaska), dhibaato ayaa kacday oo ku dhacda mashaariic badan oo waaweyn: isticmaalka qaabka xogta la wadaago. Xogta waxaa laga soo qaatay jaantusyada iyadoo la eegayo, iyada oo loo marayo ku celcelin, waxaana loo raray nidaamyada kale ee loo baahan yahay ku celcelinta. Natiijo ahaan, miisaska uma rari karno qorshe gaar ah sababtoo ah si firfircoon ayaa loo isticmaalay.

Isla qaybinta xaaladaha xaddidan ee koodka ayaa naga caawiya kala-tagga. Caadi ahaan waxay ina siinaysaa fikrad wanaagsan oo ku saabsan sida aan u burburino xogta heerka kaydka xogta. Waxaan fahamsanahay miisaska ka tirsan hal macnaha guud iyo kan kale.

Waxaan isticmaalnay laba hab oo caalami ah oo qaybinta xogta: kala qaybinta miisaska jira iyo qaybinta habaynta.

Kala qaybinta miisaska hadda jira waa hab wanaagsan oo loo isticmaalo haddii qaabdhismeedka xogta uu wanaagsan yahay, buuxiyo shuruudaha ganacsiga, qof walbana wuu ku faraxsan yahay. Xaaladdan oo kale, waxaan u kala saari karnaa miisaska jira qaab gaar ah.

Waax leh habayn ayaa loo baahan yahay marka qaabka ganacsigu si weyn isu beddelo, miisaskuna aanu mar dambe nagu qancin.

Kala qaybinta miisaska jira. Waxaan u baahanahay inaan go'aan ka gaarno waxa aan ku kala tagi doono. Aqoontan la'aanteed, waxba ma shaqeyn doonaan, halkan kala soocida shuruudaha xaddidan ee koodka ayaa naga caawin doona. Sida caadiga ah, haddii aad fahmi karto xudduudaha macnaha guud ee koodhka isha, waxay caddaynaysaa shaxaha ay tahay in lagu daro liiska waaxda.

Aynu qiyaasno inaynu haysanno xal ay laba qaybood oo monolith ah ay la falgalaan hal kayd. Waxaan u baahanahay inaan hubinno in hal module kaliya uu la falgalo qaybta miisaska kala duwan, kan kalena wuxuu bilaabaa inuu la falgalo iyada oo loo marayo API. Si loo bilaabo, way ku filan tahay in duubista kaliya lagu sameeyo API-ga. Tani waa shuruud lagama maarmaan ah si aan uga hadalno madax-bannaanida adeegyada yaryar. Xiriirinta wax-akhrisku waxay ahaan karaan ilaa iyo inta aysan jirin dhibaato weyn.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Talaabada xigta waa in aan kala sooci karno qaybta code ee ku shaqeysa miisaska kala duwan, oo leh ama aan la farsameyn, oo u gelinayna adeeg yar oo gaar ah oo u socodsiiya hab gaar ah, weel. Tani waxay noqon doontaa adeeg gaar ah oo xidhiidh la leh kaydka xogta monolith iyo miisaska aan si toos ah ula xidhiidhin. Hal-ku-dheggu weli wuxuu la falgalaa wax-akhrinta qaybta la go'i karo.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Ka dib waxaan ka saari doonaa xiriirkan, taas oo ah, akhrinta xogta codsiga monolithic ee miisaska kala go'an ayaa sidoo kale loo wareejin doonaa API.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Marka xigta, waxaan ka dooran doonaa xogta guud ee miisaska ay ku shaqeeyaan oo keliya adeegga yar yar ee cusub. Waxaan u rari karnaa miisaska qorshe gaar ah ama xitaa xog ururin gaar ah. Weli waxaa jira xiriir akhris oo u dhexeeya microservice iyo database monolith, laakiin ma jiraan wax laga walwalo, qaabeyntan waxay ku noolaan kartaa waqti dheer.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Talaabada ugu dambeysa waa in gabi ahaanba meesha laga saaro dhammaan xiriirada. Xaaladdan oo kale, waxa laga yaabaa inaan u baahanahay inaan ka haajiro xogta kaydka muhiimka ah. Mararka qaarkood waxaan rabnaa inaan dib u isticmaalno qaar ka mid ah xogta ama hagayaasha laga soo minguuriyay nidaamyada dibadda ee dhowr kayd. Tani waxay nagu dhacdaa si xilliyo ah.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Waaxda habaynta. Habkani wuxuu aad ula mid yahay kii hore, kaliya waa siday u kala horreeyaan. Waxaan isla markiiba u qoondaynaynaa xog-ururin cusub iyo adeeg-yar oo cusub oo la falgala monolith-ka iyada oo loo marayo API. Laakin isla mar ahaantaana, waxaa haray jaantusyo xog-ururin ah oo aan rabno inaan mustaqbalka tirtirno. Mar dambe uma baahnin; waxaan ku beddelnay qaabka cusub.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Si uu qorshahani u shaqeeyo, waxa ay u badan tahay in aanu u baahan doono xilli kala guur ah.

Waxaa markaa jira laba hab oo suurtagal ah.

Marka hore: Waxaan nuqul ka samaynaa dhammaan xogta ku jirta kaydadka cusub iyo kuwii hore. Xaaladdan oo kale, waxaan haynaa xogta ka-noqoshada waxaana laga yaabaa inay soo baxaan dhibaatooyinka is-dhexgalka. Laakiin waxaan qaadan karnaa laba macmiil oo kala duwan. Mid ayaa la shaqayn doona nooca cusub, kan kalena wuxuu la shaqayn doonaa kii hore.

Midka labaadWaxaan u qaybin xogta iyadoo loo eegayo shuruudaha ganacsiga qaarkood. Tusaale ahaan, waxaan haysanay 5 badeeco oo ku jira nidaamka oo lagu kaydiyay kaydkii hore. Waxaan ku dhejineynaa midka lixaad ee shaqada cusub ee ganacsiga gudaha xog cusub. Laakiin waxaan u baahan doonaa API Gateway kaas oo isku dubaridi doona xogtan oo tusi doona macmiilka halka iyo waxa laga helayo.

Labada habba way shaqeeyaan, dooro iyadoo ku xidhan xaaladda.

Ka dib markii aan hubno in wax walba ay shaqeeyaan, qaybta monolith ee ka shaqeysa qaabdhismeedka xogta hore waa la curyaami karaa.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Tallaabada ugu dambeysa waa in meesha laga saaro qaab-dhismeedka xogta hore.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Si loo soo koobo, waxaan dhihi karnaa in aan dhibaato ku qabno database-ka: way adagtahay in lala shaqeeyo marka la barbardhigo koodhka isha, way adagtahay in la wadaago, laakiin waa la samayn karaa waana in la sameeyaa. Waxaan helnay siyaabo dhowr ah oo noo ogolaanaya inaan tan si badbaado leh u sameyno, laakiin weli way fududahay in qalad lagu sameeyo xogta marka loo eego koodka isha.

Ku shaqaynta koodka isha


Tani waa sida jaantuska koodhka isha uu u ekaa markii aan bilownay falanqaynta mashruuca monolithic.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Qiyaastii waxa loo qaybin karaa saddex lakab. Tani waa lakabka cutubyada la bilaabay, plugins, adeegyada iyo hawlaha gaarka ah. Dhab ahaantii, kuwani waxay ahaayeen meelo laga soo galo gudaha xal keli keli ah. Dhammaantood si adag ayaa loogu xidhay lakabka guud. Waxay lahayd caqli-gal ganacsi oo ay adeegyadu wadaagaan iyo xidhiidho badan. Adeeg kasta iyo plugin kasta waxa loo adeegsaday ilaa 10 ama in ka badan oo shirar oo caadi ah, iyadoo ku xidhan cabbirkooda iyo damiirka horumariyayaashu.

Waxaan nasiib u yeelannay maktabado kaabayaasha dhaqaalaha ah oo si gaar ah loo isticmaali karo.

Mararka qaarkood xaalad ayaa kacday markii qaar ka mid ah walxaha caadiga ah aysan ka tirsanayn lakabkan, laakiin ay ahaayeen maktabado kaabayaasha. Tan waxaa lagu xalliyay magac-beddelid.

Welwelka ugu weyn wuxuu ahaa xaaladaha xaddidan. Waxa dhacday in 3-4 xaaladood lagu qaso hal kulan oo la wada leeyahay oo midba midka kale u adeegsaday hawlo ganacsi oo isku mid ah. Waxa lama huraan noqotay in la fahmo meesha tan loo qaybin karo iyo xudduudaha, iyo waxa ku xiga ee la samaynayo iyada oo loo samaynayo qaybtan ururrada koodhka isha.

Waxaan dejinay xeerar dhowr ah oo ku saabsan habka qaybinta koodka.

Marka hore: Mar dambe ma aan doonayn in aan wadaagno macquulka ganacsiga ee u dhexeeya adeegyada, hawlaha iyo plugins. Waxaan rabnay inaan ka dhigno macquulka ganacsiga ee ka madax bannaan adeegyadda yaryar dhexdooda. Adeegga yar-yar, dhanka kale, waxa si fiican loogu fikiraa inay yihiin adeegyo si buuxda u jira. Waxaan aaminsanahay in habkani uu yahay mid khasaare ah, oo ay adag tahay in la gaaro, sababtoo ah, tusaale ahaan, adeegyada C # kiis kasta waxaa lagu xiri doonaa maktabad caadi ah. Nidaamkeena wuxuu ku qoran yahay C #; weli ma aanan isticmaalin tignoolajiyada kale. Sidaa darteed, waxaan go'aansanay inaan awoodno inaan isticmaalno shirarka farsamada ee caadiga ah. Waxa ugu muhiimsan waa in aysan ku jirin wax jajab ah oo macquul ah ganacsiga. Haddii aad haysato baakad ku habboon ORM-ka aad isticmaalayso, markaa ka koobiyeynta adeeg ilaa adeeg aad bay qaali u tahay.

Kooxdayadu waxay taageere u tahay naqshadaynta domain-ka, markaa naqshadaynta basasha ayaa nagu habboonayd annaga. Saldhigga adeegyadeenu maaha lakabka gelitaanka xogta, laakiin shir leh caqli-gal domain, kaas oo ka kooban caqli-gal ganacsi oo keliya oo aan xidhiidh la lahayn kaabayaasha. Isla mar ahaantaana, waxaan si madaxbanaan wax uga beddeli karnaa kulanka domain si loo xalliyo dhibaatooyinka la xiriira qaab-dhismeedka.

Marxaladdan waxaan la kulannay dhibkayagii ugu horreeyay ee halis ah. Adeeggu waa inuu tixraacaa hal kulan oo domain ah, waxaan rabnay inaan ka dhigno macquulnimada madax-bannaan, iyo mabda'a qallalan ayaa si weyn noogu carqaladeeyay halkan. Horumariyayaashu waxay rabeen inay dib u isticmaalaan fasalada shirarka deriska ah si ay uga fogaadaan nuqul ka mid ah, natiijadu, domains ayaa bilaabay in mar kale la isku xiro. Waxaan falanqeynay natiijooyinka waxaana go'aansanay in laga yaabo in dhibaatadu ay sidoo kale ku taal aagga qalabka kaydinta koodhka isha. Waxaan haysanay bakhaar weyn oo ka kooban dhammaan koodka isha. Xalka mashruuca oo dhan wuxuu ahaa mid aad u adag in la isku keeno mashiinka maxaliga ah. Sidaa darteed, xalal yar yar oo gaar ah ayaa loo abuuray qaybo ka mid ah mashruuca, cidina ma mamnuucin in lagu daro qaar ka mid ah kuwa la wadaago ama domain-ka oo dib loo isticmaalo. Qalabka kaliya ee noo ogolaan waayay inaan tan samayno waxay ahayd dib u eegista code. Laakiin mararka qaarkood way ku guuldareysatay.

Ka dib waxaan bilownay inaan u guurno moodal leh meelo kala duwan. Caqliga ganacsigu kuma socdo adeeg ilaa adeeg, goobuhu run ahaantii waxay noqdeen kuwo madax banaan. Qodobbada xaddidan ayaa si cad loo taageeraa. Sideen dib ugu isticmaali karnaa maktabadaha kaabayaasha? Waxaan u kala saarnay meel gooni ah oo kayd ah, ka dibna waxaan ku ridnay baakadaha Nuget, oo aan ku ridnay Farsamoyaqaan. Isbeddel kasta, isu imaatinka iyo daabacaadda ayaa si toos ah u dhacda.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Adeegyadayadu waxay bilaabeen inay tixraacaan xirmooyinka kaabayaasha gudaha si la mid ah kuwa dibadda. Waxaan ka soo dejisaneynaa maktabadaha dibadda Nuget. Si aan ula shaqeyno Farshaxanka, halkaasoo aan dhignay xirmooyinkan, waxaan isticmaalnay laba maareeyayaal xirmo. Bakhaarro yaryar ayaan sidoo kale u isticmaalnay Nuget. Goobaha kaydka ah ee leh adeegyo badan, waxaan u isticmaalnay Paket, kaas oo bixiya nooc dheeraad ah oo joogto ah oo u dhexeeya cutubyada.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Markaa, annagoo ka shaqaynayna koodhka isha, wax yar ka beddelaya qaab-dhismeedka iyo kala-soocidda bakhaarrada, waxaanu ka dhigaynaa adeegyadeenna kuwo madaxbannaan.

Dhibaatooyinka kaabayaasha


Inta badan dhibaatooyinka hoos u dhaca u guurista adeegyada yar yar waa kaabayaasha la xiriira. Waxaad u baahan doontaa hawlgelin toos ah, waxaad u baahan doontaa maktabado cusub si aad u socodsiiso kaabayaasha.

Ku rakibida gacanta ee deegaanka

Markii hore, waxaan gacanta ku rakibnay xalka deegaanka. Si loo habeeyo habkan, waxaan abuurnay dhuumaha CI/CD. Waxaan dooranay habka gaarsiinta joogtada ah sababtoo ah keenista joogtada ah weli nama aqbalin marka laga eego aragtida hababka ganacsiga. Sidaa darteed, u dirida hawlgalka waxaa lagu fuliyaa iyadoo la adeegsanayo badhanka, iyo tijaabinta - si toos ah.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Waxaan u isticmaalnaa Atlassian, Bitbucket kaydinta koodhka isha iyo Bamboo dhismaha. Waxaan jecelnahay in aan ku qorno qoraallada dhismaha ee Keega sababtoo ah waxay la mid tahay C #. Xirmooyinka diyaarsan ayaa u yimaadda Artifatory, oo Ansible si toos ah u gelaya server-yada tijaabada, ka dib isla markiiba waa la tijaabin karaa.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Goynta goonida ah


Hal mar, mid ka mid ah fikradaha monolith wuxuu ahaa in la bixiyo geedo la wadaago. Waxaan sidoo kale u baahneyn inaan fahamno waxa lagu sameeyo logyada gaarka ah ee ku jira saxanada. Logooyadayada waxa lagu qoraa galalka qoraalka. Waxaan go'aansanay inaan isticmaalno xirmo ELK caadiga ah. Si toos ah uguma qorin ELK bixiyeyaasha, laakiin waxaan go'aansanay inaan dhamaystirno diiwaanka qoraalka oo aan ku qorno aqoonsiga raadraaca sida aqoonsi ahaan, ku dar magaca adeegga, si qoraalladan loo kala saaro mar dambe.

Ka gudubka monolith ilaa adeegaha yar yar: taariikhda iyo dhaqanka

Isticmaalka Filebeat, waxaan fursad u helnaa inaan ka soo uruurinno diiwaannadayada server-yada, ka dibna aan beddelno, isticmaalno Kibana si aan u dhisno weydiimaha UI oo aan aragno sida wicitaanku u dhex maray adeegyada. Aqoonsiga raadraaca ayaa wax badan ka caawiya arrintan.

Tijaabinta iyo ka saarida adeegyada la xidhiidha


Markii hore, si buuxda uma aynaan fahmin sida loo ciribtiro adeegyada la horumarinayo. Wax walba way fududaayeen monolith-ka; waxaanu ku wadnay mishiin maxalli ah. Markii hore waxay isku dayeen inay sidaas oo kale ku sameeyaan microservices, laakiin mararka qaarkood si aad si buuxda u bilowdo hal adeeg oo yar waxaad u baahan tahay inaad bilowdo dhowr kale, tanina waa dhib. Waxaan ogaanay inaan u baahanahay inaan u guurno qaab halkaas oo aan kaga tagno mashiinka maxalliga ah kaliya adeegga ama adeegyada aan rabno inaan khaladno. Adeegyada soo haray waxaa laga isticmaalaa server-yada ku habboon qaabeynta prod. Ka dib markii la tirtiro, inta lagu jiro tijaabada, hawl kasta, kaliya adeegyada la beddelay ayaa la siiyaa server-ka tijaabada. Sidaa darteed, xalka waxaa lagu tijaabiyaa qaabka uu u muuqan doono wax soo saarka mustaqbalka.

Waxaa jira adeegayaal kaliya oo maamula noocyada wax soo saarka ee adeegyada. Adeegayaashan ayaa loo baahan yahay haddii ay dhacdo shilal, si loo hubiyo keenista ka hor inta aan la dirin iyo tababarka gudaha.

Waxaan ku darnay habka tijaabada otomaatiga ah anagoo adeegsanayna maktabadda Specflow ee caanka ah. Tijaabooyinku waxay si toos ah u socdaan iyadoo la isticmaalayo NUnit isla markaaba ka dib marka laga soo diro Ansible. Haddii daboolka shaqadu uu si toos ah u yahay mid toos ah, markaa ma jirto baahi loo qabo tijaabinta gacanta. In kasta oo mararka qaarkood loo baahan yahay baadhitaan gacan-ku-dhiigle oo dheeraad ah. Waxaan u isticmaalnaa tags gudaha Jira si aan u go'aamino imtixaanada loo wado arin gaar ah.

Intaa waxaa dheer, baahida loo qabo tijaabinta culeyska ayaa kor u kacday; markii hore waxaa la fuliyay oo keliya xaalado dhif ah. Waxaan u isticmaalnaa JMeter si aan u wadno imtixaanada, InfluxDB si loo kaydiyo, iyo Grafana si loo dhiso garaafyada habka.

Maxaan haleelnay?


Marka hore, waxaan ka takhalusnay fikradda "sii daynta". Waxaa meesha ka baxay siideyntii foosha xumayd ee labada bilood ahayd markii kolossuskan la geeyay deegaan wax soo saar, taasoo si ku meel gaadh ah u carqaladaynaysa habsocodka ganacsiga. Hadda waxaan direynaa adeegyada celcelis ahaan 1,5 maalmood kasta, anagoo kooxeynaya sababtoo ah waxay shaqeeyaan oggolaanshaha ka dib.

Ma jiraan wax guuldarro ah oo dilaa ah oo ku jira nidaamkayaga. Haddii aan ku sii deyno adeeg-yaraha oo leh bug, markaa shaqeynta la xiriirta waa la jebin doonaa, dhammaan hawlaha kale ma saameyn doonaan. Tani waxay si weyn u wanaajisaa khibrada isticmaalaha.

Waxaan xakameyn karnaa qaabka geynta. Waxaad dooran kartaa kooxaha adeegyada si ka duwan inta kale ee xalka, haddii loo baahdo.

Intaa waxaa dheer, waxaan si weyn u yareynay dhibaatada iyada oo saf ballaaran oo hagaajin ah. Waxaan hadda leennahay kooxo alaabooyin gaar ah oo si madax-bannaan ula shaqeeya adeegyada qaarkood. Habka Scrum mar horeba halkan waa ku habboon yahay. Koox gaar ah ayaa laga yaabaa inay lahaato Mulkiilaha Alaabta gaarka ah kaas oo u xilsaaray hawlo.

Soo koobid

  • Adeegyada yar yar ayaa si fiican ugu habboon burburinta nidaamyada adag. Geedi socodka, waxaan bilaabeynaa inaan fahamno waxa ku jira nidaamkeena, waxa xaddidan ee xaddidan ee jira, halka xuduudkoodu yaal. Tani waxay kuu ogolaaneysaa inaad si sax ah ugu qaybiso hagaajinta cutubyada oo aad ka hortagto jahwareerka koodka.
  • Adeegyada yaryar waxay bixiyaan faa'iidooyin urureed. Inta badan waxaa looga hadlaa oo kaliya sida qaab-dhismeedka, laakiin qaab dhismeed kasta ayaa loo baahan yahay si loo xalliyo baahiyaha ganacsiga, oo aan keligiis ahayn. Sidaa darteed, waxaan dhihi karnaa in adeegaha yaryar ay si fiican ugu habboon yihiin xallinta dhibaatooyinka kooxaha yaryar, marka loo eego in Scrum uu aad caan u yahay hadda.
  • Kala soociddu waa habsocod soo noqnoqonaysa. Ma qaadan kartid codsi oo si fudud ugu kala qaybin adeegyadda yaryar. Alaabta soo baxday uma badna inay shaqeyso. Markaad u hurayso adeegaha yaryar, waxaa faa'iido leh in dib loo qoro dhaxalka jira, taas oo ah, u beddelo koodh aan jecelnahay oo si fiican u daboolaya baahiyaha ganacsiga ee shaqeynta iyo xawaaraha.

    Digniin yar: Kharashyada u wareegida adeegaha yar yar ayaa aad u weyn. Waxay qaadatay wakhti dheer in la xalliyo dhibaatada kaabayaasha oo keliya. Markaa haddii aad haysato codsi yar oo aan u baahnayn miisaan gaar ah, ilaa aad haysato tiro badan oo macaamiil ah oo ku tartamaya dareenka kooxdaada iyo wakhtiga, markaa adeegaha yaryar ayaa laga yaabaa inaanay noqon waxa aad u baahan tahay maanta. Waa qaali. Haddii aad nidaamka ku bilowdo adeeg-yaro, markaa kharashyadu marka hore way ka badnaan doonaan haddii aad bilowdo mashruuc isku mid ah horumarinta monolith.

    P.S. Sheeko dareen badan (iyo sida haddii adiga shakhsi ahaan) - sida laga soo xigtay link.
    Waa kan warbixinta oo dhameystiran.

Source: www.habr.com

Add a comment