Monorepositories: le do thoil, ní mór

Monorepositories: le do thoil, ní mór

Aistriúchán ar an alt a ullmhaíodh do mhic léinn an chúrsa "Cleachtais agus uirlisí DevOps" sa tionscadal oideachais OTUS.

Ba cheart duit monastór a roghnú toisc go bhfuil trédhearcacht agus freagracht roinnte ag baint leis an iompar a chuireann sé chun cinn i d’fhoirne, go háirithe de réir mar a fhásann foirne. Slí amháin nó slí, beidh ort infheistíocht a dhéanamh in uirlisí, ach tá sé níos fearr i gcónaí más é an t-iompar réamhshocraithe an t-iompar a theastaíonn uait i do chuid orduithe.

Cén fáth a bhfuil muid ag caint faoi seo?

Scríobh Matt Klein an t-alt "Monorepos: Ná déan!"  (nóta aistritheora: aistriúchán ar Habré “Stórtha monaimh: ná déan le do thoil”). Is maith liom Matt, ceapaim go bhfuil sé an-chliste agus ba cheart duit a dhearcadh a léamh. Chuir sé an vótaíocht ar Twitter ar dtús:

Monorepositories: le do thoil, ní mór

Aistriúchán:
Ar Lá na Bliana Nua seo, táim chun argóint a dhéanamh faoi cé chomh ridiciúil is atá monar stórtha. Thosaigh 2019 go ciúin. Ina spiorad seo, cuirim suirbhé ar fáil duit. Cé hiad na fanatics móra? Lucht tacaíochta:
- Monorepo
- Meirge
- Vótaíocht mícheart / an dá cheann

Ba é an freagra a bhí agam, “Is é an dá dhuine sin mé go litriúil.” In ionad a bheith ag caint faoi conas is druga é Rust, déanaimis féachaint ar an bhfáth go gceapaim go bhfuil sé mícheart faoi mhona-stórtha. Beagán fút féin. Is mise an CTO de Chef Software. Tá thart ar 100 innealtóir againn, bonn cód ag dul siar thart ar 11-12 bliain, agus 4 phríomhtháirge. Tá cuid den chód seo i stórtha iolracha (mo shuíomh tosaigh), tá cuid eile i mona-stór (mo staid reatha).

Sula dtosóidh mé: bainfidh gach argóint a dhéanaim anseo leis an dá chineál stórtha. I mo thuairimse, níl aon chúis theicniúil ann ar cheart duit cineál amháin stór a roghnú thar cheann eile. Is féidir leat aon chur chuige a oibriú. Tá áthas orm labhairt faoi, ach níl aon spéis agam i gcúiseanna teicniúla saorga cén fáth go bhfuil ceann amháin níos fearr ná ceann eile.

Aontaím leis an gcéad chuid de phointe Matt:

Mar gheall ar scála, beidh monorepository a réiteach go léir na fadhbanna céanna go réitíonn polyrepository, ach ag an am céanna iallach ort a lánúin go docht do chód agus a éilíonn iarrachtaí dochreidte chun cur leis an scalability de do chóras rialaithe leagan.

Beidh ort na fadhbanna céanna a réiteach is cuma cé acu a roghnaíonn tú monastór nó il-thaisc. Conas a scaoileann tú eisiúintí? Cad é do chur chuige maidir le nuashonruithe? Comhoiriúnacht ar gcúl? Spleáchais trasthionscadail? Cad iad na stíleanna ailtireachta atá inghlactha? Conas a bhainistíonn tú do bhonneagar tógála agus tástála? Tá an liosta gan teorainn. Agus beidh tú a réiteach iad go léir mar a fhásann tú. Níl cáis saor in aisce ann.

Sílim go bhfuil argóint Matt cosúil leis na tuairimí atá á roinnt ag go leor innealtóirí (agus bainisteoirí) a bhfuil meas agam orthu. Tarlaíonn sé seo ó thaobh an innealtóra atá ag obair ar an gcomhpháirt nó na foirne atá ag obair ar an gcomhpháirt. Cloiseann tú rudaí mar:

  • Tá an códbase toirtiúil - ní gá dom an junk seo go léir.
  • Tá sé níos deacra tástáil a dhéanamh mar ní mór dom an junk seo go léir a thástáil nach bhfuil de dhíth orm.
  • Tá sé níos deacra oibriú le spleáchais sheachtracha.
  • Teastaíonn mo chórais rialaithe leagan fíorúil féin uaim.

Ar ndóigh, tá údar leis na pointí seo go léir. Tarlaíonn sé seo sa dá chás - sa polyrepository tá mo chuid dramhphoist féin agam, chomh maith leis an gceann atá ag teastáil don tógáil ... b'fhéidir go mbeidh junk eile de dhíth orm freisin. Mar sin déanaim “díreach” uirlisí a chruthú a sheiceálann an tionscadal iomlán. Nó cruthaím monorepository falsa le fo-mhodúil. D’fhéadfaimis siúl timpeall air seo an lá ar fad. Ach is dóigh liom go gcaillfidh argóint Matt an phríomhchúis, rud a d’iompaigh mé go mór i bhfabhar an mhona-stór:

Spreagann sé cumarsáid agus léiríonn sé fadhbanna

Nuair a scaraimid stórtha, cruthaímid fadhb de facto maidir le comhordú agus trédhearcacht. Freagraíonn sé seo leis an mbealach a smaoinímid ar fhoirne (go háirithe an bealach a cheapann baill aonair mar gheall orthu): táimid freagrach as comhpháirt áirithe. Oibrímid inár n-aonar. Tá na teorainneacha socraithe ar m'fhoireann agus ar an gcomhpháirt(í) ar a bhfuilimid ag obair.

De réir mar a éiríonn an ailtireacht níos casta, ní féidir le foireann amháin í a bhainistiú ina haonar a thuilleadh. Is beag innealtóir a bhfuil an córas iomlán ina gceann acu. Ligean le rá go mbainistíonn tú comhpháirt chomhroinnte A a úsáideann Foirne B, C, agus D. Tá Foireann A ag athfhachtóiriú, ag feabhsú an API, agus ag athrú an fhorfheidhmithe inmheánaigh freisin. Mar thoradh air sin, níl na hathruithe comhoiriúnach ar gcúl. Cén chomhairle atá agat?

  • Faigh gach áit ina n-úsáidtear an sean API.
  • An bhfuil áiteanna ann nach féidir an API nua a úsáid?
  • An féidir leat comhpháirteanna eile a dheisiú agus a thástáil lena chinntiú nach mbriseann siad?
  • An féidir leis na foirne seo do chuid athruithe a thástáil faoi láthair?

Tabhair faoi deara le do thoil go bhfuil na ceisteanna seo neamhspleách ar an gcineál taisclainne. Beidh ort foirne B, C agus D a aimsiú. Beidh ort labhairt leo, an t-am a fháil amach, a gcuid tosaíochtaí a thuiscint. Ar a laghad tá súil againn go mbainfidh tú.

Níl aon duine ag iarraidh é seo a dhéanamh i ndáiríre. Is lú an spraoi é seo ná an API diabhal a shocrú. Tá sé ar fad daonna agus messy. I stór polyrepository, is féidir leat athruithe a dhéanamh go simplí, é a thabhairt do na daoine atá ag obair ar an gcomhpháirt sin (is dócha nach B, C nó D) le haghaidh athbhreithnithe, agus bogadh ar aghaidh. Is féidir le foirne B, C agus D fanacht lena leagan reatha go ceann tamaill. Déanfar iad a athnuachan nuair a thuigeann siad do genius!

I monorepository, aistrítear freagracht de réir réamhshocraithe. Athraíonn Foireann A a gcomhpháirt agus, mura mbíonn siad cúramach, briseann siad B, C agus D láithreach. Fágann sin go dtaispeánann B, C agus D suas ag doras A, ag fiafraí cén fáth ar bhris Foireann A an tionól. Múineann sé seo do A nach féidir leo mo liosta thuas a scipeáil. Caithfidh siad labhairt faoi na rudaí atá siad chun a dhéanamh. An féidir le B, C agus D bogadh? Cad a tharlóidh más féidir le B agus C, ach go raibh dlúthbhaint ag D le fo-iarmhairt ar iompar an tseanalgartaim?

Ansin caithfimid labhairt faoi conas a éireoidh linn as an gcás seo:

  1. Tacaíocht le haghaidh APIanna inmheánacha iolracha, agus marcálfar an sean-algartam mar algartam dímheasta go dtí go mbeidh D in ann é a úsáid.
  2. Tacaíocht do leaganacha il-eisiúint, ceann leis an sean-chomhéadan, ceann leis an gceann nua.
  3. Moill ar scaoileadh athruithe A go dtí go bhféadfaidh B, C, agus D glacadh leis ag an am céanna.

Ligean le rá go bhfuil 1, roinnt APIs roghnaithe againn. Sa chás seo tá dhá phíosa cód againn. Sean agus nua. Go leor áisiúil i gcásanna áirithe. Seiceálaimid an seanchód ar ais isteach, marcálann sé go bhfuil sé i léig, agus comhaontaímid ar sceideal bainte le foireann D atá comhionann go bunúsach le haghaidh stórtha il agus monai.

Chun leaganacha iolracha a scaoileadh, tá brainse de dhíth orainn. Anois tá dhá chomhpháirt againn - A1 agus A2. Úsáideann foirne B agus C A2 agus úsáideann D A1. Ní mór dúinn gach comhpháirt a bheith réidh le scaoileadh mar d'fhéadfadh go mbeadh nuashonruithe slándála agus ceartúcháin eile ag teastáil sula bhféadfaidh D dul ar aghaidh. I polyrepository, is féidir linn a cheilt seo i brainse fad-cónaí a bhraitheann go maith. I monorepository, iallach orainn an cód a chruthú i modúl nua. Beidh ar fhoireann D fós athruithe a dhéanamh ar an "sean" chomhpháirt. Is féidir le gach duine an costas atá á íoc againn a fheiceáil anseo - tá dhá oiread cód againn anois, agus ní mór go mbeadh feidhm ag aon réiteach fabhtanna a bhaineann le A1 agus A2 leis an mbeirt acu. Leis an gcur chuige Branching i polyrepository, tá sé seo i bhfolach taobh thiar silíní-roghnaigh. Measaimid go bhfuil an costas níos ísle toisc nach bhfuil aon dúbailt ann. Ó thaobh praiticiúil de, tá an costas mar an gcéanna: déanfaidh tú dhá bhunachar cód atá comhionann den chuid is mó a thógáil, a scaoileadh agus a chothabháil go dtí gur féidir leat ceann acu a scriosadh. Is é an difríocht ná go bhfuil an pian seo díreach agus infheicthe le stór monarúil. Tá sé seo níos measa fós, agus tá sé sin go maith.

