Li-monorepositories: ka kopo, ho lokile

Li-monorepositories: ka kopo, ho lokile

Phetolelo ea sengoloa e lokiselitsoeng baithuti ba thupelo "Mekhoa le lisebelisoa tsa DevOps" morerong oa thuto oa OTUS.

U lokela ho khetha sebaka sa polokelo e le 'ngoe hobane boitšoaro boo e bo khothalletsang lihlopheng tsa hau ke pepeneneng le boikarabello bo arolelanoang, haholo ha lihlopha li ntse li hola. Ka tsela efe kapa efe, o tla tlameha ho tsetela ho lisebelisoa, empa kamehla ho molemo haeba boitšoaro bo sa feleng e le boits'oaro boo u bo batlang ho litaelo tsa hau.

Ke hobane'ng ha re bua ka see?

Matt Klein o ngotse sehlooho seo "Monorepos: Ke kopa u se ke ua etsa joalo!"  (lintlha tsa mofetoleli: phetolelo ho Habré "Li-monorepositories: ka kopo u se ke ua etsa joalo"). Ke rata Matt, ke nahana hore o bohlale haholo mme o lokela ho bala maikutlo a hae. Qalong o ile a beha phuputso ho Twitter:

Li-monorepositories: ka kopo, ho lokile

Fetolela:
Letsatsing lena la Selemo se Secha, ke tlil'o ngangisana ka hore na li-monorepositories li bohlanya hakae. 2019 e qalile ka khutso. Ka moea oa sena, ke u fa tlhahlobo. Ke bo-mang ba chesehang ka ho feteletseng? Batšehetsi:
- Monorepo
- mafome
- Khetho e fosahetseng / ka bobeli

Karabo ea ka e bile, "Ke 'na batho bao ka bobeli." Ho e-na le ho bua ka hore na Rust ke sethethefatsi joang, a re shebe hore na ke hobane'ng ha ke nahana hore o fositse ka li-monorepositories. Hanyenyane ka uena. Ke CTO ea Chef Software. Re na le lienjiniere tse ka bang 100, motheo oa khoutu o khutlela morao hoo e ka bang lilemo tse 11-12, le lihlahisoa tse 4 tsa sehlooho. E 'ngoe ea khoutu ena e sebakeng sa polyrepository (boemo ba ka ba ho qala), tse ling li sebakeng sa monorepository (boemo ba ka ba hona joale).

Pele ke qala: khang e 'ngoe le e' ngoe eo ke e etsang mona e tla sebetsa ho mefuta e 'meli ea polokelo. Ka maikutlo a ka, ha ho na lebaka la tekheniki leo ka lona u lokelang ho khetha mofuta o mong oa polokelo ho feta o mong. U ka etsa hore mokhoa ofe kapa ofe o sebetse. Ke thabela ho bua ka eona, empa ha ke thahaselle mabaka a maiketsetso a hore na ke hobane'ng ha e mong a phahametse e mong.

Ke lumellana le karolo ea pele ea ntlha ea Matt:

Hobane ka tekanyo, monorepository e tla rarolla mathata ohle a tšoanang le ao polyrepository e a rarollang, empa ka nako e ts'oanang e u qobella ho kopanya khoutu ea hau ka thata mme e hloka boiteko bo makatsang ba ho eketsa scalability ea sistimi ea hau ea taolo ea mofuta.

U tla tlameha ho rarolla mathata a tšoanang ho sa tsotellehe hore na u khetha monorepository kapa polyrepository. U lokolla litokollo joang? Mokhoa oa hau oa ho ntlafatsa ke ofe? Ho lumellana ha morao? Ho itšetlehile ka merero e fapaneng? Ke mekhoa efe ea meralo e amohelehang? O laola meaho ea hau ea kaho le liteko joang? Lenane lena ha le fele. 'Me u tla li rarolla kaofela ha u ntse u hōla. Ha ho na chisi ea mahala.

Ke nahana hore khang ea Matt e tšoana le maikutlo a arolelanoang ke baenjiniere ba bangata (le batsamaisi) bao ke ba hlomphang. Sena se etsahala ho latela pono ea moenjiniere ea sebetsang karolong kapa sehlopha se sebetsang karolong eo. U utloa lintho tse kang:

  • Codebase e ngata haholo - ha ke hloke litšila tsena kaofela.
  • Ho boima le ho feta ho etsa liteko hobane ke tlameha ho lekola litšila tsena kaofela tseo ke sa li hlokeng.
  • Ho thata le ho feta ho sebetsa le litšepe tsa kantle.
  • Ke hloka litsamaiso tsa ka tsa taolo ea mofuta o itseng.

Ha e le hantle, lintlha tsena kaofela li nepahetse. Sena se etsahala maemong a mabeli - ka polyrepository ke na le litšila tsa ka, ho phaella ho tse hlokahalang bakeng sa ho haha ​​... Nka boela ka hloka litšila tse ling. Kahoo ke "bonolo" ho theha lisebelisoa tse hlahlobang morero oohle. Kapa ke theha monorepository ea bohata e nang le li-submodule. Re ne re ka tsamaea ho potoloha sena letsatsi lohle. Empa ke nahana hore khang ea Matt ha e na lebaka la sehlooho, leo ke ileng ka le fetola haholo molemong oa sebaka se le seng:

E qholotsa puisano 'me e bontša mathata

Ha re arola lipolokelo, re theha bothata ba khokahano le ponaletso. Sena se lumellana le tsela eo re nahanang ka eona ka lihlopha (haholo-holo tsela eo litho ka bomong li nahanang ka eona): re ikarabella bakeng sa karolo e itseng. Re sebetsa re le bang. Meeli e behiloe sehlopheng sa ka le karolo (li)karolo eo re sebetsang ho eona.

Ha meralo e ntse e rarahana le ho feta, sehlopha se le seng ha se sa khona ho se laola se le seng. Ke baenjiniere ba fokolang haholo ba nang le tsamaiso eohle hloohong ea bona. Ha re re u laola karolo e arolelanoang ea A e sebelisoang ke Lihlopha tsa B, C, le D. Sehlopha sa A se tsosolosa, se ntlafatsa API, hape se fetola ts'ebetsong ea ka hare. Ka lebaka leo, liphetoho ha li tsamaellane ka morao. O na le keletso efe?

  • Fumana libaka tsohle moo API ea khale e sebelisoang teng.
  • Na ho na le libaka tseo API e ncha e ke keng ea sebelisoa?
  • A na u ka lokisa le ho leka likarolo tse ling ho etsa bonnete ba hore ha li robehe?
  • Na lihlopha tsee li ka leka liphetoho tsa hau hona joale?

Ka kopo hlokomela hore lipotso tsena li ikemetse ho mofuta oa polokelo. U tla hloka ho fumana lihlopha tsa B, C le D. U tla hloka ho bua le bona, ho fumana nako, ho utloisisa lintho tse tlang pele bophelong ba bona. Bonyane re tšepa hore u tla etsa joalo.

Ha ho motho ea hlileng a batlang ho etsa sena. Sena ha se monate ho feta ho lokisa API e mpe. Kaofela ke batho le bohlasoa. Ka polyrepository, u ka etsa liphetoho feela, ua e fa batho ba sebetsang karolong eo (mohlomong eseng B, C kapa D) bakeng sa tlhahlobo, 'me u tsoele pele. Lihlopha tsa B, C le D li ka lula le mofuta oa tsona hajoale. Li tla nchafatsoa ha li hlokomela bohlale ba hau!

Sebakeng sa monorepository, boikarabello bo suthisoa ke kamehla. Sehlopha sa A se fetola karolo ea sona 'me, ha se se hlokolosi, se senya hang-hang B, C le D. Sena se lebisa ho B, C le D ho hlaha monyako oa A, ba ipotsa hore na ke hobane'ng ha Sehlopha sa A se robehile kopano. Sena se ruta A hore ba ke ke ba tlola lethathamo la ka ka holimo. Ba tlameha ho bua ka seo ba tlang ho se etsa. Na B, C le D li ka tsamaea? Ho thoe'ng haeba B le C li ka khona, empa D e ne e amana haufi-ufi le phello e ka thōko ea boitšoaro ba khale ba algorithm?

Joale re tlameha ho bua ka hore na re tla tsoa joang boemong bona:

  1. Ts'ehetso bakeng sa li-API tse ngata tsa ka hare, 'me e tla tšoaea algorithm ea khale e theohile ho fihlela D e ka emisa ho e sebelisa.
  2. Ts'ehetso bakeng sa liphetolelo tse ngata tsa tokollo, e 'ngoe e nang le sebopeho sa khale, e' ngoe e nang le e ncha.
  3. Liehisa ho lokolloa ha liphetoho tsa A ho fihlela B, C, le D ba ka e amohela ka nako e le 'ngoe.

Ha re re re khethile 1, li-API tse 'maloa. Tabeng ena re na le likarolo tse peli tsa khoutu. Tsa khale le tse ncha. Ho loketse haholo maemong a mang. Re hlahloba khoutu ea khale hape, re e tšoaee e theohile, 'me re lumellana ka kemiso ea ho tlosa le sehlopha sa D. Ha e le hantle e tšoana le li-poly le mono repositories.

Ho lokolla liphetolelo tse ngata, re hloka lekala. Hona joale re na le likarolo tse peli - A1 le A2. Lihlopha tsa B le C li sebelisa A2 le D li sebelisa A1. Re hloka hore karolo e 'ngoe le e 'ngoe e itokisetse ho lokolloa hobane lintlafatso tsa ts'ireletso le litokiso tse ling tsa liphoso li ka hlokoa pele D e tsoela pele. Ka polyrepository, re ka pata sena lekaleng le phetseng nako e telele le ikutloang le le monate. Ka monorepository, re qobella khoutu hore e thehoe mojulung o mocha. Sehlopha sa D se ntse se tla tlameha ho etsa liphetoho ho karolo ea "khale". Motho e mong le e mong a ka bona litšenyehelo tseo re li lefang mona - joale re na le khoutu e menahaneng habeli, 'me litokiso life kapa life tsa liphoso tse sebetsang ho A1 le A2 li tlameha ho sebetsa ho tsona ka bobeli. Ka mokhoa oa branching sebakeng sa polyrepository, sena se patiloe ka mor'a khetho ea ciliegia. Re nka hore litšenyehelo li tlase hobane ha ho na phetiso. Ho ea ka pono e sebetsang, litšenyehelo lia tšoana: u tla haha, u lokolle, 'me u boloke li-codebase tse peli tse tšoanang haholo ho fihlela u ka hlakola e 'ngoe ea tsona. Phapang ke hore ka monorepository bohloko bona bo tobileng le bo bonahalang. Sena se mpe le ho feta, 'me ke hantle.

