Monorepositories: os gwelwch yn dda, rhaid

Monorepositories: os gwelwch yn dda, rhaid

Cyfieithiad o'r erthygl a baratowyd ar gyfer myfyrwyr cwrs "Arferion ac offer DevOps" ym mhrosiect addysgol OTUS.

Dylech ddewis unstorfa oherwydd bod yr ymddygiad y mae'n ei hyrwyddo yn eich timau yn dryloyw ac yn rhannu cyfrifoldeb, yn enwedig wrth i dimau dyfu. Y naill ffordd neu'r llall, bydd yn rhaid i chi fuddsoddi mewn offer, ond mae bob amser yn well os mai'r ymddygiad diofyn yw'r ymddygiad rydych chi ei eisiau yn eich gorchmynion.

Pam ydym ni'n siarad am hyn?

Ysgrifennodd Matt Klein yr erthygl "Monorepos: Peidiwch os gwelwch yn dda!"  (nodyn y cyfieithydd: cyfieithiad ar Habré “Ardalfeydd: peidiwch os gwelwch yn dda”). Rwy'n hoffi Matt, rwy'n meddwl ei fod yn smart iawn a dylech ddarllen ei safbwynt. Yn wreiddiol, postiodd yr arolwg barn ar Twitter:

Monorepositories: os gwelwch yn dda, rhaid

Cyfieithu:
Ddydd Calan yma, rydw i'n mynd i ddadlau am ba mor chwerthinllyd yw monostorfeydd. Dechreuodd 2019 yn dawel. Yn ysbryd hyn, rwy'n cynnig arolwg i chi. Pwy yw'r ffanatigs mawr? Cefnogwyr:
- Monorepo
- Rust
- Pôl anghywir / y ddau

Fy ymateb oedd, “Rwy’n llythrennol yn ddau o’r bobl hynny.” Yn lle siarad am sut mae Rust yn gyffur, gadewch i ni edrych ar pam rwy'n meddwl ei fod yn anghywir am unstorfeydd. Ychydig amdanoch chi'ch hun. Fi yw'r CTO o Chef Software. Mae gennym tua 100 o beirianwyr, sylfaen cod yn mynd yn ôl tua 11-12 mlynedd, a 4 prif gynnyrch. Mae peth o'r cod hwn mewn aml-ystorfa (fy safle cychwyn), mae peth mewn un gadwrfa (fy safle presennol).

Cyn i mi ddechrau: bydd pob dadl a wnaf yma yn berthnasol i'r ddau fath o gadwrfeydd. Yn fy marn i, nid oes unrhyw reswm technegol pam y dylech ddewis un math o gadwrfa dros un arall. Gallwch wneud i unrhyw ddull weithio. Rwy'n hapus i siarad amdano, ond nid oes gennyf ddiddordeb mewn rhesymau technegol artiffisial pam mae un yn well nag un arall.

Cytunaf â rhan gyntaf pwynt Matt:

Oherwydd ar raddfa, bydd monorepository yn datrys yr un problemau ag y mae polyrepository yn eu datrys, ond ar yr un pryd yn eich gorfodi i gyplu'ch cod yn dynn ac yn gofyn am ymdrechion anhygoel i gynyddu scalability eich system rheoli fersiwn.

Bydd yn rhaid i chi ddatrys yr un problemau p'un a ydych chi'n dewis un ystorfa neu amrystorfa. Sut ydych chi'n rhyddhau datganiadau? Beth yw eich agwedd at ddiweddariadau? Cydweddoldeb ôl? Dibyniaethau ar draws prosiectau? Pa arddulliau pensaernïol sy'n dderbyniol? Sut ydych chi'n rheoli eich seilwaith adeiladu a phrofi? Mae'r rhestr yn ddiddiwedd. A byddwch yn eu datrys i gyd wrth i chi dyfu. Nid oes caws am ddim.

