Monorepositories: chonde, muyenera

Monorepositories: chonde, muyenera

Kumasulira kwa nkhani yokonzedwa kwa ophunzira a maphunziro "Zochita ndi zida za DevOps" mu pulojekiti ya maphunziro ya OTUS.

Muyenera kusankha malo osungiramo zinthu zomwe zimalimbikitsa m'magulu anu ndikuwonetsetsa komanso kugawana udindo, makamaka pamene magulu akukula. Mulimonse momwe zingakhalire, muyenera kuyika ndalama pazida, koma nthawi zonse zimakhala bwino ngati machitidwe osasintha ndi omwe mukufuna pamalamulo anu.

N’cifukwa ciani tikukamba za zimenezi?

Matt Klein adalemba nkhaniyi "Monorepos: Chonde musatero!"  (chidziwitso cha womasulira: kumasulira kwa Habré "Monorepositories: chonde musatero"). Ndimakonda Matt, ndikuganiza kuti ndi wanzeru kwambiri ndipo muyenera kuwerenga malingaliro ake. Poyambirira adayika kafukufukuyu pa Twitter:

Monorepositories: chonde, muyenera

Translation:
Lino buzuba bwamwaka Mupya, ndilazumanana kukambauka makani mabotu. 2019 idayamba mwakachetechete. Mu mzimu wa izi, ndikukupatsani kafukufuku. Kodi otengeka kwambiri ndi ndani? Othandizira:
- Monorepo
- dzimbiri
- Zosankha zolakwika / zonse ziwiri

Yankho langa linali, "Ndine kwenikweni onse a anthu amenewo." M'malo molankhula za momwe Dzimbiri ndi mankhwala, tiyeni tiwone chifukwa chake ndikuganiza kuti akulakwitsa za monorepositories. Pang'ono za iwe mwini. Ndine CTO wa Chef Software. Tili ndi mainjiniya pafupifupi 100, ma code maziko obwerera mmbuyo pafupifupi zaka 11-12, ndi zinthu 4 zazikulu. Ena mwa ma code awa ali mu polyrepository (malo anga oyambira), ena ali mu monorepository (malo anga pano).

Ndisanayambe: mkangano uliwonse womwe ndimapanga pano ukhudza mitundu yonse ya nkhokwe. M'malingaliro anga, palibe chifukwa chaukadaulo chomwe muyenera kusankha mtundu wina wankhokwe kuposa wina. Mutha kupanga njira iliyonse ntchito. Ndine wokondwa kulankhula za izo, koma ine sindiri chidwi ndi yokumba luso zifukwa chifukwa wina kuposa wina.

Ndikugwirizana ndi gawo loyamba la mfundo ya Matt:

Chifukwa pamlingo waukulu, monorepository imathetsa zovuta zonse zomwe polyrepository imathetsa, koma nthawi yomweyo ndikukukakamizani kuti mugwirizane mwamphamvu ndi code yanu ndipo zimafuna kuyesetsa kwakukulu kuti muwonjezere kusinthika kwa dongosolo lanu lowongolera.

Muyenera kuthana ndi mavuto omwewo mosasamala kanthu kuti mumasankha monorepository kapena polyrepository. Kodi mumamasula bwanji? Kodi mumatsatira bwanji zosintha? Kugwirizana mmbuyo? Kudalira pa ntchito zosiyanasiyana? Ndi masitayelo otani a kamangidwe omwe amavomereza? Kodi mumayendetsa bwanji zomangamanga zanu ndi kuyesa? Mndandandawu ndi wopanda malire. Ndipo mudzawathetsa onse pamene mukukula. Palibe tchizi chaulere.

Ndikuganiza kuti mkangano wa Matt ndi wofanana ndi malingaliro omwe amagawana ndi mainjiniya ambiri (ndi mamanenjala) omwe ndimalemekeza. Izi zimachitika pakuwona kwa injiniya yemwe akugwira ntchito pagawo kapena gulu lomwe likugwira ntchito pagawolo. Mumamva zinthu monga:

  • Codebase ndi yayikulu - sindikufuna zonyansa zonsezi.
  • Ndizovuta kuyesa chifukwa ndiyenera kuyesa zonyansa zonsezi zomwe sindikuzifuna.
  • Ndikovuta kwambiri kugwira ntchito ndi zodalira zakunja.
  • Ndikufuna machitidwe anga enieni owongolera.

Ndithudi, mfundo zonsezi n’zomveka. Izi zimachitika muzochitika zonse ziwiri - mu polyrepository ndili ndi zinyalala zanga, kuwonjezera pa zomwe zimafunikira pomanga ... Ndingafunikenso zonyansa zina. Chifukwa chake "ndimangopanga" zida zomwe zimayang'ana polojekiti yonse. Kapena ndimapanga monorepository yabodza yokhala ndi ma submodule. Tikhoza kuyenda mozungulira tsiku lonse. Koma ndikuganiza kuti mkangano wa Matt ukuphonya chifukwa chachikulu, chomwe ndidachitembenukira kwambiri mokomera malo amodzi:

Zimayambitsa kulankhulana ndikuwonetsa mavuto

Tikalekanitsa nkhokwe, timapanga vuto la mgwirizano ndi kuwonekera. Izi zimagwirizana ndi momwe timaganizira zamagulu (makamaka momwe mamembala amawaganizira): tili ndi udindo pa gawo linalake. Timagwira ntchito patokha. Malire amaikidwa pa gulu langa ndi chigawo(zi) chomwe tikugwira.

Pamene zomangamanga zimakhala zovuta kwambiri, gulu limodzi silingathenso kuyendetsa palokha. Mainjiniya ochepa kwambiri ali ndi dongosolo lonse m'mutu mwawo. Tiyerekeze kuti mumayang'anira gawo logawana A lomwe limagwiritsidwa ntchito ndi Magulu B, C, ndi D. Gulu A likukonzanso, kukonza API, komanso kusintha kukhazikitsidwa kwamkati. Zotsatira zake, zosinthazo sizikugwirizana m'mbuyo. Muli ndi malangizo otani?

  • Pezani malo onse omwe API yakale imagwiritsidwa ntchito.
  • Kodi pali malo omwe API yatsopano singagwiritsidwe ntchito?
  • Kodi mungakonze ndikuyesa zida zina kuti muwonetsetse kuti sizikusweka?
  • Kodi maguluwa angakuyeseni zomwe mwasintha pompano?

Chonde dziwani kuti mafunsowa sadalira mtundu wankhokwe. Muyenera kupeza magulu B, C ndi D. Muyenera kulankhula nawo, kupeza nthawi, kumvetsetsa zomwe amaika patsogolo. Osachepera tikuyembekeza kuti mutero.

Palibe amene amafunadi kuchita zimenezi. Izi ndizosasangalatsa kwambiri kuposa kungokonza API yoyipa. Zonse ndi zaumunthu komanso zosokoneza. Mu polyrepository, mutha kungosintha, perekani kwa anthu omwe akugwira nawo gawolo (mwina osati B, C kapena D) kuti awonenso, ndikupitilira. Magulu B, C ndi D atha kukhalabe ndi mtundu wawo pakadali pano. Adzakonzedwanso akazindikira luso lanu!

Mu monorepository, udindo umasinthidwa ndi kusakhazikika. Gulu A limasintha chigawo chawo ndipo, ngati sichisamala, nthawi yomweyo chimaphwanya B, C ndi D. Izi zimapangitsa B, C ndi D kuwonekera pakhomo la A, ndikudabwa chifukwa chake Team A inathyola msonkhano. Izi zimaphunzitsa A kuti sangathe kudumpha mndandanda wanga pamwambapa. Ayenera kulankhula za zomwe ati achite. Kodi B, C ndi D angasunthe? Bwanji ngati B ndi C angathe, koma D anali wogwirizana kwambiri ndi zotsatira za khalidwe lakale la algorithm?

Kenako tiyenera kukambirana za momwe tingatulukire mumkhalidwewu:

  1. Thandizo la ma API angapo amkati, ndipo lidzalemba ma algorithm akale ngati achotsedwa mpaka D atasiya kugwiritsa ntchito.
  2. Thandizo lamitundu ingapo yotulutsa, imodzi yokhala ndi mawonekedwe akale, amodzi ndi atsopano.
  3. Kuchedwetsa kutulutsidwa kwa zosintha za A mpaka B, C, ndi D zitha kuvomereza nthawi imodzi.

Tinene kuti tasankha 1, ma API angapo. M'nkhaniyi tili ndi zidutswa ziwiri za code. Zakale ndi zatsopano. Zothandiza nthawi zina. Timayang'ananso kachidindo yakale, ikani chizindikiro kuti yachotsedwa, ndikuvomerezana pa ndandanda yochotsa ndi gulu la D Zofanana kwambiri ndi zosungira za poly ndi mono.

