Monorepositories: mas e do thoil e, feumaidh

Monorepositories: mas e do thoil e, feumaidh

Eadar-theangachadh den artaigil a chaidh ullachadh airson oileanaich cùrsa "Cleachdaidhean agus innealan DevOps" ann am pròiseact foghlaim OTUS.

Bu chòir dhut monorepository a thaghadh oir tha an giùlan a bhrosnaicheas e anns na sgiobaidhean agad follaiseachd agus uallach co-roinnte, gu sònraichte mar a bhios sgiobaidhean a’ fàs. Co-dhiù, feumaidh tu tasgadh a dhèanamh ann an innealan, ach tha e an-còmhnaidh nas fheàrr mas e an giùlan bunaiteach an giùlan a tha thu ag iarraidh anns na h-òrdughan agad.

Carson a tha sinn a 'bruidhinn mu dheidhinn seo?

Sgrìobh Matt Klein an artaigil "Monorepos: Na dèan!"  (nota eadar-theangair: eadar-theangachadh air Habré “Monorepositories: na dèan”). Is toil leam Matt, tha mi a’ smaoineachadh gu bheil e gu math sgiobalta agus bu chòir dhut a bheachd a leughadh. Chuir e an cunntas-bheachd air Twitter an toiseach:

Monorepositories: mas e do thoil e, feumaidh

Eadar-theangachadh:
Air Latha na Bliadhn’ Ùire seo, tha mi a’ dol a argamaid mu cho gòrach sa tha monorepositories. Thòisich 2019 gu sàmhach. Ann an spiorad seo, tha mi a’ tabhann suirbhidh dhut. Cò na fanatics mòra? Luchd-taic:
- Monorepo
- meirgeadh
- Cunntas ceàrr / an dà chuid

B’ e mo fhreagairt, “Tha mi gu litireil le chèile de na daoine sin.” An àite a bhith a’ bruidhinn air mar a tha Rust na dhroga, leig dhuinn sùil a thoirt air carson a tha mi a’ smaoineachadh gu bheil e ceàrr mu dheidhinn monorepositories. Beagan mu do dheidhinn fhèin. Is mise an CTO de Chef Software. Tha timcheall air 100 innleadair againn, bunait còd a’ dol air ais timcheall air 11-12 bliadhna, agus 4 prìomh thoraidhean. Tha cuid den chòd seo ann am polyrepository (mo shuidheachadh tòiseachaidh), tha cuid ann am monorepository (mo shuidheachadh làithreach).

Mus tòisich mi: bidh a h-uile argamaid a nì mi an seo a’ buntainn ris an dà sheòrsa stòrais. Nam bheachd-sa, chan eil adhbhar teicnigeach ann carson a bu chòir dhut aon seòrsa stòr a thaghadh thairis air fear eile. Faodaidh tu toirt air dòigh-obrach sam bith obrachadh. Tha mi toilichte bruidhinn mu dheidhinn, ach chan eil ùidh agam ann an adhbharan teicnigeach fuadain carson a tha fear nas fheàrr na fear eile.

Tha mi ag aontachadh leis a’ chiad phàirt de phuing Matt:

Air sgàth sgèile, fuasglaidh monorepository na h-aon dhuilgheadasan a bhios polyrepository a 'fuasgladh, ach aig an aon àm a' toirt ort do chòd a cheangal gu teann agus a 'feumachdainn oidhirpean iongantach gus àrdachadh a dhèanamh air scalability an t-siostam smachd dreach agad.

Feumaidh tu na h-aon dhuilgheadasan fhuasgladh ge bith an tagh thu monorepository no polyrepository. Ciamar a chuireas tu fiosan a-mach? Dè an dòigh-obrach a th’ agad a thaobh ùrachaidhean? Co-fhreagarrachd air ais? Crois eisimeileachd pròiseict? Dè na stoidhlichean ailtireachd a tha iomchaidh? Ciamar a stiùireas tu do bhun-structair togail agus deuchainn? Tha an liosta gun chrìoch. Agus fuasglaidh tu iad uile mar a dh'fhàsas tu. Chan eil càise an-asgaidh ann.

