monorepositories: እባክዎ

monorepositories: እባክዎ

ለትምህርቱ ተማሪዎቜ ዹተዘጋጀውን ጜሑፍ ትርጉም "ዚዎቭኊፕስ ልምዶቜ እና መሳሪያዎቜ" በትምህርት ፕሮጀክት OTUS ውስጥ.

ሞኖሬፖን መምሚጥ አለብህ ምክንያቱም በቡድንህ ውስጥ ዚሚያስተዋውቀው ባህሪ ግልፅነት እና ዚጋራ ሃላፊነት ነው፣በተለይ ቡድኖቜ እያደጉ ሲሄዱ። ያም ሆነ ይህ በመሳሪያ ስራ ላይ መዋዕለ ንዋይ ማፍሰስ አለብዎት, ነገር ግን ነባሪ ባህሪው በትእዛዞቜዎ ውስጥ ማዚት ዚሚፈልጉት ባህሪ ኹሆነ ሁልጊዜ ዚተሻለ ነው.

ስለዚህ ጉዳይ ለምን እዚተነጋገርን ነው?

Matt Klein አንድ ጜሑፍ ጜፏል ሞኖሬፖስ፡ እባክህ አታድርግ!  (ዚአስተርጓሚ ማስታወሻ፡- ትርጉም በሀበሬ "Monorepositories: እባክዎን አያድርጉ"). ማትን ወድጄዋለሁ፣ እሱ በጣም ብልህ ነው ብዬ አስባለሁ እናም ዚእሱን አመለካኚት ማንበብ አለብህ። እሱ በመጀመሪያ ምርጫውን በትዊተር ላይ አውጥቷል፡-

monorepositories: እባክዎ

ትርጉም:
በዚህ ዚአዲስ ዓመት ቀን ፣ monorepositories ምን ያህል አስቂኝ እንደሆኑ ልኚራኚር ነው። 2019 ሳይታሰብ ተጀመሚ። በዚህ መንፈስ ዚዳሰሳ ጥናት አቀርብላቜኋለሁ። ትልልቅ አክራሪዎቹ እነማን ናቾው? ደጋፊዎቜ፡-
- ሞኖሬፖዚቶሪዎቜ
- ዝገት
- ዚተሳሳተ አስተያዚት/ሁለቱም።

ምላሌ "እኔ በጥሬው ሁለቱም ሰዎቜ ነኝ" ዹሚል ነበር። ዝገት ምን ዓይነት መድኃኒት እንደሆነ ኹመናገር ይልቅ ስለ monorepositories ለምን ዚተሳሳተ ይመስለኛል። ስለራስዎ ትንሜ። እኔ ዚሌፍ ሶፍትዌር CTO ነኝ። ወደ 100 ዹሚጠጉ መሐንዲሶቜ፣ ኹ11-12 ዓመታት አካባቢ ያለው ኮድ መሠሚት እና 4 ዋና ምርቶቜ አሉን። አንዳንድ ዹዚህ ኮድ በ polyrepository (ዚእኔ መነሻ ቊታ) ውስጥ ነው, አንዳንዶቹ በ monorepository (ዹአሁኑ ቊታዬ) ውስጥ ናቾው.

ኚመጀመሬ በፊት፡- እዚህ ዹማቀርበው እያንዳንዱ ክርክር በሁለቱም ዓይነት ማኚማቻዎቜ ላይ ተግባራዊ ይሆናል። በእኔ አስተያዚት አንድ ወይም ሌላ ዓይነት ማኚማቻ መምሚጥ ያለብዎት ምንም ቎ክኒካዊ ምክንያት ዹለም. ማንኛውንም አቀራሚብ እንዲሰራ ማድሚግ ይቜላሉ. ስለሱ ማውራት ደስ ብሎኛል, ነገር ግን አንዱ ኹሌላው ዚሚበልጥበት ሰው ሰራሜ ቎ክኒካዊ ምክንያቶቜ ፍላጎት ዹለኝም.

በማት ነጥብ ዚመጀመሪያ ክፍል እስማማለሁ፡-

ምክንያቱም በትልቅ ደሹጃ አንድ ሞኖሬፖ ፖሊሪፖዚቶሪ ዚሚፈታውን ሁሉንም ተመሳሳይ ቜግሮቜ ይፈታል ፣ ግን በተመሳሳይ ጊዜ ኮድዎን በጥብቅ እንዲያጣምሩ ያነሳሳዎታል እና ዚስሪት ቁጥጥር ስርዓትዎን መሻሻል ለመጹመር አስደናቂ ጥሚቶቜን ይፈልጋል።

monorepository ወይም polyrepository ምንም ይሁን ምን, ተመሳሳይ ቜግሮቜን መፍታት አለብዎት. ልቀቶቜን እንዎት ነው ዚሚለቁት? ለዝማኔዎቜ ዚእርስዎ አቀራሚብ ምንድነው? ወደ ኋላ ተኳሃኝነት? ዚፕሮጀክት ጥገኞቜ? ምን ዓይነት ዚሥነ ሕንፃ ቅጊቜ ተቀባይነት አላቾው? ዚእርስዎን ግንባታ እና መሠሹተ ልማት እንዎት ይሞክራሉ? ዝርዝሩ ማለቂያ ዚለውም። እና እያደጉ ሲሄዱ ሁሉንም ይፈታሉ. ነፃ አይብ ዹለም.

ዚማት ክርክር እኔ ዚማኚብራ቞ው ብዙ መሐንዲሶቜ (እና አስተዳዳሪዎቜ) ኚሚጋሩት አመለካኚት ጋር ተመሳሳይነት ያለው ይመስለኛል። ይህ በክፍለ-ነገር ላይ ኚሚሠራው መሐንዲሱ ወይም በቡድኑ ላይ ኚሚሠራው ቡድን አንጻር ነው. እንደዚህ ያሉ ነገሮቜን ትሰማለህ፡-

  • ኮድ ቀዝ አስ቞ጋሪ ነው - ይህ ሁሉ ቆሻሻ አያስፈልገኝም።
  • ይህን ሁሉ ዚማላስፈልገኝን ቆሻሻ መሞኹር ስላለብኝ ለመፈተሜ በጣም ኚባድ ነው።
  • ኹውጭ ጥገኞቜ ጋር መስራት ዹበለጠ አስ቞ጋሪ ነው.
  • ዚራሎን ዚቚርቹዋል ስሪት ቁጥጥር ስርዓቶቜ ያስፈልገኛል።

እርግጥ ነው, እነዚህ ሁሉ ነጥቊቜ ትክክለኛ ናቾው. ይህ በሁለቱም ሁኔታዎቜ ይኚሰታል - በ polyrepository ውስጥ ዚራሎ ቆሻሻ አለኝ, ለግንባታው ኚሚያስፈልገው በተጚማሪ ... ሌላ ቆሻሻ ያስፈልግ ይሆናል. ስለዚህ እኔ "ብቻ" ሙሉውን ፕሮጀክት ዚሚፈትሹ መሳሪያዎቜን እፈጥራለሁ. ወይም ዚውሞት ሞኖሬፖ ኚንዑስ ሞዱሎቜ ጋር እፈጥራለሁ። በዚህ ዙሪያ ቀኑን ሙሉ መራመድ እንቜላለን። ነገር ግን ዚማት መኚራኚሪያ ዋናውን ምክንያት ዚሳተው ይመስለኛል፣ ለሞኖሬፖ ደግፌ ትንሜ ገለበጥኩ፡-

ግንኙነትን ያነሳሳል እና ቜግሮቜን ያሳያል

ማኚማቻዎቜን ስንለያይ ዚቅንጅት እና ግልጜነት ቜግር እንፈጥራለን። ይህ ስለቡድኖቜ ኚምናስበው ጋር ዚሚስማማ ነው (በተለይም ግለሰብ አባላት ስለእነሱ እንዎት እንደሚያስቡ) እኛ ለአንድ ዹተወሰነ አካል ተጠያቂዎቜ ነን። አንጻራዊ በሆነ መልኩ እንሰራለን። ድንበሮቹ በእኔ ቡድን እና በምንሰራበት አካል(ዎቜ) ላይ ተስተካክለዋል።

አርክቮክቾር ይበልጥ ውስብስብ እዚሆነ ሲመጣ አንድ ቡድን ብቻውን ማስተዳደር አይቜልም። በጣም ጥቂት መሐንዲሶቜ ሙሉውን ስርዓት በጭንቅላታ቞ው ውስጥ ይይዛሉ. በቡድን B፣ C እና D ጥቅም ላይ ዹሚውለውን ዚተጋራ አካል A ያስተዳድራሉ እንበል። ቡድን A እያደሰ፣ ኀፒአይን እያሻሻለ እና ዚውስጥ አተገባበሩን እዚለወጠ ነው። በውጀቱም, ለውጊቹ ወደ ኋላ ዚሚጣጣሙ አይደሉም. ምን ምክር ትሰጣለህ?

  • ዚድሮው ኀፒአይ ጥቅም ላይ ዚዋለባ቞ውን ሁሉንም ቊታዎቜ ያግኙ።
  • አዲሱ ኀፒአይ መጠቀም ዚማይቻልባ቞ው ቊታዎቜ አሉ?
  • ሌሎቜ አካላት እንደማይሰበሩ ለማሚጋገጥ ማስተካኚል እና መሞኹር ይቜላሉ?
  • እነዚህ ትዕዛዞቜ ለውጊቜዎን አሁን ሊፈትኑ ይቜላሉ?

እነዚህ ጥያቄዎቜ ኚማጠራቀሚያው ዓይነት ነጻ መሆናቾውን ልብ ይበሉ። B, C እና D ቡድኖቜን ማግኘት ያስፈልግዎታል. ኚእነሱ ጋር መነጋገር, ሰዓቱን ማወቅ, ቅድሚያ ዹሚሰጧቾውን ነገሮቜ መሚዳት ያስፈልግዎታል. ቢያንስ እርስዎ እንደሚያደርጉት ተስፋ እናደርጋለን.

እንደ እውነቱ ኹሆነ ማንም ይህን ማድሚግ አይፈልግም. ዹተሹገመ ኀፒአይ ኚማስተካኚል ዹበለጠ አስደሳቜ ነው። ይህ ሁሉ ሰው እና ግራ ዚሚያጋባ ነው። በ polyrepository ውስጥ፣ ለውጊቜን ማድሚግ፣ በዚያ አካል ላይ በሚሰሩ ሰዎቜ እንዲገመገም (ምናልባትም B፣ C ወይም D ላይሆኑ ይቜላሉ) እና ይቀጥሉ። ቡድኖቜ B፣ C እና D አሁን ባለው ሥሪት ላይ ሊቆዩ ይቜላሉ። ብልህነትህን ሲገነዘቡ ያሻሜላሉ!

በአንድ ሞኖሬፖዚቶሪ ውስጥ፣ ኃላፊነት በነባሪነት ይቀዚራል። ቡድን A ክፍላቾውን ይለውጣል እና ካልተጠነቀቀ ወዲያውኑ B፣C እና D ይሰብራል።ይህ ውጀት B፣C እና D በ A በር ላይ እንዲታዩ ያደርጋል፣ ቡድን A ግንቡን ለምን እንደፈሚሰ። ይህ ኹላይ ዚእኔን ዝርዝር መዝለል እንደማይቜሉ ያስተምራል። ስለሚያደርጉት ነገር መነጋገር አለባ቞ው። B፣ C እና D መንቀሳቀስ ይቜላሉ? ቢ እና ሲ ቢቜሉስ፣ ነገር ግን D ኚአሮጌው ስልተ-ቀመር ባህሪ ዚጎንዮሜ ጉዳት ጋር በቅርብ ዹተዛመደ ቢሆንስ?

ኚዚያ ኹዚህ ሁኔታ እንዎት እንደምንወጣ መነጋገር አለብን-

  1. D መጠቀሙን ማቆም እስኪቜል ድሚስ ለብዙ ዚውስጥ ኀፒአይዎቜ ድጋፍ ኚአሮጌው ስልተ-ቀመር ተቋርጧል።
  2. ለብዙ ዚመልቀቂያ ስሪቶቜ ድጋፍ ፣ አንዱ ኚአሮጌው በይነገጜ ፣ አንዱ ኚአዲሱ ጋር።
  3. ዹA's ልቀት እስኚ B፣ C እና D ድሚስ ማዘግዚት ሁሉም በአንድ ጊዜ ሊቀበለው ይቜላል።

1፣ በርካታ ኀፒአይዎቜን መሚጥን እንበል። በዚህ አጋጣሚ ሁለት ዚኮድ ቁርጥራጮቜ አሉን. አሮጌ እና አዲስ. በአንዳንድ ሁኔታዎቜ በጣም ምቹ። ዚድሮውን ኮድ እንመልሰዋለን፣ እንደተቋሚጠ ምልክት እናደርጋለን እና እንዲወገድ ኚዲ ቡድን ጋር ቀጠሮ ይዘናል። በመሠሚቱ ለፖሊ እና ሞኖ ተመሳሳይ ነው።

ብዙ ስሪቶቜን ለመልቀቅ, ቅርንጫፍ እንፈልጋለን. አሁን ሁለት አካላት አሉን - A1 እና A2. ቡድኖቜ B እና C A2 ይጠቀማሉ እና D A1 ይጠቀማሉ። D ኹመቀጠሉ በፊት ዚደህንነት ዝማኔዎቜ እና ሌሎቜ ዚሳንካ ጥገናዎቜ ሊያስፈልጉ ስለሚቜሉ እያንዳንዱ አካል ለመልቀቅ ዝግጁ እንዲሆን እንፈልጋለን። በ polyrepository ውስጥ, ጥሩ ስሜት በሚሰማው ሚዥም ዕድሜ ባለው ቅርንጫፍ ውስጥ ይህንን መጣል እንቜላለን. በአንድ ሞኖሬፖዚቶሪ ውስጥ, ኮዱ በአዲስ ሞጁል ውስጥ እንዲፈጠር እናስገድዳለን. ቡድን D አሁንም በ"አሮጌው" አካል ላይ ለውጊቜን ማድሚግ አለበት። እዚህ ዹምንኹፍለውን ወጪ ሁሉም ሰው ማዚት ይቜላል - አሁን ሁለት እጥፍ ኮድ አለን እና በA1 እና A2 ላይ ዹሚደሹጉ ማናቾውም ዚሳንካ ጥገናዎቜ በሁለቱም ላይ መተግበር አለባ቞ው። በ polyrepository ውስጥ ቅርንጫፎቜን ዹመጠቀም አቀራሚብ, ይህ ኚቌሪ-ምርት በስተጀርባ ተደብቋል. ምንም ማባዛት ስለሌለ ዋጋው ያነሰ እንደሆነ እንቆጥራለን. እንደ ተግባራዊ ጉዳይ ፣ ዋጋው አንድ ነው-ኚመካኚላ቞ው አንዱን እስኚሚያስወግዱ ድሚስ ሁለት ተመሳሳይ ዚኮድ መሰሚቶቜን ይገነባሉ ፣ ይለቀቃሉ እና ይጠብቃሉ። ልዩነቱ በአንድ ሞኖ-ማኚማቻ ውስጥ ይህ ህመም ቀጥተኛ እና ዚሚታይ ነው. በጣም ዹኹፋ ነው, እና ጥሩ ነው.

በመጚሚሻ ወደ ሊስተኛው ነጥብ ደርሰናል። ዹመልቀቅ መዘግዚት። በ A ዹተደሹጉ ለውጊቜ ዚቡድን A ህይወትን ሊያሻሜሉ ይቜላሉ, ነገር ግን አስ቞ኳይ አይደለም. ዝም ብለን ማዘግዚት እንቜላለን? በ polyrepository ውስጥ, አርቲፊኬቱን ለመሰካት ይህንን እንገፋለን. በእርግጥ ስለዚህ ጉዳይ ኚዲ ቡድን ጋር እዚተነጋገርን ነው ። እስኪያገኙት ድሚስ በአሮጌው ስሪት ላይ ይቆዩ! ፈሪውን እንድትጫወት ያዘጋጅሃል። ቡድን D ኹጊዜ ወደ ጊዜ ያለፈበት ስሪት መጠቀሙን ቜላ በማለት በነሱ አካል ላይ መስራቱን ቀጥሏል (ይህ ዚቡድን D ቜግር ነው ፣ ሞኞቜ ናቾው)። ይህ በእንዲህ እንዳለ፣ ቡድን ዲ ስለ ቡድን A ስለ ኮድ መሚጋጋት ግድዚለሜነት አመለካኚት፣ ስለእሱ ካወሩ መጥፎ ይናገራል። ወራት አለፉ። በመጚሚሻም, ዚዲ ቡድን ዚማሻሻል እድልን ለመመልኚት ይወስናል, ነገር ግን በ A ውስጥ ያሉት ለውጊቜ ዹበለጠ እዚጚመሩ መጥተዋል. ቡድን A መቌ እና እንዎት እንደተሰበሩ ብዙም አያስታውስም። ማሻሻያው ዹበለጠ ዚሚያም ነው እና ሹጅም ጊዜ ይወስዳል። ይህም ወደ ቅድሚያ ቁልል ወደ ታቜ ተጚማሪ ይልካል. ቅርንጫፍ እንድንሠራ ዚሚያስገድደን ዚፀጥታ ጉዳይ እስካለን ቀን ድሚስ። ቡድን A በጊዜ ወደ ኋላ መመለስ፣ D ዚተሚጋጋበትን ነጥብ መፈለግ፣ ቜግሩን እዚያ ማስተካኚል እና ለመልቀቅ ዝግጁ ማድሚግ አለበት። ይህ ሰዎቜ ዚሚያደርጉት ምርጫ ነው፣ እና ኹሁሉም ዚኚፋው። እርስ በርሳቜን ቜላ እስኚምንቜል ድሚስ ይህ ለሁለቱም ቡድን A እና ቡድን D ጥሩ ይመስላል።

በ monorepository ውስጥ, ሊስተኛው በእርግጥ አማራጭ አይደለም. ሁኔታውን ኚሁለት መንገዶቜ በአንዱ መቋቋም አለብዎት. ሁለት ዚመልቀቂያ ቅርንጫፎቜ ያሉት ዹላይኛው ክፍል ማዚት ያስፈልግዎታል። ወደ ኋላ ተኳኋኝነትን ኚሚሰብሩ ዝማኔዎቜ እራስዎን መጠበቅን ይማሩ። ኹሁሉም በላይ ግን፡- አስ቞ጋሪ ንግግርን ማስወገድ አይቜሉም.

በእኔ ልምድ፣ ቡድኖቜ ትልቅ ሲሆኑ፣ አጠቃላይ ስርዓቱን በአእምሮ መያዝ አይቻልም፣ እና ይህ በጣም አስፈላጊው አካል ነው። በስርዓቱ ውስጥ አለመግባባቶቜን ታይነት ማሻሻል አለብህ። ቡድኖቜ ዓይኖቻ቞ውን ኹክፍላቾው ላይ እንዲያነሱ እና ዚሌሎቜ ቡድኖቜን እና ሞማ቟ቜን ስራ እንዲመለኚቱ በንቃት መስራት አለብዎት።

አዎ, ዹ polyrepositories ቜግርን ለመፍታት ዚሚሞክሩ መሳሪያዎቜን መፍጠር ይቜላሉ. ነገር ግን በትልልቅ ኢንተርፕራይዞቜ ውስጥ ቀጣይነት ያለው አቅርቊትን እና አውቶማቲክን ዹመማር ልምዮ ይህንን ይነግሚኛል፡- ተጚማሪ መሳሪያዎቜን ሳይጠቀሙ ነባሪው ባህሪ እርስዎ ለማዚት ዚሚጠብቁት ባህሪ ነው። ዹ polyrepository ነባሪ ባህሪ ማግለል ነው፣ ዋናው ነጥብ ነው። ዚአንድ ሞኖሬፖዚቶሪ ነባሪ ባህሪ ዚጋራ ኃላፊነት እና ግልጜነት ነው፣ ዋናው ነጥብ ነው። በሁለቱም ሁኔታዎቜ ሹል ማዕዘኖቜን ዚሚያስተካክል መሳሪያ እፈጥራለሁ. እንደ መሪ ፣ መሳሪያዎቹ ዹምፈልገውን ባህል ያጠናክራሉ ተብሎ ስለሚገመት ፣ እና ባህል ኚጥቃቅን ውሳኔዎቜ እና ኚቡድኑ ዚዕለት ተዕለት ሥራ ስለሚመጣ ሁል ጊዜ ሞኖሬፖዚቶሪ እመርጣለሁ።

በዳሰሳ ጥናቱ ውስጥ ዚተመዘገቡ ተጠቃሚዎቜ ብቻ መሳተፍ ይቜላሉ። ስግን እንእባክህን።

ትልልቅ አክራሪዎቹ እነማን ናቾው? ደጋፊዎቜ፡-

  • ሞኖሬፖዚቶሪዎቜ

  • ዝገት

  • ዚተሳሳተ አስተያዚት/ሁለቱም።

33 ተጠቃሚዎቜ ድምጜ ሰጥተዋል። 13 ተጠቃሚዎቜ ድምፀ ተአቅቩ አድርገዋል።

ምንጭ: hab.com

አስተያዚት ያክሉ