Ar deireadh, shroicheamar an tríú pointe. Moill ar scaoileadh. Is féidir go gcuirfidh athruithe a dhéanfaidh A feabhas ar shaolta Fhoireann A. Tábhachtach, ach níl siad práinneach. An féidir linn ach moill a chur? I il-stór, déanaimid é seo a bhrú chun an déantúsán a phionnú. Ar ndóigh táimid ag insint é seo do Fhoireann D. Fan ar an seanleagan go dtí go dtagann tú suas! Cuireann sé seo ar bun tú a imirt ar an mBádach. Leanann Foireann A ag obair ar a gcomhpháirt, ag déanamh neamhairde den fhíric go bhfuil Foireann D ag baint úsáide as leagan atá ag éirí as dáta (is é sin fadhb Fhoireann D, tá siad dúr). Idir an dá linn, ní labhraíonn Foireann D go dona faoi dhearcadh míchúramach Fhoireann A i leith cobhsaíocht cóid, má labhraíonn siad faoi ar chor ar bith. Míonna pas. Ar deireadh, socraíonn Foireann D féachaint an bhféadfaí nuashonrú a dhéanamh, ach níl ach níos mó athruithe ag A. Is ar éigean a mheabhraíonn Foireann A cathain nó conas a bhris siad D. Bíonn an t-uasghrádú níos pianmhaire agus tógfaidh sé níos faide. A chuireann níos faide síos an chairn tosaíochta é. Go dtí an lá a bhfuil ceist slándála againn in A a chuireann iallach orainn brainse a dhéanamh. Caithfidh Foireann A dul ar ais in am, pointe a aimsiú nuair a bhí D cobhsaí, an fhadhb a shocrú ansin, agus é a dhéanamh réidh le scaoileadh. Is é seo an rogha de facto a dhéanann daoine, agus is é an rogha is measa i bhfad. Is cosúil go bhfuil sé go maith d’Fhoireann A agus d’Fhoireann D araon chomh fada agus is féidir linn neamhaird a dhéanamh dá chéile.

I monorepository, nach bhfuil an tríú rogha i ndáiríre. Cuirtear iallach ort déileáil leis an gcás ar cheann amháin de dhá bhealach. Ní mór duit na costais a bhaineann le dhá bhrainse scaoilte a bheith agat a fheiceáil. Foghlaim conas tú féin a chosaint ó nuashonruithe a bhriseann comhoiriúnacht siar. Ach is tábhachtaí: ní féidir leat comhrá deacair a sheachaint.

I mo thaithí féin, nuair a éiríonn foirne mór, ní féidir an córas iomlán a choinneáil i gcuimhne a thuilleadh, agus sin an chuid is tábhachtaí. Ní mór duit infheictheacht an easaontais sa chóras a fheabhsú. Ní mór duit oibriú go gníomhach chun foirne a thabhairt chun breathnú ar shiúl óna gcomhpháirteanna agus féachaint ar obair foirne agus tomhaltóirí eile.

Sea, is féidir leat uirlisí a chruthú a dhéanann iarracht an fhadhb polyrepository a réiteach. Ach insíonn mo thaithí ag múineadh seachadadh leanúnach agus uathoibriú i bhfiontair mhóra seo dom: is é an t-iompar réamhshocraithe gan úsáid a bhaint as uirlisí breise an iompar a bhfuil súil agat a fheiceáil. Is é an t-iompar réamhshocraithe de polyrepository aonrú, sin an pointe ar fad. Is éard atá i gceist le hiompraíocht réamhshocraithe monastór ná freagracht chomhroinnte agus trédhearcacht, sin an pointe iomlán. Sa dá chás, táim chun uirlis a chruthú a mhíneoidh na himill gharbh. Mar cheannaire, roghnóidh mé monorepository gach uair mar is gá na huirlisí chun an cultúr a theastaíonn uaim a athneartú, agus tagann an cultúr ó chinntí bídeacha agus ó obair laethúil na foirne.

Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. Sínigh isteach, le do thoil.

Cé hiad na fanatics is mó? Lucht tacaíochta:

  • Monorepo

  • Meirge

  • Vótaíocht mícheart / an dá cheann

Vótáil 33 úsáideoir. Staon 13 úsáideoir.

Foinse: will.com

Add a comment