Kuti titulutse mitundu ingapo, timafunikira nthambi. Tsopano tili ndi zigawo ziwiri - A1 ndi A2. Magulu B ndi C amagwiritsa ntchito A2 ndi D amagwiritsa ntchito A1. Timafunikira gawo lililonse kuti likhale lokonzekera kumasulidwa chifukwa zosintha zachitetezo ndi kukonza zolakwika zina zitha kufunikira D isanapite patsogolo. Mu polyrepository, titha kubisa izi munthambi yanthawi yayitali yomwe imamva bwino. Mu monorepository, timakakamiza code kuti ipangidwe mu module yatsopano. Gulu D liyenera kusinthanso gawo "lakale". Aliyense akhoza kuwona mtengo womwe tikulipira pano - tsopano tili ndi ma code owirikiza kawiri, ndipo kukonza zolakwika zilizonse zomwe zimagwira A1 ndi A2 ziyenera kugwira ntchito kwa onse awiri. Ndi njira ya nthambi mu polyrepository, izi zimabisika kuseri kwa chitumbuwa. Timaona kuti mtengo wake ndi wotsika chifukwa palibe kubwereza. Kuchokera pamalingaliro othandiza, mtengo wake ndi womwewo: mumanga, kumasula, ndikusunga ma codebase awiri ofanana mpaka mutha kufufuta imodzi mwa izo. Kusiyanitsa ndiko kuti ndi monorepository ululu uwu ndi wolunjika komanso wowonekera. Izi ndizoyipa kwambiri, ndipo ndizabwino.

Pomaliza, tinafika pa mfundo yachitatu. Kumasulidwa kuchedwa. N'zotheka kuti kusintha kopangidwa ndi A kudzasintha miyoyo ya Team A. Zofunika, koma osati mwamsanga. Kodi tingachedwe? Mu polyrepository, timakankhira izi kuti tiyike chojambulacho. Zoonadi tikuwuza Team D izi. Ingokhalani pamtundu wakale mpaka mutapeza! Izi zimakupangitsani kuti muzichita mantha. Team A ikupitiriza kugwira ntchito pa gawo lawo, kunyalanyaza mfundo yakuti Team D ikugwiritsa ntchito mtundu wachikale (ndilo vuto la Team D, ndi opusa). Pakadali pano, Team D imalankhula molakwika za malingaliro osasamala a Team A pa kukhazikika kwa code, ngati alankhula za izo nkomwe. Miyezi ikupita. Pomaliza, Team D yasankha kuyang'ana zosintha, koma A amangokhala ndi zosintha zambiri. Team A samakumbukira nthawi kapena momwe adathyola D. Kukweza kumakhala kowawa kwambiri ndipo kudzatenga nthawi yayitali. Zomwe zimatumiza patsogolo pamtengo wofunikira. Mpaka tsiku lomwe tili ndi nkhani yachitetezo mu A yomwe imatikakamiza kupanga nthambi. Gulu A liyenera kubwerera mmbuyo mu nthawi, kupeza mfundo pamene D anali wokhazikika, kukonza vuto pamenepo, ndikukonzekera kumasulidwa. Izi ndi zimene anthu amasankha ndipo n’zoipa kwambiri. Zikuwoneka ngati zabwino kwa onse a Team A ndi Team D bola titha kunyalanyazana.

Mu monorepository, chachitatu sichosankha. Mukukakamizika kuthana ndi vutoli mwa njira imodzi mwa njira ziwiri. Muyenera kuwona mtengo wokhala ndi nthambi ziwiri zotulutsa. Phunzirani kudziteteza ku zosintha zomwe zimasokoneza kuyanjana m'mbuyo. Koma chofunika kwambiri: simungapewe kukambirana zovuta.

Muzochitika zanga, magulu akamakula, sikungathekenso kukumbukira dongosolo lonse, ndipo ndilo gawo lofunika kwambiri. Muyenera kusintha mawonekedwe a kusagwirizana mu dongosolo. Muyenera kuyesetsa mwakhama kuti magulu ayang'ane kutali ndi zigawo zawo ndikuyang'ana ntchito za magulu ena ndi ogula.

Inde, mutha kupanga zida zomwe zimayesa kuthetsa vuto la polyrepository. Koma zomwe ndidakumana nazo pophunzitsa mosalekeza kuperekera komanso kuchita zokha m'mabizinesi akuluakulu zimandiuza izi: machitidwe osakhazikika osagwiritsa ntchito zida zowonjezera ndi zomwe mukuyembekeza kuwona. Khalidwe losasinthika la polyrepository ndikudzipatula, ndiye mfundo yonse. Makhalidwe osasinthika a monorepository amagawana udindo komanso kuwonekera, ndiye mfundo yonse. Mumasena oonse, ndakapanga cintu cikonzya kugwasya kapati. Monga mtsogoleri, ndimasankha malo osungira nthawi zonse chifukwa zida ziyenera kulimbikitsa chikhalidwe chomwe ndikufuna, ndipo chikhalidwe chimachokera ku zisankho zazing'ono komanso ntchito za tsiku ndi tsiku za gulu.

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi otengeka kwambiri ndi ndani? Othandizira:

  • Monorepo

  • dzimbiri

  • Zosankha zolakwika / zonse ziwiri

Ogwiritsa ntchito 33 adavota. Ogwiritsa 13 adakana.

Source: www.habr.com

Kuwonjezera ndemanga