Tha mi a 'smaoineachadh gu bheil argamaid Matt coltach ri beachdan a tha mòran innleadairean (agus manaidsearan) a' toirt spèis dhomh. Tha seo a’ tachairt bho shealladh an innleadair a tha ag obair air a’ phàirt no an sgioba a tha ag obair air a’ phàirt. Bidh thu a’ cluinntinn rudan mar:

  • Tha an còd-bonn mòr - chan fheum mi a h-uile sgudal seo.
  • Tha e nas duilghe deuchainn a dhèanamh oir feumaidh mi a h-uile sgudal seo a dhearbhadh nach fheum mi.
  • Tha e nas duilghe obrachadh le eisimeileachd bhon taobh a-muigh.
  • Feumaidh mi na siostaman smachd dreach brìgheil agam fhìn.

Gu dearbh, tha na puingean sin uile air am fìreanachadh. Bidh seo a' tachairt anns an dà chùis - anns an polyrepository tha an sgudal agam fhìn, a bharrachd air an fhear a tha a dhìth airson an togail ... 's dòcha gum feum mi sgudal eile cuideachd. Mar sin bidh mi “dìreach” a’ cruthachadh innealan a nì sgrùdadh air a’ phròiseact gu lèir. No bidh mi a’ cruthachadh monorepository meallta le fo-mhodalan. B’ urrainn dhuinn coiseachd timcheall seo fad an latha. Ach tha mi a’ smaoineachadh gu bheil argamaid Matt ag ionndrainn a’ phrìomh adhbhar, a thionndaidh mi gu mòr airson an monorepository:

Bidh e a 'brosnachadh conaltradh agus a' sealltainn dhuilgheadasan

Nuair a bhios sinn a’ sgaradh stòran, bidh sinn a’ cruthachadh duilgheadas de facto a thaobh co-òrdanachadh agus follaiseachd. Tha seo a’ freagairt ris an dòigh sa bheil sinn a’ smaoineachadh mu sgiobaidhean (gu sònraichte an dòigh sa bheil buill fa-leth a’ smaoineachadh mun deidhinn): tha sinn an urra ri pàirt sònraichte. Bidh sinn ag obair nar n-aonar. Tha na crìochan stèidhichte air an sgioba agam agus am pàirt (ean) air a bheil sinn ag obair.

Mar a bhios ailtireachd a’ fàs nas iom-fhillte, chan urrainn dha aon sgioba a riaghladh leotha fhèin tuilleadh. Is e glè bheag de innleadairean aig a bheil an siostam gu lèir nan ceann. Canaidh sinn gu bheil thu a’ riaghladh pàirt co-roinnte A a bhios Sgiobaidhean B, C, agus D a’ cleachdadh. Tha Sgioba A ag ath-nuadhachadh, a’ leasachadh an API, agus cuideachd ag atharrachadh a’ bhuileachadh a-staigh. Mar thoradh air an sin, chan eil na h-atharrachaidhean co-chòrdail air ais. Dè a’ chomhairle a th’ agad?

  • Lorg a h-uile àite far a bheil an t-seann API air a chleachdadh.
  • A bheil àiteachan ann far nach gabh an API ùr a chleachdadh?
  • An urrainn dhut co-phàirtean eile a chàradh agus fheuchainn gus dèanamh cinnteach nach bris iad?
  • An urrainn dha na sgiobaidhean sin na h-atharrachaidhean agad a dhearbhadh an-dràsta?

Thoir an aire gu bheil na ceistean sin neo-eisimeileach bhon t-seòrsa stòr. Feumaidh tu sgiobaidhean B, C agus D a lorg. Feumaidh tu bruidhinn riutha, faighinn a-mach an ùine, na prìomhachasan aca a thuigsinn. Co-dhiù tha sinn an dòchas gun dèan thu sin.

Chan eil duine dha-rìribh ag iarraidh seo a dhèanamh. Tha seo tòrr nas lugha de spòrs na dìreach a bhith a’ càradh an API damn. Tha e uile daonna agus meallta. Ann am polyrepository, faodaidh tu dìreach atharrachaidhean a dhèanamh, a thoirt dha na daoine a tha ag obair air a’ phàirt sin (is dòcha nach e B, C no D) airson ath-sgrùdadh, agus gluasad air adhart. Faodaidh sgiobaidhean B, C agus D fuireach leis an dreach làithreach aca airson a-nis. Bidh iad air an ùrachadh nuair a thuigeas iad do shòlas!

