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

አስተያየት ያክሉ