Monorepositories: azafady, tsy maintsy

Monorepositories: azafady, tsy maintsy

Fandikana ny lahatsoratra nomanina ho an'ny mpianatra "Fanazatra sy fitaovana DevOps" ao amin'ny tetikasa fanabeazana OTUS.

Tokony hisafidy monorepository ianao satria ny fitondrantena ampandrosoiny ao amin'ny ekipanao dia ny mangarahara sy ny andraikiny iraisana, indrindra rehefa mitombo ny ekipa. Na izany na tsy izany, tsy maintsy mampiasa vola amin'ny fitaovana ianao, saingy tsara kokoa raha ny fitondran-tena mahazatra dia ny fihetsika tianao amin'ny baiko.

Nahoana isika no miresaka momba izany?

Matt Klein no nanoratra ilay lahatsoratra "Monorepos: Azafady!"  (fanamarihan'ny mpandika teny: fandikana amin'ny Habré "Monorepositories: azafady"). Tiako i Matt, heveriko fa tena hendry izy ary tokony hamaky ny fomba fijeriny ianao. Namoaka ny fitsapan-kevitra tao amin'ny Twitter izy tamin'ny voalohany:

Monorepositories: azafady, tsy maintsy

fandikan-teny:
Amin'ity taom-baovao ity dia hiady hevitra momba ny maha-mahatsikaiky ny monorepositories aho. Nanomboka mangingina ny taona 2019. Ao anatin'izany toe-tsaina izany dia manolotra anao fanadihadiana aho. Iza ireo fanatika lehibe? Mpanohana:
- Monorepo
- harafesina
- fitsapan-kevitra diso / izy roa

Ny valinteniko dia hoe: "Izaho dia samy amin'ireo olona ireo." Raha tokony hiresaka momba ny maha zava-mahadomelina ny Rust, andeha hojerentsika hoe nahoana izy no diso momba ny monorepositories. Sombiny momba ny tenanao. Izaho no CTO an'ny Chef Software. Manana injeniera 100 eo ho eo izahay, kaody fototra miverina eo amin'ny 11-12 taona, ary vokatra lehibe 4. Ny sasany amin'ity code ity dia ao amin'ny polyrepository (ny toerana niaingako), ny sasany dia ao amin'ny monorepository (ny toerana misy ahy ankehitriny).

Alohan'ny hanombohako: ny adihevitra rehetra ataoko eto dia mihatra amin'ireo karazana tahiry roa. Raha ny hevitro dia tsy misy antony ara-teknika tokony hisafidiananao karazana tahiry iray amin'ny iray hafa. Azonao atao ny manatanteraka ny fomba fiasa rehetra. Faly aho miresaka momba izany, fa tsy mahaliana ahy ny antony ara-teknika artifisialy mahatonga ny iray ho ambony noho ny iray hafa.

Miombon-kevitra amin'ny ampahany voalohany amin'ny hevitr'i Matt aho:

Satria amin'ny ambaratonga, ny monorepository dia hamaha ireo olana mitovy amin'ny famahana ny polyrepository, fa amin'ny fotoana iray ihany koa dia manery anao hampifandray tsara ny kaodinao ary mitaky ezaka tsy mampino hampitombo ny scalability ny rafitra fanaraha-maso ny dikan-nao.

Tsy maintsy mamaha olana mitovy ianao na inona na inona misafidy monorepository na polyrepository. Ahoana no hamoahanao ny famoahana? Inona no fomba fanaonao amin'ny fanavaozana? Fifanarahana mihemotra? Miankina amin'ny tetikasa? Inona avy ireo fomba maritrano azo ekena? Ahoana ny fitantanana ny fotodrafitrasa fananganana sy fitsapana anao? Tsy misy farany ny lisitra. Ary hamaha azy rehetra ianao rehefa mitombo. Tsy misy fromazy maimaim-poana.

Heveriko fa mitovy amin'ny hevitra nozarain'ireo injeniera (sy mpitantana) maro izay hajaiko ny hevitr'i Matt. Izany dia mitranga amin'ny fomba fijerin'ny injeniera miasa amin'ny singa na ny ekipa miasa amin'ny singa. Maheno zavatra toy ny:

  • Ny codebase dia be dia be - tsy mila an'ireo saro-pantarina rehetra ireo aho.
  • Sarotra kokoa ny mitsapa satria tsy maintsy mitsapa ireo fako rehetra tsy ilaiko ireo aho.
  • Sarotra kokoa ny miasa miaraka amin'ny fiankinan-doha ivelany.
  • Mila rafitra fanaraha-maso ny dikan-teny virtoaly manokana aho.

Mazava ho azy fa ara-drariny ireo hevitra rehetra ireo. Mitranga izany amin'ireo tranga roa ireo - ao amin'ny polyrepository dia manana junk manokana aho, ankoatra ilay ilaina amin'ny fananganana ... Mety mila junk hafa koa aho. Noho izany dia mamorona fitaovana manamarina ny tetikasa manontolo aho. Na mamorona monorepository sandoka miaraka amin'ny submodules aho. Afaka nandehandeha manodidina an'io tontolo andro io izahay. Saingy heveriko fa ny tohan-kevitr'i Matt dia tsy mahita ny antony lehibe indrindra, izay navadiko be dia be ho an'ny monorepository:

Mihantsy fifandraisana izany ary mampiseho olana

Rehefa manasaraka ny trano fitehirizam-bokatra isika dia miteraka olana amin'ny fandrindrana sy ny mangarahara. Mifanaraka amin'ny fomba fisainantsika momba ny ekipa izany (indrindra ny fomba fiheveran'ny mpikambana tsirairay azy ireo): tompon'andraikitra amin'ny singa iray isika. Mitokana irery izahay. Ny sisin-tany dia raikitra ao amin'ny ekipako sy ny singa (s) iasanay.

Satria mihasarotra kokoa ny architecture, tsy afaka mitantana azy irery intsony ny ekipa iray. Vitsy ny injeniera manana ny rafitra manontolo ao an-dohany. Aoka hatao hoe mitantana singa A zaraina izay ampiasain'ny Ekipa B, C, ary D ianao. Ny ekipa A dia mamerina, manatsara ny API, ary manova ny fampiharana anatiny. Vokatr'izany, ny fanovana dia tsy mifanaraka amin'ny aoriana. Inona no torohevitra anananao?

  • Tadiavo ny toerana rehetra ampiasana ny API taloha.
  • Misy toerana tsy azo ampiasaina ve ny API vaovao?
  • Afaka manamboatra sy mitsapa singa hafa ve ianao mba hahazoana antoka fa tsy tapaka izy ireo?
  • Afaka manandrana ny fiovanao ve ireto ekipa ireto?

Mariho fa ireo fanontaniana ireo dia tsy miankina amin'ny karazana tahiry. Mila mitady ekipa B, C ary D ianao. Mila miresaka amin'izy ireo ianao, fantaro ny fotoana, hahatakatra ny laharam-pahamehany. Farafaharatsiny manantena izahay fa hanao izany ianao.

Tsy misy olona tena te hanao izany. Tsy dia mahafinaritra loatra izany noho ny fanamboarana ny API ratsy. Olona sy misavoritaka daholo izany. Ao amin'ny polyrepository dia azonao atao ny manova tsotra izao, omeo ny olona miasa amin'io singa io (mety tsy B, C na D) hojerena, ary mandrosoa. Ny ekipa B, C ary D dia afaka mijanona amin'ny kinovany amin'izao fotoana izao. Havaozina izy ireo rehefa tsapany ny fahaizanao!

Ao amin'ny monorepository, afindra amin'ny alàlan'ny default ny andraikitra. Ny ekipa A dia manova ny singany ary, raha tsy mitandrina, dia tapaka avy hatrany ny B, C ary D. Izany dia mitarika amin'ny fisehoan'i B, C ary D eo am-baravaran'i A, manontany tena hoe nahoana ny Ekipa A no nanapaka ny fivoriambe. Izany dia mampianatra an'i A fa tsy afaka mandingana ny lisitry ny lisitra etsy ambony izy ireo. Tsy maintsy miresaka momba izay hataony izy ireo. Afaka mihetsika ve ny B, C ary D? Ahoana raha afaka ny B sy C, fa ny D dia mifandray akaiky amin'ny voka-dratsin'ny fitondran-tenan'ny algorithm taloha?

Avy eo dia mila miresaka momba ny fomba hialantsika amin'ity toe-javatra ity isika:

  1. Fanohanana API anatiny maro, ary hanamarika ny algorithm taloha ho tsy ampiasaina mandra-pahavitan'i D tsy hampiasa azy io.
  2. Fanohanana dikan-teny famoahana maro, iray miaraka amin'ny interface taloha, iray miaraka amin'ny vaovao
  3. Ahemotra ny famoahana ny fiovan'i A mandra-pahazoan'i B, C, ary D hanaiky izany miaraka.

Andeha hatao hoe nisafidy 1, API maromaro izahay. Amin'ity tranga ity dia manana kaody roa isika. Taloha sy vaovao. Tena mety amin'ny toe-javatra sasany. Averinay indray ny kaody taloha, mariho fa tsy ampiasaina intsony, ary mifanaraka amin'ny fandaharam-potoana fanesorana miaraka amin'ny ekipa D mitovy amin'ny tahiry poly sy mono.

Mba hamoahana dikan-teny maro dia mila sampana isika. Ankehitriny dia manana singa roa isika - A1 sy A2. Ny ekipa B sy C dia mampiasa A2 ary D mampiasa A1. Mila ny singa rehetra ho vonona amin'ny famotsorana isika satria mety ilaina ny fanavaozana ny fiarovana sy ny fanamboarana bug hafa alohan'ny handrosoan'i D. Ao amin'ny polyrepository, afaka manafina izany isika ao amin'ny sampana maharitra maharitra izay mahatsapa tsara. Ao amin'ny monorepository, manery ny kaody hoforonina ao anaty module vaovao. Ny ekipa D dia mbola mila manova ny singa "taloha". Hitan'ny rehetra ny sara aloanay eto - manana kaody avo roa heny izahay izao, ary tsy maintsy mihatra amin'izy roa ny fanamboarana bug izay mihatra amin'ny A1 sy A2. Miaraka amin'ny fomba fisarahana amin'ny polyrepository, miafina ao ambadiky ny cherry-pick izany. Heverintsika ho ambany ny vidiny satria tsy misy ny dika mitovy. Amin'ny fomba fijery azo ampiharina, mitovy ny vidiny: hanangana, hamoaka ary hihazona codebase roa mitovy be ianao mandra-pamafanao ny iray amin'izy ireo. Ny mahasamihafa azy dia miaraka amin'ny monorepository ity fanaintainana ity dia mivantana sy hita maso. Mbola ratsy kokoa izany, ary tsara izany.

Farany, tonga teo amin’ny teboka fahatelo izahay. Famoahana fahatarana. Mety hanatsara ny fiainan'ny Ekipa A ny fanovana nataon'i A. Zava-dehibe, fa tsy maika. Afaka hanemotra fotsiny ve isika? Ao amin'ny polyrepository, manosika an'io izahay hanindrona ny artifact. Mazava ho azy fa milaza izany amin'ny ekipa D izahay. Mijanòna amin'ny dikan-teny taloha mandra-pahatonganao! Izany dia mamela anao hilalao ny kanosa. Ny ekipa A dia manohy miasa amin'ny singany, tsy miraharaha ny zava-misy fa ny ekipa D dia mampiasa dikan-teny efa lany andro (izany no olan'ny Team D, adala izy ireo). Mandritra izany fotoana izany, ny ekipa D dia miresaka ratsy momba ny fihetsika tsy mitanila ataon'ny Ekipa A manoloana ny fahamarinan'ny kaody, raha miresaka momba izany mihitsy izy ireo. Mandalo ny volana. Farany, ny ekipa D dia nanapa-kevitra ny hijery ny fanavaozana, fa ny A ihany no manana fiovana bebe kokoa. Zara raha tadidin'ny ekipa A ny fotoana na ny fomba nandravan'izy ireo ny D. Ny fanavaozana dia maharary kokoa ary haharitra ela kokoa. Izay mandefa azy any amin'ny laharana laharam-pahamehana. Mandra-pahatongan'ny andro misy olana momba ny fiarovana amin'ny A izay manery antsika hanao sampana. Ny Ekipa A dia tsy maintsy miverina amin'ny fotoana, mitady teboka iray izay niorenan'i D, amboary ny olana eo, ary ataovy vonona ny hamotsorana azy. Io no safidy de facto ataon'ny olona, ​​ary io no ratsy indrindra. Toa tsara ho an'ny Ekipa A sy ny Ekipa D izany raha toa ka tsy mifampiraharaha.

