Monorepositories: biko, ga-

Monorepositories: biko, ga-

Ntụgharị asụsụ nke akụkọ a kwadebere maka ụmụ akwụkwọ nkuzi "omume na ngwaọrụ DevOps" na OTUS agụmakwụkwọ oru ngo.

Ị ga-ahọrọ monorepository n'ihi na omume ọ na-akwalite n'ime otu gị bụ nghọta na oke ọrụ, karịsịa ka otu na-eto eto. Kedu ụzọ ọ bụla, ị ga-etinye ego na ngwá ọrụ, mana ọ ka mma mgbe niile ma ọ bụrụ na omume ndabara bụ omume ịchọrọ na iwu gị.

Gịnị mere anyị ji ekwu banyere nke a?

Matt Klein dee akụkọ "Monorepos: Biko emela!"  ( ndetu onye ntụgharị: ntụgharị na Habré "Monorepositories: biko emela"). Matt na-amasị m, echere m na ọ mara ihe nke ukwuu na ị kwesịrị ịgụ echiche ya. Na mbụ o tinyere ntuli aka ahụ na Twitter:

Monorepositories: biko, ga-

Translation:
Nke a New Year's Day, M na-aga na-arụ ụka banyere otú mkparị monorepositories bụ. 2019 malitere nwayọ. N'ime mmụọ nke a, a na m enye gị nyocha. Ole ndị bụ nnukwu ndị na-anụ ọkụ n'obi? Ndị nkwado:
- Monorepo
- nchara na-
- Ntuli aka ezighi ezi/ha abụọ

Nzaghachi m bụ, "Abụ m mmadụ abụọ ahụ n'ezie." Kama ikwu banyere otú Rust si bụrụ ọgwụ, ka anyị lee ihe mere m ji chee na ọ na-ezighị ezi banyere monorepositories. Obere banyere onwe gị. Abụ m CTO nke Chef Software. Anyị nwere ihe dị ka ndị injinia 100, ntọala koodu na-alaghachi azụ banyere afọ 11-12, yana ngwaahịa isi anọ. Ụfọdụ n'ime koodu a dị na polyrepository (ọnọdụ mmalite m), ụfọdụ nọ na monorepository (ọnọdụ m ugbu a).

Tupu m amalite: arụmụka ọ bụla m na-eme ebe a ga-emetụta ụdị nchekwa abụọ ahụ. N'uche nke m, ọ nweghị ihe kpatara ị ga-eji họrọ otu ụdị ebe nchekwa karịa nke ọzọ. Ị nwere ike ime ka usoro ọ bụla rụọ ọrụ. Obi dị m ụtọ ikwu banyere ya, mana enweghị m mmasị na teknụzụ artificial mere otu onye ji dị elu karịa onye ọzọ.

Ekwenyere m na akụkụ mbụ nke isi ihe Matt:

N'ihi na n'ọtụtụ, monorepository ga-edozi otu nsogbu niile nke polyrepository na-edozi, mana n'otu oge ahụ na-amanye gị ka ị jikọta koodu gị nke ọma ma na-achọ mgbalị dị egwu iji bulie scalability nke usoro njikwa ụdị gị.

Ị ga-edozi otu nsogbu ahụ n'agbanyeghị ma ị na-ahọrọ monorepository ma ọ bụ polyrepository. Kedu otu esi ewepụta mwepụta? Kedu ụzọ gị si emelite? ndakọrịta azụ? Ndabere na ọrụ gafere? Kedu ụdị ụkpụrụ ụlọ na-anabata? Kedu otu ị ga-esi jikwaa ihe nrụpụta gị na nwalee akụrụngwa gị? Ndepụta ahụ enweghị njedebe. Ị ga-edozi ha niile ka ị na-etolite. Enweghị cheese n'efu.

Echere m na arụmụka Matt yiri echiche nke ọtụtụ ndị injinia (na ndị njikwa) na-asọpụrụ m. Nke a na-eme site n'echiche nke injinia na-arụ ọrụ na akụrụngwa ma ọ bụ otu na-arụ ọrụ na mpaghara ahụ. Ị na-anụ ihe dịka:

  • The codebase bụ nnukwu - Achọghị m ihe a niile junk.
  • O siri ike nwalee n'ihi na m ga-anwale ihe niile a junk na m na-adịghị mkpa.
  • Ọ na-esiri ike ịrụ ọrụ na ịdabere na mpụga.
  • Achọrọ m sistemụ njikwa ụdị nke m.

N'ezie, isi ihe ndị a niile ziri ezi. Nke a na-eme n'ọnọdụ abụọ ahụ - na polyrepository enwere m ihe mkpofu nke m, na mgbakwunye na nke a chọrọ maka ihe owuwu ahụ ... M nwekwara ike ịchọ ihe ndị ọzọ. Ya mere, m "naanị" mepụta ngwaọrụ na-elele ọrụ ahụ dum. Ma ọ bụ m mepụta monorepository adịgboroja nwere submodules. Anyị nwere ike ịgagharị na nke a ụbọchị niile. Mana echere m na arụmụka Matt tụfuru isi ihe kpatara ya, nke m tụgharịrị nke ukwuu maka nkwado nke monorepository:

Ọ na-akpalite nkwurịta okwu ma na-egosi nsogbu

Mgbe anyị kewapụrụ ebe nchekwa, anyị na-emepụta nsogbu nke nhazi na nghọta. Nke a dabara n'ụzọ anyị si eche maka otu (karịsịa otu ndị otu n'otu n'otu si eche banyere ha): anyị na-ahụ maka akụkụ ụfọdụ. Anyị na-arụ ọrụ dị iche iche. Edobere oke na otu m yana akụrụngwa (s) anyị na-arụ ọrụ.

Ka ihe owuwu ụlọ na-adịwanye mgbagwoju anya, otu otu enweghịzi ike ijikwa ya naanị ya. Ndị injinia ole na ole nwere sistemụ niile n'isi ha. Ka anyị kwuo na ị na-ejikwa akụrụngwa A na-ekekọrịta nke otu B, C na D na-eji. N'ihi ya, mgbanwe ndị ahụ adabaghị azụ. Kedu ndụmọdụ ị nwere?

  • Chọta ebe niile ejiri API ochie.
  • Enwere ebe enweghị ike iji API ọhụrụ ahụ?
  • Ị nwere ike idozi ma nwalee ihe ndị ọzọ iji jide n'aka na ha adịghị agbaji?
  • Ndị otu a nwere ike ịnwale mgbanwe gị ugbu a?

Biko mara na ajụjụ ndị a anọghị n'ụdị ebe nchekwa. Ị ga-achọ ndị otu B, C na D. Ị ga-achọ ka gị na ha kparịta ụka, chọpụta oge, ghọta ihe ha na-ebute ụzọ. Opekempe, anyị nwere olileanya na ị ga-eme ya.

Ọ dịghị onye chọrọ n'ezie ime nke a. Nke a bụ ihe na-atọ ụtọ karịa naanị idozi API jọgburu onwe ya. Ọ bụ mmadụ na ọgbaghara. Na polyrepository, ị nwere ike ịme mgbanwe naanị, nye ya ndị na-arụ ọrụ na akụrụngwa ahụ (ma eleghị anya ọ bụghị B, C ma ọ bụ D) maka nyocha, wee gaa n'ihu. Otu B, C na D nwere ike ịnọnyere ụdị ha ugbu a ugbu a. A ga-eme ka ha dị ọhụrụ mgbe ha ghọtara amamihe gị!

Na monorepository, a na-atụgharị ọrụ site na ndabara. Otu A na-agbanwe akụrụngwa ha na, ma ọ bụrụ na akpacharaghị anya, ozugbo agbajie B, C na D. Nke a na-eduga na B, C na D n'ọnụ ụzọ A, na-eche ihe kpatara Team A ji mebie mgbakọ ahụ. Nke a na-akụzi A na ha enweghị ike ịwụpụ ndepụta m n'elu. Ha aghaghị ikwu ihe ha ga-eme. B, C na D nwere ike ịkwaga? Kedu ihe ma ọ bụrụ na B na C nwere ike, mana D nwere njikọ chiri anya na mmetụta nke omume algọridim ochie?

Mgbe ahụ, anyị ga-ekwu maka otu anyị ga-esi pụọ n'ọnọdụ a:

  1. Nkwado maka ọtụtụ API dị n'ime, ma ga-akara algọridim ochie ka ọ kwụsịrị ruo mgbe D nwere ike ịkwụsị iji ya.
  2. Nkwado maka ọtụtụ ụdị ntọhapụ, nke nwere interface ochie, nke nwere nke ọhụrụ.
  3. Kwụsị oge ntọhapụ nke mgbanwe A ruo mgbe B, C na D nwere ike nabata ya n'otu oge.

Ka anyị kwuo na anyị ahọpụtala 1, ọtụtụ API. N'okwu a, anyị nwere koodu abụọ. Ochie na nke ọhụrụ. Dị nnọọ adaba n'ọnọdụ ụfọdụ. Anyị na-elele koodu ochie ahụ azụ, kaa ya ka ọ kwụsịrị, wee kwenye na nhazi oge mwepụ n'etiti ndị otu D. N'ụzọ bụ isi maka ebe nchekwa poly na mono.

Iji hapụ ọtụtụ ụdị, anyị chọrọ alaka. Ugbu a, anyị nwere ihe abụọ - A1 na A2. Otu B na C na-eji A2 na D na-eji A1. Anyị chọrọ akụrụngwa ọ bụla ka ọ dịrị njikere maka ntọhapụ n'ihi na enwere ike ịchọ mmelite nchekwa yana ndozi ahụhụ ndị ọzọ tupu D enwee ike ịga n'ihu. Na polyrepository, anyị nwere ike zoo nke a na alaka ogologo ndụ nke na-enwe mmetụta dị mma. Na monorepository, anyị na-amanye koodu ka emee na modul ọhụrụ. Otu D ka ga-eme mgbanwe na mpaghara "ochie". Onye ọ bụla nwere ike ịhụ ọnụ ahịa anyị na-akwụ ebe a - anyị nwere koodu okpukpu abụọ ugbu a, na mmezi ahụhụ ọ bụla metụtara A1 na A2 ga-emetụta ha abụọ. Site na usoro alaka na polyrepository, nke a na-ezo n'azụ cherry-pick. Anyị na-ewere na ọnụ ahịa ahụ dị ntakịrị n'ihi na ọ dịghị mbịgharị. Site n'echiche bara uru, ọnụ ahịa ya bụ otu: ị ga-ewu, hapụ ma dokwaa koodu abụọ yiri ya ruo mgbe ị nwere ike ihichapụ otu n'ime ha. Ihe dị iche bụ na na monorepository mgbu a bụ kpọmkwem na anya. Nke a kadị njọ, nke ahụ dịkwa mma.

