Monorepositories: fadlan, waa in

Monorepositories: fadlan, waa in

Turjumaada maqaalka loo diyaariyey ardayda koorsada "Dhaqanka iyo qalabka DevOps" ee mashruuca waxbarashada OTUS.

Waa inaad doorataa hal-abuurnimo sababtoo ah hab-dhaqanka ay kor ugu qaaddo kooxahaaga waa daahfurnaan iyo masuuliyad la wadaago, gaar ahaan marka ay kooxuhu koraan. Si kastaba ha noqotee, waa inaad ku maalgelisaa qalabaynta, laakiin had iyo jeer way fiicantahay haddii dabeecadda caadiga ah ay tahay dhaqanka aad rabto amarradaada.

Maxaan uga hadlaynaa arrintan?

Matt Klein ayaa qoray maqaalka "Monorepos: Fadlan ha sameyn!"β€Š (Xusuusinka tarjumaanka: Turjumaadda HabrΓ© "Monorepositories: fadlan ha sameyn"). Waan jeclahay Matt, waxaan u maleynayaa inuu aad u caqli badan yahay waana inaad akhridaa aragtidiisa. Wuxuu markii hore soo dhigay codbixinta Twitter-ka:

Monorepositories: fadlan, waa in

Tarjumaad:
Maalinta Sannadka Cusub, waxaan doonayaa inaan ka doodo sida monorepositories u qosol badan yihiin. 2019 wuxuu ku bilaabmay aamusnaan. Anigoo ka duulaya tan, waxaan ku siinayaa sahan. Waa kuwee kuwa aadka u jecel? Taageerayaasha:
- Monorepo
- miridhku
- Ra'yi ururin khaldan/labadaba

Jawaabtaydu waxay ahayd, "Run ahaantii waxaan ahay labadaas qof." Halkii laga hadli lahaa sida miridhku u yahay daroogo, aynu eegno sababta aan u malaynayo inuu khaldan yahay monorepositories. Wax yar oo naftaada ku saabsan. Anigu waxaan ahay CTO-ga Kuug Software Waxaan haynaa ilaa 100 injineer, saldhig koodhka oo dib u soo laabanaya ilaa 11-12 sano, iyo 4 badeecooyin waaweyn ah. Qaar ka mid ah koodkan waxay ku yaalliin polyrepository (booskeyga bilowga), qaar waxay ku jiraan monorepository (booska hadda).

Kahor intaanan bilaabin: dood kasta oo aan halkan ku sameeyo waxay khusaysaa labada nooc ee kaydinta. Fikradayda, ma jirto sabab farsamo oo aad u dooranayso hal nooc oo kayd ah mid kale. Waxaad samayn kartaa hab kasta oo shaqeeya. Waan ku faraxsanahay inaan ka hadlo, laakiin ma xiisaynayo sababo farsamo oo macmal ah oo mid ka mid ah uu ka sarreeyo mid kale.

Waan ku raacsanahay qaybta koowaad ee qodobka Matt:

Sababtoo ah qiyaasta, monorepository-ku wuxuu xallin doonaa dhammaan dhibaatooyinka isku midka ah ee polyrepository-ga xalliyo, laakiin isla markaa kugu qasbaya inaad si adag u dhejiso koodkaaga oo u baahan dadaallo cajiib ah si kor loogu qaado miisaanka nidaamka xakamaynta noocaaga.

Waa inaad xallisaa isla dhibaatooyin la mid ah haddii aad doorato monorepository ama polyrepository. Sideed u sii dayn kartaa? Waa maxay habka aad u wajaheyso cusbooneysiinta? Waafaqid gadaal? Ku tiirsanaanta mashruuca? Waa maxay qaababka dhismaha ee la aqbali karo? Sideed u maamushaa dhismahaaga iyo tijaabinta kaabayaashaaga? Liisku waa mid aan dhammaad lahayn. Oo waxaad xallin doontaa dhammaantood markaad koraan. Ma jiro farmaajo bilaash ah.

Waxaan filayaa in dooda Matt ay la mid tahay aragtiyaha ay wadaagaan injineero badan (iyo maareeyayaal) waan ixtiraamaa. Tani waxay ka dhacdaa marka loo eego injineerka ka shaqeeya qaybta ama kooxda ka shaqaynaysa qaybta. Waxaad maqleysaa waxyaabo ay ka mid yihiin:

  • Meesha codebase waa weyn tahay- uma baahni qashinkan oo dhan.
  • Way adagtahay in la tijaabiyo sababtoo ah waa inaan tijaabiyaa dhammaan qashinkaan oo dhan ee aanan u baahnayn.
  • Way adagtahay in lala shaqeeyo ku tiirsanaanta dibadda.
  • Waxaan u baahanahay nidaamyadayga kontoroolka nooca casriga ah.

Dabcan, dhammaan qodobadan waa kuwo xaq ah. Tani waxay ku dhacdaa labada xaaladood - ee polyrepository-ka waxaan haystaa qashinkayga gaarka ah, marka lagu daro midka loo baahan yahay dhismaha ... sidoo kale waxaan u baahanahay qashinka kale. Markaa waxaan "si fudud" u abuurayaa qalab hubinaya mashruuca oo dhan. Ama waxaan abuuraa monorepository been abuur ah oo leh submodules. Waan ku socon karnaa tan maalinta oo dhan. Laakiin waxaan u maleynayaa in dooda Matt ay seegtay sababta ugu weyn, taas oo aan si xoog leh u rogay aniga oo doorbiday monorepository:

Waxay kicisaa isgaarsiinta waxayna muujisaa dhibaatooyin

Marka aan kala saarno kaydadka, waxaan abuurnaa isuduwidda dhabta ah iyo dhibaatada daahfurnaanta. Tani waxay u dhigantaa habka aan uga fikirno kooxaha (gaar ahaan sida xubnaha shakhsi ahaaneed uga fikiraan iyaga): waxaan mas'uul ka nahay qayb gaar ah. Waxaan ku shaqeynaa meel gooni ah. Xuduuduhu waxay ku go'an yihiin kooxdayda iyo qaybaha aan ka shaqaynayno.

Marka qaab-dhismeedku noqdo mid kakan, koox kaligeed ma maamuli karto. Injineero aad u yar ayaa nidaamka oo dhan madaxooda ku jira. Aynu nidhaahno waxaad maamushaa qayb A la wadaago oo ay adeegsadaan Kooxaha B, C, iyo D. Kooxda A ayaa dib u habaynaysa, hagaajinaysa API-ga, iyo sidoo kale beddelka fulinta gudaha. Natiijo ahaan, isbeddelladu maaha kuwo dib u socon kara. Maxaa talo ah oo aad haysaa?

  • Soo hel dhammaan meelaha API-gii hore lagu isticmaalay
  • Ma jiraan meelo API-ga cusub aan la isticmaali karin?
  • Miyaad hagaajin kartaa oo tijaabin kartaa qaybaha kale si aad u hubiso inaysan jabin?
  • Kooxahani ma tijaabin karaan isbedeladaada hadda?

Fadlan la soco in su'aalahani ay ka madax bannaan yihiin nooca kaydka. Waxaad u baahan doontaa inaad hesho kooxaha B, C iyo D. Waxaad u baahan doontaa inaad la hadasho, wakhti ogaato, fahanto muhimadooda. Ugu yaraan waxaan rajaynaynaa inaad.

Qofna runtii ma rabo inuu tan sameeyo. Tani aad ayey uga xiiso yartahay marka loo eego kaliya hagaajinta API damn. Waxaas oo dhami waa dad iyo qas. Goobta kaydka badan, waxaad si fudud u samayn kartaa isbeddello, sii dadka ka shaqaynaya qaybtaas (malaha B, C ama D) si ay dib u eegis ugu sameeyaan, una dhaqaaqdo. Kooxaha B, C iyo D waxa ay la joogi karaan noocooda hadda. Waxay dib u cusbooneysiin doonaan marka ay gartaan garaadkaaga!