Ann am monorepository, tha uallach air a ghluasad gu bunaiteach. Bidh sgioba A ag atharrachadh am pàirt aca agus, mura h-eil iad faiceallach, brisidh iad B, C agus D sa bhad. Bidh B, C agus D a’ nochdadh aig doras A, a’ faighneachd carson a bhris Sgioba A an co-chruinneachadh. Tha seo a’ teagasg A nach urrainn dhaibh mo liosta gu h-àrd a leum. Feumaidh iad bruidhinn mu na tha iad a’ dol a dhèanamh. Am faod B, C agus D gluasad? Dè ma dh’ fhaodas B agus C, ach bha dlùth cheangal aig D ri taobh-buaidh de ghiùlan an t-seann algairim?

An uairsin feumaidh sinn bruidhinn mu mar a gheibh sinn a-mach às an t-suidheachadh seo:

  1. Taic airson grunn APIan a-staigh, agus comharraichidh e an t-seann algairim mar nach deach a mholadh gus an urrainn dha D sgur a chleachdadh.
  2. Taic airson iomadh dreach fuasglaidh, aon leis an t-seann eadar-aghaidh, aon leis an fhear ùr.
  3. Cuir dàil air sgaoileadh atharrachaidhean A gus an gabh B, C, agus D ris aig an aon àm.

Canaidh sinn gu bheil sinn air 1 a thaghadh, grunn APIan. Anns a 'chùis seo tha dà phìos còd againn. Sean agus ùr. Gu math goireasach ann an cuid de shuidheachaidhean. Bidh sinn a’ toirt sùil air ais air an t-seann chòd, ga chomharrachadh mar nach deach a mholadh, agus ag aontachadh air clàr gluasaid le sgioba D. Gu bunaiteach co-ionann airson stòran poly agus mono.

Gus iomadh dreach a leigeil ma sgaoil, feumaidh sinn meur. A-nis tha dà phàirt againn - A1 agus A2. Bidh sgiobaidhean B agus C a’ cleachdadh A2 agus D a’ cleachdadh A1. Feumaidh sinn a h-uile pàirt a bhith deiseil airson an leigeil ma sgaoil oir dh’ fhaodadh gum bi feum air ùrachaidhean tèarainteachd agus fuasglaidhean bug eile mus urrainn dha D gluasad air adhart. Ann am polyrepository, is urrainn dhuinn seo fhalach ann am meur fad-ùine a tha a 'faireachdainn math. Ann am monorepository, bidh sinn a’ toirt air a’ chòd a chruthachadh ann am modal ùr. Bidh aig Sgioba D ri atharraichean a dhèanamh air an t-seann phàirt fhathast. Chì a h-uile duine a’ chosgais a tha sinn a’ pàigheadh ​​an seo - tha a dhà uimhir de chòd againn a-nis, agus feumaidh fuasgladh bug sam bith a tha a’ buntainn ri A1 agus A2 a bhith a’ buntainn ris an dithis aca. Leis an dòigh branrach ann am polyrepository, tha seo falaichte air cùl taghadh cherry. Tha sinn den bheachd gu bheil a’ chosgais nas ìsle leis nach eil dùblachadh ann. Bho thaobh practaigeach, tha a’ chosgais mar an ceudna: togaidh tu, leig às, agus cumaidh tu dà chòd-chòd gu ìre mhòr co-ionann gus an urrainn dhut aon dhiubh a sguabadh às. Is e an t-eadar-dhealachadh gu bheil am pian seo dìreach agus follaiseach le monorepository. Tha seo eadhon nas miosa, agus tha sin math.

