I-Monorepositories: nceda, kufuneka

I-Monorepositories: nceda, kufuneka

Ukuguqulelwa kwenqaku kulungiselelwe abafundi bekhosi "Iinkqubo zeDevOps kunye nezixhobo" kwiprojekthi yezemfundo ye-OTUS.

Kuya kufuneka ukhethe indawo yokugcina indawo enye kuba indlela yokuziphatha eyikhuthazayo kumaqela akho iselubala kunye noxanduva lokwabelana, ngakumbi njengoko amaqela ekhula. Nokuba yeyiphi na indlela, kuya kufuneka utyale imali kwisixhobo, kodwa kuhlala kungcono ukuba ukuziphatha okungagqibekanga kukuziphatha okufunayo kwimiyalelo yakho.

Kutheni sithetha ngale nto?

UMat Klein wabhala eli nqaku "Monorepos: Nceda musa!"β€Š (inqaku lomguquleli: inguqulelo kuHabrΓ© "Iindawo zokugcina: nceda ungayenzi"). Ndiyamthanda uMat, ndicinga ukuba ukrelekrele kakhulu kwaye kufuneka ufunde imbono yakhe. Waye wathumela uvoto kuqala kuTwitter:

I-Monorepositories: nceda, kufuneka

Ukuguqulelwa:
Lo Mhla woNyaka oMtsha, ndiza kuxoxa malunga nendlela iimonorepositories ezihlekisa ngayo. U-2019 waqala ngokuthula. Ngomoya woku, ndikunika uphando. Ngoobani abanenzondelelo yempambano? Abaxhasi:
- Monorepo
- Ukugqithisa
- Ukuvota okungalunganga / zombini

Impendulo yam yathi, "Ngokwenyani ndingoba bantu bobabini." Endaweni yokuthetha malunga nendlela iRust isiyobisi, makhe sijonge ukuba kutheni ndicinga ukuba akalunganga malunga ne-monorepositories. Kancinci ngawe. Ndiyi-CTO ye-Chef Software. Sineenjineli ezimalunga ne-100, isiseko sekhowudi ebuyela emva malunga ne-11-12 iminyaka, kunye neemveliso ezi-4 eziphambili. Enye yale khowudi ikwipolyrepository (indawo yam yokuqala), enye ikwimonorepository (indawo yam yangoku).

Phambi kokuba ndiqale: yonke ingxabano endiyenzayo apha iya kusebenza kuzo zombini iindidi zeendawo zokugcina. Ngokombono wam, akukho sizathu sobugcisa sokuba kutheni kufuneka ukhethe olunye uhlobo logcino ngaphezu kolunye. Unokwenza nayiphi na indlela yokusebenza isebenze. Ndiyavuya ukuthetha ngayo, kodwa andinamdla kwizizathu zobugcisa ezenziweyo zokuba kutheni umntu ephakamile kunomnye.

Ndivumelana nenxalenye yokuqala yengongoma kaMat:

Kuba kwinqanaba, i-monorepository iya kusombulula zonke iingxaki ezifanayo ezisombululwa yi-polyrepository, kodwa kwangaxeshanye ikunyanzele ukuba udibanise ngokuqinileyo ikhowudi yakho kwaye ifuna iinzame ezimangalisayo zokwandisa ubungakanani benkqubo yolawulo lwenguqulelo yakho.

Kuya kufuneka usombulule iingxaki ezifanayo kungakhathaliseki ukuba ukhetha i-monorepository okanye i-polyrepository. Ukhupha njani ukhupho? Ithini indlela yakho yokuhlaziya? Ukuhambelana ngasemva? Ngabaxhomekeke kwiiprojekthi ezinqamlezileyo? Zeziphi izimbo zokwakha ezamkelekileyo? Ulawula njani isakhiwo sakho kunye novavanyo lweziseko zophuhliso? Uluhlu alunasiphelo. Kwaye uya kuzisombulula zonke njengoko ukhula. Akukho sisi sasimahla.

Ndicinga ukuba ingxabano kaMat iyafana nemibono ekwabelwana ngayo ngeenjineli ezininzi (kunye nabaphathi) endiyihloniphayo. Oku kwenzeka ngokwembono yenjineli esebenza kwicandelo okanye iqela elisebenza kwicandelo. Uva izinto ezinje:

  • I-codebase inkulu- andiyifuni yonke le junk.
  • Kunzima ukuvavanya ngoba kufuneka ndivavanye yonke le junk endingayidingiyo.
  • Kunzima ngakumbi ukusebenza kunye nokuxhomekeka kwangaphandle.
  • Ndidinga iindlela zam zolawulo lwenguqulelo.

Kakade ke, zonke ezi ngongoma ziyathetheleleka. Oku kwenzeka kwiimeko zombini - kwi-polyrepository ndine-junk yam, ngaphezu kweyodwa efunekayo yokwakha ... ndingadinga enye inkunkuma. Ke "ndilula" ukwenza izixhobo ezijonga yonke iprojekthi. Okanye ndenza i-monorepository yobuxoki eneemodyuli ezincinci. Sasinokuhamba sijikeleza le nto imini yonke. Kodwa ndicinga ukuba ingxoxo kaMat iyasiphosa esona sizathu siphambili, endisijike kakhulu ndixhasa indawo yokugcina izinto:

Ixhokonxa unxibelelwano kwaye ibonise iingxaki

Xa sahlula iindawo zokugcina, senza ingxaki ye-de facto yokulungelelaniswa kunye nokungafihli. Oku kuhambelana nendlela esicinga ngayo ngamaqela (ingakumbi indlela amalungu ngamanye acinga ngayo): sinoxanduva lwecandelo elithile. Sisebenza sodwa. Imida ilungisiwe kwiqela lam kunye necandelo(s) esisebenza kulo.

Njengoko i-architecture isiya inzima ngakumbi, iqela elinye alisakwazi ukulawula lodwa. Zimbalwa kakhulu iinjineli ezinenkqubo yonke entloko. Masithi ulawula inxalenye ekwabelwana ngayo A esetyenziswa ngamaQela B, C, kunye noD. Iqela le-A lihlaziya, liphucula i-API, kwaye likwatshintsha ukuphunyezwa kwangaphakathi. Ngenxa yoko, utshintsho aluhambisani ngasemva. Liliphi icebiso onalo?

  • Fumana zonke iindawo apho i-API endala isetyenziswa.
  • Ngaba kukho iindawo apho i-API entsha ayinakusetyenziswa?
  • Ngaba ungalungisa kwaye uvavanye amanye amacandelo ukuze uqiniseke ukuba awophuki?
  • Ngaba la maqela angavavanya utshintsho lwakho ngoku?

Nceda uqaphele ukuba le mibuzo izimeleyo kuhlobo lovimba. Kuya kufuneka ufumane amaqela B, C kunye no-D. Kuya kufuneka uthethe nabo, ufumanise ixesha, uqonde izinto eziphambili kubo. Ubuncinane siyathemba ukuba uya kwenza njalo.

Akukho mntu ufuna ngokwenene ukwenza oku. Oku kumnandi kakhulu kunokulungisa nje i-API ye-damn. Yonke into ingumntu kwaye imdaka. Kwipolyrepository, unokwenza utshintsho ngokulula, unike abantu abasebenza kuloo nxalenye (mhlawumbi kungekhona i-B, i-C okanye i-D) yokuhlaziywa, kwaye uqhubeke. Amaqela B, C kunye no-D angahlala nje nenguqulelo yawo yangoku. Ziya kuhlaziywa xa ziqonda ubuchule bakho!

Kwindawo yokugcina izinto, uxanduva lushenxiswa ngokungagqibekanga. Iqela A litshintsha icandelo lalo kwaye, ukuba alilumkanga, liqhekeza ngokukhawuleza i-B, i-C kunye ne-D. Oku kukhokelela ku-B, u-C no-D abonise kumnyango we-A, ezibuza ukuba kutheni iQela A liphule indibano. Oku kufundisa A ukuba abanako ukutsiba uluhlu lwam ngasentla. Kufuneka bathethe ngento abaza kuyenza. Ingaba u-B, C no-D bangakwazi ukuhamba? Kuthekani ukuba u-B no-C banako, kodwa u-D wayesondelelene ngokusondeleyo nempembelelo yecala lokuziphatha kwe-algorithm endala?

Emva koko kufuneka sithethe malunga nendlela esiza kuphuma ngayo kule meko:

  1. Inkxaso yee-APIs ezininzi zangaphakathi, kwaye iya kuphawula i-algorithm endala njengeyekiweyo de u-D angayeka ukuyisebenzisa.
  2. Inkxaso yeenguqulelo ezininzi zokukhupha, enye enojongano oludala, enye nentsha.
  3. Libazise ukukhutshwa kweenguqu zika-A de kube u-B, C, no-D banokuzamkela ngaxeshanye.

Masithi sikhethe i-1, ii-API ezininzi. Kule meko sinamacandelo amabini ekhowudi. Endala kunye entsha. Iluncedo kakhulu kwezinye iimeko. Sijonga kwakhona ikhowudi endala, siyiphawule njengeyehliweyo, kwaye sivumelane ngeshedyuli yokususa kunye neqela lika-D. Ngokusisiseko iyafana kwiipoly kunye nemono zokugcina.

Ukukhulula iinguqulelo ezininzi, sifuna isebe. Ngoku sinamacandelo amabini-A1 kunye ne-A2. Amaqela B kunye no-C asebenzisa i-A2 kunye no-D isebenzisa i-A1. Sidinga onke amacandelo ukuba alungele ukukhululwa kuba uhlaziyo lokhuseleko kunye nolunye ulungiso lwe-bug lunokufuneka ngaphambi kokuba u-D aqhubele phambili. Kwipolyrepository, sinokuyifihla oku kwisebe elihlala ixesha elide eliziva lilungile. Kwindawo yokugcina izinto, sinyanzela ikhowudi ukuba yenziwe kwimodyuli entsha. Iqela D kusafuneka lenze utshintsho kwicandelo "elidala". Wonke umntu unokuzibona iindleko esizihlawulayo apha - ngoku sinekhowudi ephindwe kabini, kwaye naziphi na izilungiso zebug ezisebenza kwi-A1 kunye ne-A2 kufuneka zisebenze kuzo zombini. Ngendlela ye-branching kwi-polyrepository, oku kufihliwe emva kwe-cherry-pick. Sicinga ukuba iindleko ziphantsi kuba akukho phinda-phinda. Ukusuka kwimbono esebenzayo, ixabiso liyafana: uya kwakha, ukhulule, kwaye ugcine iikhowudi ezimbini ezifanayo ude ube unokucima enye yazo. Umahluko kukuba nge-monorepository le ntlungu iqondile kwaye ibonakala. Oku kubi ngakumbi, kwaye kulungile.