Meesha monorepository ah, mas'uuliyadda waxaa loo wareejiyaa si toos ah. Kooxda A waxay beddeshaa qaybtooda oo, haddii aanay taxadir lahayn, isla markiiba jebiya B, C iyo D. Tani waxay keenaysaa in B, C iyo D ay ka soo muuqdaan albaabka A, iyagoo la yaaban sababta Kooxda A u jabisay shirka. Tani waxay baraysaa A in aysan ka boodi karin liiskayga sare. Waa inay ka hadlaan waxay samayn doonaan. B, C iyo D ma dhaqaaqi karaan? Maxaa dhacaya haddii B iyo C ay awoodaan, laakiin D ay si dhow ula xiriirto saameyn dhinaca habdhaqanka algorithm hore?

Markaa waa inaan ka hadalnaa sidii aan uga bixi lahayn xaaladdan:

  1. Taageerada API-yo badan oo gudaha ah, oo waxay calaamadin doontaa algorithmaadka hore sidii uu go'ay ilaa D uu joojin karo isticmaalkiisa.
  2. Taageerada noocyo badan oo sii dayn ah, mid leh interface hore, mid leh mid cusub.
  3. Dib u dhig sii daynta isbeddelada A ilaa B, C, iyo D ay isku mar aqbali karaan.

Aynu nidhaahno waxaan dooranay 1, APIs dhowr ah. Xaaladdan oo kale waxaan haynaa laba qaybood oo kood ah. Hore iyo mid cusub. Aad ugu habboon xaaladaha qaarkood. Waxaan dib u hubinaa koodkii hore, waxaanu ku calaamadeynaa inuu go'ay, oo aanu ku heshiino jadwalka ka saarida kooxda D.

Si loo sii daayo noocyo badan, waxaan u baahanahay laan. Hadda waxaan leenahay laba qaybood - A1 iyo A2. Kooxaha B iyo C waxay isticmaalaan A2 iyo D waxay isticmaalaan A1. Waxaan u baahanahay qayb kasta si ay ugu diyaargarowdo sii deynta sababtoo ah cusbooneysiinta amniga iyo hagaajinta cayayaanka kale ayaa laga yaabaa in loo baahdo ka hor intaan D hore u socon. In polyrepository ah, waxaan ku qarin karnaa tan laan cimri dheer oo dareemaya wanaag. In monorepository ah, waxaan ku qasbi code in lagu abuuro module cusub. Kooxda D wali waa inay isbedel ku sameeyaan qayb "jir" ah. Qof kastaa wuu arki karaa kharashka aanu halkan ku bixinayno - hadda waxaanu haynaa kood labanlaab ka badan, iyo wixii hagaajin kutaan ah ee khuseeya A1 iyo A2 waa inay labadoodaba khuseeyaan. Iyada oo habka laanta ee kaydka badan, tani waxay ku qarsoon tahay gadaasha cherry-pick. Waxaan u aragnaa in qiimaha uu hooseeyo sababtoo ah ma jiro nuqul. Marka la eego aragtida dhabta ah, qiimuhu waa isku mid: waxaad dhisi doontaa, sii deyn doontaa, oo aad ilaalin doontaa laba saldhig oo isku mid ah ilaa aad ka tirtirto mid ka mid ah. Farqiga u dhexeeya ayaa ah in monorepository uu xanuunkani yahay mid toos ah oo muuqda. Tani way ka sii daran tahay, taasina way fiican tahay.