Mu dheireadh, ràinig sinn an treas puing. Dàil sgaoilidh. Dh'fhaodadh gun toir atharrachaidhean a nì A piseach air beatha Sgioba A. Cudromach, ach chan eil e èiginneach. Am faod sinn dìreach dàil a chur? Ann am polyrepository, bidh sinn a’ putadh seo gus an artifact a phronnadh. Gu dearbh tha sinn ag innse seo do Sgioba D. Dìreach fuirich air an t-seann dreach gus an tig thu suas! Bheir seo cothrom dhut a bhith a’ cluich a’ ghealtaich. Tha Sgioba A fhathast ag obair air a’ phàirt aca, a’ seachnadh gu bheil Sgioba D a’ cleachdadh dreach a tha a’ sìor fhàs nas sine (sin an duilgheadas aig Sgioba D, tha iad gòrach). Aig an aon àm, tha Sgioba D a’ bruidhinn gu dona mu bheachd neo-chùramach Sgioba A a thaobh seasmhachd chòd, ma bhruidhneas iad mu dheidhinn idir. Mìosan seachad. Mu dheireadh, tha Sgioba D a’ co-dhùnadh coimhead air comasachd ùrachadh, ach chan eil ach barrachd atharrachaidhean aig A. Is gann gu bheil cuimhne aig Sgioba A cuin no ciamar a bhris iad D. Tha an t-ùrachadh nas dorra agus bheir e nas fhaide. A tha ga chuir nas fhaide sìos an stac prìomhachais. Gu ruig an là tha cùis thèarainteachd againn ann A tha toirt oirnn geug a dheanamh. Feumaidh Sgioba A a dhol air ais ann an tìm, puing a lorg nuair a bha D seasmhach, an duilgheadas a chàradh an sin, agus a dhèanamh deiseil airson a leigeil ma sgaoil. Is e seo an roghainn de facto a nì daoine, agus is e seo an rud as miosa. Tha e coltach gu bheil e math dha Sgioba A agus Sgioba D fhad ‘s as urrainn dhuinn dearmad a dhèanamh air a chèile.

Ann am monorepository, chan eil an treas fear na roghainn. Feumaidh tu dèiligeadh ris an t-suidheachadh ann an aon dòigh no dhà. Feumaidh tu na cosgaisean airson dà mheur fuasglaidh fhaicinn. Ionnsaich thu fhèin a dhìon bho ùrachaidhean a bhriseas co-chòrdalachd air ais. Ach as cudromaiche: chan urrainn dhut còmhradh duilich a sheachnadh.

Nam eòlas-sa, nuair a dh’ fhàsas sgiobaidhean mòr, chan eil e comasach tuilleadh an siostam gu lèir a chumail nad inntinn, agus sin am pàirt as cudromaiche. Feumaidh tu faicsinneachd eas-aonta san t-siostam a leasachadh. Feumaidh tu obrachadh gu gnìomhach gus toirt air sgiobaidhean coimhead air falbh bho na pàirtean aca agus coimhead air obair sgiobaidhean agus luchd-cleachdaidh eile.

Faodaidh, faodaidh tu innealan a chruthachadh a dh'fheuchas ri fuasgladh fhaighinn air an duilgheadas polyrepository. Ach tha an t-eòlas a th’ agam a’ teagasg lìbhrigeadh leantainneach agus fèin-ghluasad ann an iomairtean mòra ag innse seo dhomh: is e an giùlan bunaiteach gun a bhith a’ cleachdadh innealan a bharrachd an giùlan a tha thu an dùil fhaicinn. Is e giùlan bunaiteach polyrepository aonaranachd, is e sin a’ phuing gu lèir. Is e giùlan bunaiteach monorepository uallach co-roinnte agus follaiseachd, is e sin a’ phuing gu lèir. Anns an dà chùis, tha mi a 'dol a chruthachadh inneal a nì rèidh na h-oirean garbh. Mar stiùiriche, taghaidh mi monorepository a h-uile turas oir feumaidh na h-innealan an cultar a tha mi ag iarraidh a dhaingneachadh, agus tha cultar a 'tighinn bho cho-dhùnaidhean beaga bìodach agus obair làitheil na sgioba.

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Cò na fanatics as motha? Luchd-taic:

  • Monorepo

  • meirgeadh

  • Cunntas ceàrr / an dà chuid

Bhòt 33 neach-cleachdaidh. Sheall 13 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann