Monorepositories: faamolemole, tatau

Monorepositories: faamolemole, tatau

Faaliliuga o le tusiga ua saunia mo tamaiti aoga "DevOps faiga ma meafaigaluega" i le poloketi a'oa'oga a le OTUS.

E tatau ona e filifilia se tasi e teu fa'asoa aua o le amio e fa'alauiloa i au 'au e manino ma fefa'asoaa'i tiute, aemaise lava a'o tuputupu a'e 'au. Po o le a lava le auala, e tatau ona e teu faʻafaigaluega i meafaigaluega, ae sili atu pe a fai o le amio le lelei o le amio e te manaʻo ai i au poloaiga.

Aisea tatou te talanoa ai i lenei mea?

Na tusia e Matt Klein le tusiga "Monorepos: Faamolemole aua!"  (faamatalaga a le faaliliu: faaliliuga i luga o Habré “Monorepositories: faamolemole aua”). Ou te fiafia ia Matt, ou te manatu e atamai tele o ia ma e tatau ona e faitau i lona manatu. Na ia faʻasalalau muamua le palota ile Twitter:

Monorepositories: faamolemole, tatau

Faʻaliliuga:
O lenei Tausaga Fou, o le a ou finau e uiga i le faʻavalevalea o monorepositories. Na amata filemu le 2019. I le agaga o lenei mea, ou te ofoina atu ia te oe se suʻesuʻega. O ai tagata fa'atauva'a tetele? Tagata lagolago:
- Monorepo
- ele
- Le sa'o palota / lua

O la’u tali, “O a’u moni lava o na tagata uma.” Nai lo le talanoa e uiga i le Rust o se vailaʻau, seʻi o tatou vaʻai pe aisea ou te manatu ai e sese e uiga i monorepositories. O sina mea itiiti e uiga ia te oe lava. O aʻu o le CTO o le Chef Software. E tusa ma le 100 a matou inisinia, o se faʻavae tulafono e toe foʻi i tua e uiga i le 11-12 tausaga, ma 4 oloa autu. O nisi o lenei code o loʻo i totonu o se polyrepository (loʻu tulaga amata), o nisi o loʻo i totonu o se monorepository (loʻu tulaga o loʻo i ai nei).

Ae ou te leʻi amataina: o finauga uma ou te faia iinei o le a faʻaoga i ituaiga uma o faleoloa. I loʻu manatu, e leai se mafuaʻaga faʻapitoa e tatau ai ona e filifilia se tasi ituaiga o fale teu oloa i luga o le isi. E mafai ona e faia so'o se faiga e aoga. Ou te fiafia e talanoa e uiga i ai, ae ou te le fiafia i mafuaʻaga faʻapitoa faʻapitoa e sili ai le tasi i le isi.

Ou te ioe i le vaega muamua o le manatu o Matt:

Talu ai i le fua, o le monorepository o le a foia uma faʻafitauli e foʻia e le polyrepository, ae i le taimi lava e tasi e faʻamalosia oe e faʻapipiʻi faʻatasi lau code ma manaʻomia ni taumafaiga faʻapitoa e faʻateleina ai le faʻaogaina o lau faiga faʻatonutonu.

E tatau ona e foia ia lava faafitauli e tusa lava pe e te filifilia se monorepository poʻo se polyrepository. E fa'afefea ona e tatalaina fa'asalalauga? O le a lau auala i fa'afouga? Fegalegaleaiga i tua? Fa'asa'o fa'alagolago galuega? O a sitaili faufale e talia? E fa'afefea ona e fa'atautaia lau faufale ma fa'ata'ita'iga fa'apitoa? O le lisi e le gata. Ma o le ae foia uma i latou a o e tuputupu ae. E leai se sisi fua.

Ou te manatu o le finauga a Matt e talitutusa ma manatu na faasoa mai e le tele o inisinia (ma pule) ou te faʻaaloalo. E tupu lenei mea mai le vaaiga a le inisinia o loʻo galue i le vaega poʻo le 'au o loʻo galue i le vaega. E te fa'alogo i mea e pei o:

  • O le codebase e tele - Ou te le manaʻomia uma nei mea leaga.
  • E sili atu ona faigata le suʻega aua e tatau ona ou suʻeina uma nei mea leaga ou te le manaʻomia.
  • E sili atu ona faigata le galue ma faʻalagolago i fafo.
  • Ou te mana'omia la'u lava fa'atonuga fa'atonuga.

Ioe, o nei manatu uma e talafeagai. E tupu lenei mea i tulaga uma e lua - i totonu o le polyrepository o loʻo i ai laʻu lava mea leaga, faʻaopoopo i le mea e manaʻomia mo le fausiaina ... E mafai foi ona ou manaʻomia isi mea leaga. O lea ou te "naʻo" faia meafaigaluega e siaki ai le galuega atoa. Pe ou te faia se monorepository pepelo ma submodules. E mafai ona matou savavali faataamilo i lenei aso i le aso atoa. Ae ou te manatu o le finauga a Matt ua misia le mafuaaga autu, lea na ou fuli malosi i le monorepository:

E faaosofia ai fesootaiga ma faaalia ai faafitauli

A matou tu'u'ese'ese fale teu oloa, matou te faia se fa'afitauli moni o le fa'amaopoopo ma le manino. E fetaui lea ma le auala tatou te mafaufau ai e uiga i 'au (aemaise lava le auala e mafaufau ai tagata taitoatasi e uiga ia i latou): tatou te nafa ma se vaega patino. Matou te galulue fa'atasi. O tuaoi o loʻo faʻamautu i laʻu 'au ma vaega (s) o loʻo matou galulue ai.

A'o fa'asolosolo lavelave le fa'ata'ita'iga, e le mafai e se 'au ona toe fa'afoeina na'o ia. E toaitiiti lava inisinia o loʻo i ai le faiga atoa i totonu o latou ulu. Fa'apea e te pulea se vaega fa'asoa A o lo'o fa'aogaina e Team B, C, ma D. O lo'o toe fa'afo'i le Team A, fa'aleleia le API, ma suia fo'i le fa'atinoga i totonu. O se taunuuga, o suiga e le fetaui i tua. O le a sau fautuaga?

  • Su'e nofoaga uma e fa'aoga ai le API tuai.
  • E i ai ni nofoaga e le mafai ona fa'aogaina le API fou?
  • E mafai ona e fa'aleleia ma su'e isi vaega ina ia mautinoa e le gau?
  • E mafai e nei 'au ona su'e au suiga i le taimi nei?

Faamolemole ia matau o nei fesili e tutoatasi mai le ituaiga fale teu oloa. E te manaʻomia le suʻeina o 'au B, C ma D. E manaʻomia lou talanoa ia i latou, suʻe le taimi, malamalama ia latou faʻamuamua. O le mea sili matou te faʻamoemoe o le a e faia.

E leai se tasi e manaʻo e faia lenei mea. E sili atu le malie nai lo le na o le faʻapipiʻiina o le API leaga. O tagata uma lava ma le gaogaosa. I totonu o se polyrepository, e mafai ona e faia suiga, tuʻuina atu i tagata o loʻo galulue i lena vaega (atonu e le o B, C poʻo D) mo le toe iloiloga, ma faʻaauau. 'Au B, C ma D e mafai lava ona tumau i le latou lomiga o lo'o iai mo le taimi nei. O le a faʻafouina pe a latou iloa lou atamai!

I totonu o se monorepository, e suia le matafaioi e ala i le faaletonu. E suia e le Au A le latou vaega ma, afai e le faʻaeteete, e vave lava ona talepe le B, C ma le D. E oʻo atu i le B, C ma le D o loʻo faʻaalia i le faitotoa o A, ma mafaufau pe aisea na talepe ai e le Au A le fono. E a'oa'o ai A e le mafai ona latou fa'amisi la'u lisi i luga. E tatau ona latou talanoa e uiga i mea o le a latou faia. E mafai e B, C ma D ona gaoioi? Ae fa'afefea pe a mafai e B ma C, ae o D e feso'ota'i vavalalata ma se a'afiaga o le amio tuai a algorithm?

Ona tatau lea ona tatou talanoa e uiga i le auala tatou te o ese ai mai lenei tulaga:

  1. Lagolago mo le tele o API i totonu, ma o le a faʻailogaina le algorithm tuai e le toe faʻaaogaina seia oʻo ina taofia e D le faʻaaogaina.
  2. Lagolago mo le tele o faʻasalalauga faʻasalalauga, tasi ma le faʻaoga tuai, tasi ma le fou.
  3. Fa'atuai le tu'uina atu o suiga a A se'ia mafai e B, C, ma D ona talia i le taimi e tasi.

Fa'apea ua tatou filifilia 1, tele API. I lenei tulaga e lua a matou fasi code. Tuai ma fou. E faigofie tele i nisi tulaga. Matou te toe siaki le code tuai, faʻailoga ua le toe faʻaaogaina, ma malilie i se faʻasologa o le aveeseina ma le D team E tutusa lelei mo poly ma mono repositories.

Ina ia tatalaina le tele o lomiga, matou te manaʻomia se lala. O lea e lua a matou vaega - A1 ma A2. 'Au B ma C fa'aoga A2 ma D fa'aoga A1. Matou te manaʻomia vaega uma e sauni mo le faʻamalolo ona o faʻafouga saogalemu ma isi faʻaleleia o pusa atonu e manaʻomia aʻo leʻi mafai e D ona agai i luma. I totonu o se polyrepository, e mafai ona tatou natia lenei mea i totonu o se lala ola umi e lagona lelei. I totonu o se monorepository, matou te faʻamalosia le code e faia i se module fou. E tatau lava ona faia e le Vaega D suiga i le vaega "tuai". E mafai e tagata uma ona vaʻai i le tau o loʻo matou totogiina iinei - ua faaluaina le tele o a matou code, ma o soʻo se faʻaleleia o bug e faʻatatau i le A1 ma le A2 e tatau ona faʻaoga ia i latou uma e lua. Faatasi ai ma le faʻaogaina o le lala i totonu o se polyrepository, o loʻo natia i tua o le cherry-pick. Matou te manatu o le tau e maualalo ona e leai se faʻaluaina. Mai se vaaiga fa'atino, e tutusa le tau: e te fau, fa'asa'oloto, ma fa'atumauina ni fa'amaufa'ailoga tutusa se lua se'ia mafai ona e tapeina se tasi. O le eseesega o le faʻatasi ai ma se monorepository o lenei tiga e tuusaʻo ma vaʻaia. E sili atu le leaga, ma e lelei.

Mulimuli ane, na matou oo i le tulaga lona tolu. Fa'asa'oloto tuai. Atonu o suiga ua faia e A o le a faaleleia ai olaga o le Au A. Taua, ae le faanatinati. E mafai ona tatou faatuai? I totonu o se polyrepository, matou te tuleia lenei mea e faʻapipiʻi ai le mea taua. Ioe o lo'o matou ta'u atu lenei mea i le Team D. Tau lava o le tumau i le lomiga tuai se'ia e maua! O le mea lea e fa'atulaga ai oe e ta'alo le pala'ai. O loʻo faʻaauau pea ona galue le Team A i la latou vaega, e le amanaʻia le mea moni o le Team D o loʻo faʻaaogaina se faʻamatalaga tuai (o le faʻafitauli a le Team D, latou te valea). I le taimi nei, e le lelei le talanoa a le Team D e uiga i uiga faʻatamala a le Team A i le faʻamautuina o tulafono, pe a latou talanoa i ai. Ua mavae masina. Mulimuli ane, ua filifili le Team D e vaʻavaʻai i le avanoa o se faʻafouga, ae naʻo A e tele suiga. E tau le manatua e le Au A le taimi po'o le auala na latou talepeina ai le D. O le fa'aleleia e sili atu ona tiga ma e umi se taimi. Lea e auina atu i lalo i le faaputuga faamuamua. Seia oo i le aso ua i ai se faafitauli tau puipuiga i A e faamalosia ai i matou e fai se lala. O le 'au A e tatau ona toe fo'i i tua, su'e se mea na mautu ai D, fa'aleleia le fa'afitauli iina, ma sauni mo le tatalaina. O le filifiliga tonu lea e faia e tagata, ma e sili atu ona leaga. E foliga mai e lelei mo le Team A ma le Team D pe afai e mafai ona tatou le amanaiaina le tasi ma le isi.

I totonu o se monorepository, o le lona tolu e le o se filifiliga. Ua faamalosia oe e taulimaina le tulaga i se tasi o auala e lua. E tatau ona e va'ai i tau o le i ai o lala fa'amalolo e lua. A'oa'o e puipuia oe lava mai fa'afouga e malepe ai le fetaui i tua. Ae sili ona taua: e le mafai ona e aloese mai le faia o se talanoaga faigata.

I lo'u poto masani, a o'o ina tetele 'au, ua le toe mafai ona manatua le faiga atoa, ma o le vaega pito sili lea ona taua. E tatau ona e fa'aleleia atili le va'aia o fe'ese'esea'iga i le faiga. E tatau ona e galue malosi ina ia va'ai 'au mai a latou vaega ma va'ai i galuega a isi 'au ma tagata fa'atau.

Ioe, e mafai ona e fatuina meafaigaluega e taumafai e foia le faafitauli polyrepository. Ae o loʻu poto masani i le aʻoaʻoina o le faʻaauauina o le tuʻuina atu ma le otometi i pisinisi tetele e taʻu mai ai ia te aʻu le mea lenei: o le amio le lelei e aunoa ma le faʻaogaina o meafaigaluega faʻaopoopo o le amio lea e te faʻamoemoe e vaʻaia. Ole amio fa'aletonu ole polyrepository ole fa'aesea, o le mea atoa lena. Ole amio fa'aletonu ole monorepository ole fa'asoa fa'atasi ma le manino, o le manatu atoa lena. I tulaga uma e lua, o le a ou faia se meafaigaluega e faʻafefeteina ai pito talatala. I le avea ai ma taʻitaʻi, o le a ou filifilia se monorepository i taimi uma ona o meafaigaluega e manaʻomia e faʻamalosia ai le aganuu ou te manaʻo ai, ma o le aganuʻu e sau mai filifiliga laiti ma galuega a le 'au i aso uma.

Na'o tagata fa'aigoaina e mafai ona auai i le su'esu'ega. Saini ese j, faʻamolemole.

O ai e sili ona fiafia i ai? Tagata lagolago:

  • Monorepo

  • ele

  • Le sa'o palota / lua

33 tagata fa'aoga na palota. 13 tagata fa'aoga na le mafai.

puna: www.habr.com

Faaopoopo i ai se faamatalaga