Rwy'n meddwl bod dadl Matt yn debyg i safbwyntiau a rennir gan lawer o beirianwyr (a rheolwyr) rwy'n eu parchu. Mae hyn yn digwydd o safbwynt y peiriannydd sy'n gweithio ar y gydran neu'r tîm sy'n gweithio ar y gydran. Rydych chi'n clywed pethau fel:

  • Mae'r codebase yn swmpus - nid oes angen yr holl sothach hwn arnaf.
  • Mae'n anoddach profi oherwydd mae'n rhaid i mi brofi'r holl sothach hwn nad oes ei angen arnaf.
  • Mae'n anoddach gweithio gyda dibyniaethau allanol.
  • Dwi angen fy systemau rheoli fersiwn rhithwir fy hun.

Wrth gwrs, gellir cyfiawnhau'r holl bwyntiau hyn. Mae hyn yn digwydd yn y ddau achos - yn y polyrepository mae gen i fy sothach fy hun, yn ogystal â'r un sydd ei angen ar gyfer yr adeiladu ... efallai y bydd angen sothach arall arnaf hefyd. Felly rydw i'n “yn syml” yn creu offer sy'n gwirio'r prosiect cyfan. Neu dwi'n creu monorepository ffug gydag is-fodiwlau. Gallem gerdded o gwmpas hwn trwy'r dydd. Ond dwi'n meddwl bod dadl Matt yn methu'r prif reswm, a fflipiais yn eithaf trwm o blaid yr unstorfa:

Mae'n ysgogi cyfathrebu ac yn dangos problemau

Pan fyddwn yn gwahanu ystorfeydd, rydym yn creu problem de facto o gydgysylltu a thryloywder. Mae hyn yn cyfateb i'r ffordd yr ydym yn meddwl am dimau (yn enwedig y ffordd y mae aelodau unigol yn meddwl amdanynt): rydym yn gyfrifol am gydran benodol. Rydym yn gweithio ar ein pennau ein hunain. Mae'r ffiniau wedi'u gosod ar fy nhîm a'r gydran(nau) rydym yn gweithio arnynt.

Wrth i bensaernïaeth ddod yn fwy cymhleth, ni all un tîm ei reoli ar ei ben ei hun mwyach. Ychydig iawn o beirianwyr sydd â'r system gyfan yn eu pen. Dywedwch eich bod yn rheoli cydran A a rennir a ddefnyddir gan Dimau B, C, a D. Mae Tîm A yn ail-ffactorio, yn gwella'r API, a hefyd yn newid y gweithrediad mewnol. O ganlyniad, nid yw'r newidiadau yn gydnaws yn ôl. Pa gyngor sydd gennych chi?

  • Dewch o hyd i bob man lle mae'r hen API yn cael ei ddefnyddio.
  • A oes lleoedd lle na ellir defnyddio'r API newydd?
  • Allwch chi drwsio a phrofi cydrannau eraill i wneud yn siŵr nad ydyn nhw'n torri?
  • A all y timau hyn brofi eich newidiadau ar hyn o bryd?

Sylwch fod y cwestiynau hyn yn annibynnol ar y math o gadwrfa. Bydd angen i chi ddod o hyd i dimau B, C a D. Bydd angen i chi siarad â nhw, darganfod yr amser, deall eu blaenoriaethau. O leiaf rydym yn gobeithio y byddwch.