N'ikpeazụ, anyị ruru n'ókè nke atọ. Hapụ igbu oge. O kwere omume na mgbanwe ndị A mere ga-eme ka ndụ Team A. dị mkpa, ma ọ bụghị ngwa ngwa. Anyị nwere ike igbu oge? Na polyrepository, anyị na-akwali nke a iji tụnye arịa ahụ. N'ezie anyị na-agwa nke a na Team D. Dị nnọọ nọrọ na ochie version ruo mgbe ị ga-enweta! Nke a na-enye gị ohere igwu egwu. Otu A na-aga n'ihu na-arụ ọrụ na akụrụngwa ha, na-eleghara eziokwu ahụ anya na Team D na-eji nsụgharị na-arịwanye elu (nke ahụ bụ nsogbu Team D, ha bụ ndị nzuzu). Ka ọ dị ugbu a, Team D na-ekwu okwu na-adịghị mma gbasara àgwà enweghị uche nke Team A maka nkwụsi ike koodu, ma ọ bụrụ na ha na-ekwu maka ya ma ọlị. Ọnwa ole na ole gafere. N'ikpeazụ, Team D kpebiri ileba anya na enwere ike imelite, mana A nwere naanị mgbanwe ndị ọzọ. Otu A na-echetakarị mgbe ma ọ bụ otú ha si mebie D. Nkwalite ahụ na-egbu mgbu ma ọ ga-ewe ogologo oge. Nke na-ebuga ya n'ihu n'ihu nchịkọta mkpa. Ruo ụbọchị anyị nwere okwu nchekwa na A nke na-amanye anyị ịme alaka. Otu A ga-alaghachi azụ n'oge, chọta ebe mgbe D kwụsiri ike, dozie nsogbu ahụ ebe ahụ ma mee ka ọ dị njikere maka ntọhapụ. Nke a bụ nhọrọ nke ndị mmadụ na-eme, ọ bụkwa ya kacha njọ. Ọ dị ka ọ dị mma maka Team A na Team D ma ọ bụrụhaala na anyị nwere ike ileghara ibe anyị anya.

Na monorepository, nke atọ abụghị n'ezie nhọrọ. A na-amanye gị ime ihe banyere ọnọdụ ahụ n'otu ụzọ abụọ. Ịkwesịrị ịhụ ụgwọ ọrụ nke inwe alaka abụọ ntọhapụ. Mụta ichebe onwe gị pụọ na mmelite na-emebi ndakọrịta azụ. Mana nke kachasị mkpa: ị gaghị ezere inwe mkparịta ụka siri ike.

Na ahụmahụ m, mgbe otu na-ebuwanye ibu, ọ gaghị ekwe omume iburu usoro ahụ dum n'uche, nke ahụ bụkwa akụkụ kachasị mkpa. Ị ga-emeziwanye ọhụhụ nke esemokwu na sistemụ. Ị ga-arụsi ọrụ ike iji mee ka ndị otu na-elepụ anya na akụrụngwa ha wee lelee ọrụ nke otu ndị ọzọ na ndị na-azụ ahịa.

Ee, ị nwere ike ịmepụta ngwaọrụ ndị na-agbalị idozi nsogbu polyrepository. Mana ahụmịhe m na-akụzi nnyefe na-aga n'ihu na akpaaka na nnukwu ụlọ ọrụ na-agwa m nke a: omume ndabara na-enweghị iji ngwaọrụ ndị ọzọ bụ omume ị tụrụ anya ịhụ. Omume ndabara nke polyrepository bụ iche, nke ahụ bụ isi ihe niile. Omume ndabara nke monorepository bụ òkè ọrụ na nghọta, nke ahụ bụ isi ihe niile. N'okwu abụọ ahụ, m ga-emepụta ngwá ọrụ nke ga-eme ka akụkụ ahụ dị nro dị nro. Dịka onye ndu, a ga m ahọrọ monorepository oge ọ bụla n'ihi na akụrụngwa kwesịrị ịkwalite ọdịbendị m chọrọ, omenala na-esite na obere mkpebi na ọrụ otu ụbọchị.

Naanị ndị ọrụ edebanyere aha nwere ike isonye na nyocha a. banye, Biko.

Ole ndị bụ nnukwu ndị na-anụ ọkụ n'obi? Ndị nkwado:

  • Monorepo

  • nchara na-

  • Ntuli aka ezighi ezi/ha abụọ

Ndị ọrụ 33 họpụtara. Ndị ọrụ 13 anabataghị.

isi: www.habr.com

Tinye a comment