Ugu dambayntii, waxaanu gaadhnay qodobkii saddexaad. Daahitaanka sii daynta Waxaa suurtogal ah in isbeddelada ay sameeyeen A ay wanaajiyaan nolosha kooxda A. Muhiim, laakiin aan degdeg ahayn. Ma dib u dhigi karnaa? Goobta polyrepository-ka ah, waxaanu tan ku riixaynaa si aanu u dhejinno farshaxanimada. Dabcan tan waxaan u sheegaynaa kooxda D. Kaliya ku sii jir nooca hore ilaa aad ka qabato! Tani waxay kuu dejinaysaa inaad fulayga ciyaarto. Kooxda A waxay sii wadaan inay ka shaqeeyaan qaybtooda, iyaga oo iska indhatiraya xaqiiqda ah in kooxda D ay isticmaalayso nooc sii kordheysa oo duugoobay (taasi waa dhibka kooxda D, waa nacasyo). Dhanka kale, Kooxda D waxay si liidata uga hadashaa habdhaqanka taxadar la'aanta ah ee kooxda A ee ku wajahan xasiloonida koodhka, haddii ay ka hadlaan gabi ahaanba. Bilo ayaa dhaafa Ugu dambeyntii, Kooxda D waxay go'aansatey inay eegaan suurtagalnimada cusboonaysiinta, laakiin A kaliya ayaa leh isbeddello badan. Kooxda A si dhib leh ayey u xasuusan yihiin goorta ama sida ay u jebiyeen D. Kor u qaadista ayaa ka xanuun badan waxayna qaadan doontaa waqti dheer. Kaas oo hoos u sii dhigaya kaydka mudnaanta leh. Ilaa maalinta aan ku yeelano arrin amni A oo nagu qasbaysa in aan laan ka dhigno. Kooxda A waa in ay dib ugu noqotaa wakhtigeedii, hel dhibic marka D xasiloon tahay, dhibka halkaa ku hagaajiyaan, oo diyaar u ahaadaan sii deynta. Tani waa doorashada dhabta ah ee dadku sameeyaan, waana tan ugu xun. Waxay u muuqataa inay u fiican tahay labada Kooxda A iyo Kooxda D ilaa inta aan iska indha tiri karno midba midka kale.

In monorepository ah, ka saddexaad runtii maahan ikhtiyaar. Waxa lagugu qasbay in aad xaalada wax uga qabato laba siyaabood midkood. Waxaad u baahan tahay inaad aragto kharashaadka haysashada laba laamood oo la sii daayo. Baro inaad naftaada ka ilaaliso cusboonaysiinta jabinaysa iswaafajinta gadaal. Laakiin tan ugu muhiimsan: ma ka maarmi kartid wada hadal adag.

Waayo-aragnimadayda, marka kooxuhu ay weynaadaan, suurtogal maaha in nidaamka oo dhan maskaxda lagu hayo, taasina waa qaybta ugu muhiimsan. Waa inaad hagaajisaa muuqaalka khilaafka nidaamka. Waa inaad si firfircoon u shaqeysaa si aad u hesho kooxuhu inay ka fogaadaan qaybahooda oo ay eegaan shaqada kooxaha kale iyo macaamiisha.

Haa, waxaad abuuri kartaa qalab isku dayaya inuu xalliyo dhibaatada polyrepository. Laakin waayo-aragnimadayda barista gaarsiinta joogtada ah iyo automation-ka ee shirkadaha waaweyn ayaa tan ii sheegaysa: dabeecadda caadiga ah iyada oo aan la isticmaalin qalab dheeri ah waa habdhaqanka aad filayso inaad aragto. Dabeecada aan caadiga ahayn ee kaydka badan ayaa ah go'doomin, taasi waa qodobka oo dhan. Dabeecadda caadiga ah ee monorepository waa masuuliyad la wadaago iyo daah-furnaan, taasi waa qodobka oo dhan. Labada xaaladoodba, waxaan samayn doonaa qalab simi doona cidhifyada qallafsan. Hogaamiye ahaan, waxaan dooran doonaa monorepository mar kasta sababtoo ah qalabku wuxuu u baahan yahay inuu xoojiyo dhaqanka aan rabo, dhaqankuna wuxuu ka yimaadaa go'aamo yaryar iyo shaqo maalmeedka kooxda.

Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka. Soo gal, soo dhawoow.

Waa ayo kuwa ugu xamaasada badan? Taageerayaasha:

  • Monorepo

  • miridhku

  • Ra'yi ururin khaldan/labadaba

33 isticmaale ayaa u codeeyay. 13 isticmaale ayaa ka aamusay.

Source: www.habr.com

Add a comment