Does neb wir eisiau gwneud hyn. Mae hyn yn llawer llai o hwyl na thrwsio'r API damn yn unig. Mae'r cyfan yn ddynol ac yn flêr. Mewn aml-storfa, gallwch chi wneud newidiadau, ei rhoi i'r bobl sy'n gweithio ar y gydran honno (nid B, C neu D mae'n debyg) i'w hadolygu, a symud ymlaen. Gall timau B, C a D aros gyda'u fersiwn gyfredol am y tro. Byddant yn cael eu hadnewyddu pan fyddant yn sylweddoli eich athrylith!

Mewn unstorfa, mae cyfrifoldeb yn cael ei symud yn ddiofyn. Mae Tîm A yn newid eu cydran ac, os nad yn ofalus, yn torri B, C a D ar unwaith. Mae hyn yn arwain at B, C a D yn ymddangos wrth ddrws A, yn meddwl tybed pam y torrodd Tîm A y gwasanaeth. Mae hyn yn dysgu A na allant hepgor fy rhestr uchod. Rhaid iddynt siarad am yr hyn y maent yn mynd i'w wneud. A all B, C a D symud? Beth os gall B ac C, ond roedd D yn perthyn yn agos i sgil-effaith ymddygiad yr hen algorithm?

Yna mae'n rhaid i ni siarad am sut y byddwn yn dod allan o'r sefyllfa hon:

  1. Cefnogaeth i APIs mewnol lluosog, a bydd yn nodi bod yr hen algorithm yn anghymeradwy nes y gall D roi'r gorau i'w ddefnyddio.
  2. Cefnogaeth ar gyfer fersiynau rhyddhau lluosog, un gyda'r hen ryngwyneb, un gyda'r un newydd.
  3. Gohirio rhyddhau newidiadau A nes y gall B, C, a D eu derbyn ar yr un pryd.

Gadewch i ni ddweud ein bod wedi dewis 1, sawl API. Yn yr achos hwn mae gennym ddau ddarn o god. Hen a newydd. Eithaf cyfleus mewn rhai sefyllfaoedd. Rydym yn gwirio'r hen god yn ôl i mewn, yn ei nodi fel un anghymeradwy, ac yn cytuno ar amserlen ddileu gyda thîm D. Yn ei hanfod yr un fath ar gyfer ystorfeydd poly a mono.

Er mwyn rhyddhau fersiynau lluosog, mae angen cangen arnom. Nawr mae gennym ddwy gydran - A1 ac A2. Mae timau B ac C yn defnyddio A2 a D yn defnyddio A1. Mae angen i bob cydran fod yn barod i'w rhyddhau oherwydd efallai y bydd angen diweddariadau diogelwch ac atgyweiriadau gwallau eraill cyn y gall D symud ymlaen. Mewn aml-ystorfa, gallwn guddio hyn mewn cangen hirhoedlog sy'n teimlo'n dda. Mewn unstorfa, rydyn ni'n gorfodi'r cod i gael ei greu mewn modiwl newydd. Bydd yn rhaid i Dîm D wneud newidiadau i'r "hen" gydran o hyd. Gall pawb weld y gost rydyn ni'n ei thalu yma - mae gennym ni ddwywaith cymaint o god erbyn hyn, ac mae'n rhaid i unrhyw gywiriadau nam sy'n berthnasol i A1 ac A2 fod yn berthnasol i'r ddau ohonyn nhw. Gyda'r dull canghennog mewn aml-storfa, mae hwn wedi'i guddio y tu ôl i'r dewis ceirios. Rydym yn ystyried y gost yn is oherwydd nad oes unrhyw ddyblygu. O safbwynt ymarferol, mae'r gost yr un peth: byddwch yn adeiladu, yn rhyddhau ac yn cynnal dwy gronfa god sydd i raddau helaeth yn union yr un fath nes y gallwch ddileu un ohonynt. Y gwahaniaeth yw bod y boen hon yn uniongyrchol ac yn weladwy gydag un ystorfa. Mae hyn hyd yn oed yn waeth, ac mae hynny'n dda.

Yn olaf, cyrhaeddasom y trydydd pwynt. Oedi rhyddhau. Mae’n bosibl y bydd newidiadau a wneir gan A yn gwella bywydau Tîm A. Pwysig, ond nid ar frys. A allwn ni oedi? Mewn amrystorfa, rydyn ni'n gwthio hwn i binio'r arteffact. Wrth gwrs rydyn ni'n dweud hyn wrth Dîm D. Arhoswch ar yr hen fersiwn nes i chi ddal i fyny! Mae hyn yn eich gosod chi i chwarae'r llwfrgi. Mae Tîm A yn parhau i weithio ar eu cydran, gan anwybyddu'r ffaith bod Tîm D yn defnyddio fersiwn sy'n mynd yn fwy a mwy hen ffasiwn (dyna problem Tîm D, maen nhw'n dwp). Yn y cyfamser, mae Tîm D yn siarad yn wael am agwedd ddiofal Tîm A tuag at sefydlogrwydd cod, os ydynt yn siarad amdano o gwbl. Mae misoedd yn mynd heibio. Yn olaf, mae Tîm D yn penderfynu edrych ar y posibilrwydd o ddiweddaru, ond dim ond mwy o newidiadau sydd gan A. Prin fod Tîm A yn cofio pryd na sut y gwnaethant dorri D. Mae'r uwchraddio'n fwy poenus a bydd yn cymryd mwy o amser. Sy'n ei anfon ymhellach i lawr y pentwr blaenoriaeth. Hyd y dydd mae gennym fater diogelwch yn A sy'n ein gorfodi i wneud cangen. Rhaid i Dîm A fynd yn ôl mewn amser, dod o hyd i bwynt pan oedd D yn sefydlog, trwsio'r broblem yno, a'i gwneud yn barod i'w rhyddhau. Dyma’r dewis de facto y mae pobl yn ei wneud, a dyma’r dewis gwaethaf o bell ffordd. Mae'n ymddangos yn dda i Dîm A a Thîm D cyn belled ag y gallwn anwybyddu ein gilydd.

Mewn unstorfa, nid yw'r drydedd yn opsiwn mewn gwirionedd. Fe’ch gorfodir i ymdrin â’r sefyllfa mewn un o ddwy ffordd. Mae angen i chi weld costau cael dwy gangen rhyddhau. Dysgwch i amddiffyn eich hun rhag diweddariadau sy'n torri cydnawsedd yn ôl. Ond yn bwysicaf oll: ni allwch osgoi cael sgwrs anodd.

Yn fy mhrofiad i, pan fydd timau'n mynd yn fawr, nid yw bellach yn bosibl cadw'r system gyfan mewn cof, a dyna'r rhan bwysicaf. Rhaid i chi wella gwelededd anghytgord yn y system. Rhaid i chi weithio'n weithredol i gael timau i edrych i ffwrdd o'u cydrannau ac edrych ar waith timau a defnyddwyr eraill.

Gallwch, gallwch greu offer sy'n ceisio datrys y broblem polyrepository. Ond mae fy mhrofiad yn addysgu darpariaeth barhaus ac awtomeiddio mewn mentrau mawr yn dweud hyn wrthyf: yr ymddygiad diofyn heb ddefnyddio offer ychwanegol yw'r ymddygiad rydych chi'n disgwyl ei weld. Arwahanrwydd yw ymddygiad diofyn ystorfa, dyna'r holl bwynt. Ymddygiad diofyn unstorfa yw cyfrifoldeb a rennir a thryloywder, dyna'r holl bwynt. Yn y ddau achos, rydw i'n mynd i greu teclyn a fydd yn llyfnhau'r ymylon garw. Fel arweinydd, byddaf yn dewis unstorfa bob tro oherwydd mae angen i’r offer atgyfnerthu’r diwylliant rwyf ei eisiau, ac mae diwylliant yn dod o benderfyniadau pitw a gwaith dyddiol y tîm.

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Pwy yw'r ffanatigiaid mwyaf? Cefnogwyr:

  • Monorepo

  • Rust

  • Pôl anghywir / y ddau

Pleidleisiodd 33 o ddefnyddwyr. Ymataliodd 13 o ddefnyddwyr.

Ffynhonnell: hab.com

Ychwanegu sylw