Ao amin'ny monorepository, ny fahatelo dia tena tsy safidy. Voatery miatrika ny toe-javatra amin'ny iray amin'ireo fomba roa ianao. Mila mahita ny vidin'ny fananana sampana famoahana roa ianao. Mianara miaro tena amin'ny fanavaozam-baovao manimba ny fifanarahana mihemotra. Fa ny zava-dehibe indrindra: tsy azo ialana ny resaka sarotra.

Raha ny traikefako, rehefa mihabetsaka ny ekipa dia tsy azo atao intsony ny mitadidy ny rafitra manontolo, ary izany no ampahany lehibe indrindra. Tsy maintsy manatsara ny fahitana ny disadisa ao amin'ny rafitra ianao. Tsy maintsy miasa am-pahavitrihana ianao mba hahatonga ny ekipa hanalavitra ny singany ary hijery ny asan'ny ekipa sy ny mpanjifa hafa.

Eny, afaka mamorona fitaovana manandrana mamaha ny olana polyrepository ianao. Saingy ny traikefako amin'ny fampianarana fanaterana sy automatique tsy tapaka amin'ny orinasa lehibe dia milaza amiko izao: ny fitondran-tena mahazatra tsy misy fampiasana fitaovana fanampiny dia ny fihetsika antenainao ho hita. Ny fitondran-tena mahazatra amin'ny polyrepository dia mitoka-monina, izany no teboka iray manontolo. Ny fitondran-tena mahazatra amin'ny monorepository dia andraikitra iraisana sy mangarahara, izany no zava-drehetra. Amin'ireo tranga roa ireo dia hamorona fitaovana aho izay hanalefaka ny sisiny. Amin'ny maha-mpitarika ahy dia hifidy monorepository aho isaky ny misy satria ny fitaovana dia mila manamafy ny kolontsaina tiako, ary ny kolontsaina dia avy amin'ny fanapahan-kevitra madinika sy ny asan'ny ekipa isan'andro.

Ireo mpampiasa voasoratra anarana ihany no afaka mandray anjara amin'ny fanadihadiana. HiditraPlease.

Iza no tena fanatika? Mpanohana:

  • Monorepo

  • harafesina

  • fitsapan-kevitra diso / izy roa

Mpampiasa 33 no nifidy. Mpampiasa 13 no nifady.

Source: www.habr.com

Add a comment