Ekugqibeleni, safika kwindawo yesithathu. Ukukhulula ukulibaziseka. Kungenzeka ukuba utshintsho olwenziwe ngu-A luya kuphucula ubomi beQela A. Kubalulekile, kodwa akungxamisekanga. Ngaba sinokulibazisa nje? Kwipolyrepository, sityhala oku ukuqhobosha i-artifact. Ngokuqinisekileyo sixela oku kwiQela D. Hlala nje kwinguqulelo yakudala de ufikelele! Oku kukwenza ukuba udlale igwala. Iqela A liyaqhubeka nokusebenza kwicandelo labo, lingayinanzi into yokuba iQela D lisebenzisa inguqulelo eya iphelelwa lixesha (leyo yingxaki yeQela D, baziziyatha). Okwangoku, iQela D lithetha kakubi malunga nesimo sengqondo sokungakhathali seQela A malunga nokuzinza kwekhowudi, ukuba bathetha ngayo konke. Iinyanga zidlula. Ekugqibeleni, iQela D lithatha isigqibo sokujonga ukuba kunokwenzeka ukuhlaziya, kodwa u-A unotshintsho olungakumbi. Iqela A ngokulambisa ukhumbula xa okanye njani baphule D. Uphuculo kubuhlungu kakhulu kwaye kuya kuthatha ixesha elide. Okuyithumela ngakumbi phantsi isitaki esibalulekileyo. Kude kube yimini sinomcimbi wokhuseleko ku-A osinyanzela ukuba senze isebe. Iqela A kufuneka libuyele emva kwexesha, lifumane inqaku xa i-D izinzile, lungisa ingxaki apho, kwaye uyilungiselele ukukhululwa. Olu lolona khetho lwenziwa ngabantu, kwaye lolona lubi kakhulu. Kubonakala ngathi kulungile kuzo zombini iQela A kunye neQela D ukuba nje singahoyana.

Kwi-monorepository, eyesithathu ngokwenene ayisiyiyo inketho. Unyanzelekile ukuba ujongane nale meko ngenye yeendlela ezimbini. Kufuneka ubone iindleko zokuba namasebe amabini okukhululwa. Funda ukuzikhusela kuhlaziyo olwaphula umva ukuhambelana. Kodwa okona kubalulekileyo: awukwazi ukukuphepha ukuba nencoko enzima.

Kumava am, xa amaqela esiba makhulu, akusenakwenzeka ukugcina inkqubo yonke engqondweni, kwaye yeyona nto ibalulekileyo. Kufuneka uphucule ukubonakala kokungavisisani kwisixokelelwano. Kuya kufuneka usebenze ngokukhutheleyo ukufumana amaqela ukuba ajonge kude kumacandelo awo kwaye ajonge umsebenzi wamanye amaqela kunye nabathengi.

Ewe, unokwenza izixhobo ezizama ukusombulula ingxaki yepolyrepository. Kodwa amava am okufundisa unikezelo oluqhubekayo kunye ne-automation kumashishini amakhulu andixelela oku: ukuziphatha okungagqibekanga ngaphandle kokusetyenziswa kwezixhobo ezongezelelweyo yindlela olindele ukuyibona. Ukuziphatha okungagqibekanga kwepolyrepository kukwahlulwa, yiyo yonke le nto. Indlela yokuziphatha engagqibekanga ye-monorepository kwabelwana ngoxanduva kunye nokungafihli nto, yiyo yonke loo nto. Kuzo zombini ezi meko, ndiza kwenza isixhobo esiya kugudisa imiphetho erhabaxa. Njengenkokeli, ndiza kukhetha indawo yokugcina indawo eyedwa ngalo lonke ixesha kuba izixhobo zifuna ukuqinisa inkcubeko endiyifunayo, kwaye inkcubeko ivela kwizigqibo ezincinci kunye nomsebenzi wemihla ngemihla weqela.

Ngabasebenzisi ababhalisiweyo kuphela abanokuthatha inxaxheba kuphando. Ngena, ndiyacela.

Ngoobani abona bantu banenzondelelo yempambano? Abaxhasi:

  • Monorepo

  • Ukugqithisa

  • Ukuvota okungalunganga / zombini

Bangama-33 abasebenzisi abavotileyo. Abasebenzisi abali-13 abakhange.

umthombo: www.habr.com

Yongeza izimvo