Qetellong, re ile ra fihla ntlheng ea boraro. Ho lieha ho lokolloa. Ho ka etsahala hore liphetoho tse entsoeng ke A li tla ntlafatsa bophelo ba Sehlopha sa A. Bohlokoa, empa eseng ka potlako. Na re ka lieha? Ka polyrepository, re sutumelletsa sena ho penya artifact. Ke 'nete hore re bolella Team D sena. Lula feela ho mofuta oa khale ho fihlela u utloisisa! Sena se etsa hore u be le monyetla oa ho bapala papali. Sehlopha sa A se ntse se tsoela pele ho sebetsa karolong ea sona, se iphapanyetsa taba ea hore Sehlopha sa D se sebelisa mofuta o ntseng o siuoa ke nako (boo ke bothata ba Team D, ke maoatla). Ho sa le joalo, Sehlopha sa D se bua hampe ka boikutlo bo sa tsotelleng ba Team A mabapi le botsitso ba khoutu, haeba ba bua ka eona ho hang. Ho feta likhoeli. Qetellong, Sehlopha sa D se etsa qeto ea ho sheba monyetla oa ntlafatso, empa A e na le liphetoho tse ling feela. Sehlopha sa A ha se hopole hore na se robehile neng kapa joang. E leng se e romellang ho ea tlase lethathamong la lintho tse tlang pele. Ho fihlela letsatsing leo re nang le taba ea security ho A e re qobellang ho etsa lekala. Sehlopha sa A se tlameha ho khutlela morao nakong, ho fumana ntlha ha D e ne e tsitsitse, ho lokisa bothata moo, 'me e lokisetse ho lokolloa. Ena ke khetho ea sebele eo batho ba e etsang, 'me ke eona e mpe ka ho fetisisa. Ho bonahala ho le molemo ho Sehlopha sa A le Sehlopha sa D ha feela re ka iphapanyetsana.

Ho monorepository, ea boraro ha e le hantle ha se khetho. U qobelloa ho sebetsana le boemo ka e 'ngoe ea litsela tse peli. U hloka ho bona litšenyehelo tsa ho ba le makala a mabeli a tokollo. Ithute ho itšireletsa ho lintlafatso tse senyang tšebelisano ea morao-rao. Empa ea bohlokoa ka ho fetisisa: u ke ke ua qoba ho ba le puisano e thata.

Boiphihlelong ba ka, ha lihlopha li se li le kholo, ha ho sa khonahala ho boloka tsamaiso eohle kelellong, 'me ke eona karolo ea bohlokoa ka ho fetisisa. U tlameha ho ntlafatsa ponahalo ea likhohlano tsamaisong. U tlameha ho sebetsa ka mafolofolo ho etsa hore lihlopha li shebe hole le likarolo tsa tsona le ho sheba mosebetsi oa lihlopha tse ling le bareki.

E, u ka etsa lisebelisoa tse lekang ho rarolla bothata ba polyrepository. Empa phihlelo ea ka ea ho ruta ka mokhoa o tsoelang pele le oa ho iketsetsa likhoebo tse kholo li mpolella sena: boitšoaro bo sa feleng ntle le tšebeliso ea lisebelisoa tse eketsehileng ke boitšoaro boo u lebeletseng ho bo bona. Boitšoaro bo sa feleng ba polyrepository ke ho itšehla thajana, ke eona ntlha eohle. Boitšoaro bo sa feleng ba sebaka se le seng ke boikarabello bo arolelanoang le ponaletso, ke eona ntlha eohle. Maemong ana ka bobeli, ke tlil'o theha sesebelisoa se tla batalatsa mapheo a mabe. Joaloka moetapele, ke tla khetha sebaka se le seng nako le nako hobane lisebelisoa li hloka ho matlafatsa moetlo oo ke o batlang, 'me setso se tsoa liqetong tse nyane le mosebetsi oa letsatsi le letsatsi oa sehlopha.

Ke basebelisi ba ngolisitsoeng feela ba ka kenyang letsoho phuputsong. kenaka kopo.

Ke bo-mang ba chesehang ka ho fetisisa? Batšehetsi:

  • Monorepo

  • mafome

  • Khetho e fosahetseng / ka bobeli

Basebelisi ba 33 ba ile ba khetha. Basebelisi ba 13 ba ile ba hana.

Source: www.habr.com

Eketsa ka tlhaloso