മോണോറെപോ അതോ പല റെപോ?
ഒരു റിപ്പോ എല്ലാത്തിനും വേണ്ടിയോ, അല്ലെങ്കിൽ ഓരോ സേവനത്തിനും വേണ്ടിയാണോ. വിവരസാങ്കേതികവിദ്യയും ഉടമസ്ഥാവകാശവും തമ്മിലുള്ള സത്യസന്ധമായ വിട്ടുവീഴ്ച.
ഒരു റിപ്പോ എല്ലാത്തിനും വേണ്ടിയോ, അല്ലെങ്കിൽ ഓരോ സേവനത്തിനും വേണ്ടിയാണോ. വിവരസാങ്കേതികവിദ്യയും ഉടമസ്ഥാവകാശവും തമ്മിലുള്ള സത്യസന്ധമായ വിട്ടുവീഴ്ച.

കുറച്ച് വിഷയങ്ങളാണ് എൻജിനീയർമാരുടെ ഇടയിൽ ഈ വിഷയത്തെക്കാൾ വേഗത്തിൽ വാദങ്ങൾ ആരംഭിക്കുന്നത്. ചിലര് എല്ലാം ഒരു വലിയ ശേഖരത്തില് സൂക്ഷിക്കുമെന്ന് ശപഥം ചെയ്യുന്നു. മറ്റുള്ളവർ അത് ഭ്രാന്താണെന്ന് കരുതുന്നു, ഓരോ സേവനത്തിനും ഒരു റിപ്പോസിറ്ററി വേണം. ഇരു കൂട്ടരും തങ്ങളുടെ രീതിയില് ചെയ്യുന്ന പ്രശസ്ത കമ്പനികളെ ചൂണ്ടിക്കാണിക്കുന്നു.
ഇതാ ഞാൻ ഇതിനെ കുറിച്ച് ചിന്തിക്കുന്നത് ഒരു DevOps വീക്ഷണകോണിൽ നിന്ന്: ഇത് പൈപ്പ്ലൈനുകൾ, ഉടമസ്ഥാവകാശം, ദൈനംദിന ജോലി എന്നിവയ്ക്ക് എന്താണ് അർത്ഥമാക്കുന്നത്.
മോണോറെപ്പോ: പല സേവനങ്ങൾക്കും ലൈബ്രറികൾക്കുമുള്ള എല്ലാ കോഡുകളും (അല്ലെങ്കിൽ മിക്കതും) ഒരു റിപ്പോസിറ്ററിയിൽ താമസിക്കുന്നു.
പോളിറെപ്പോ: ഓരോ സേവനത്തിനും ലൈബ്രറിയ്ക്കും സ്വന്തമായി ഒരു റിപ്പോസിറ്ററി ഉണ്ട്.
ഒരു മധ്യസ്ഥസ്ഥത കൂടിയുണ്ട്. ഓരോ ടീമിനും ഓരോ ഉൽപ്പന്ന മേഖലയ്ക്കും ഒരു റിപ്പോസിറ്ററി. പല കമ്പനികളും അവിടെ അവസാനിക്കുന്നു, അവർ അതിനെ വിളിക്കാതിരുന്നാലും.
ഇവിടെയാണ് തീരുമാനം ഏറ്റവും വേദനിപ്പിക്കുകയോ സഹായിക്കുകയോ ചെയ്യുന്നത്.
ഒരു പോളിറെപ്പോ ലോകത്ത്ആദ്യം, സിഐ വളരെ ലളിതമാണ്. ഓരോ റിപ്പോസിറ്ററിനും അതിന്റേതായ പൈപ്പ്ലൈൻ ഉണ്ട്, അത് ആ സേവനം മാത്രം നിർമ്മിക്കുന്നു, അത് വേഗത്തിലാണ്. വേദന പിന്നീട് വരുന്നുഃ പങ്കിട്ട ലൈബ്രറികൾ ഓരോ ഉപഭോക്താവിനും റിലീസ് ചെയ്യുകയും പതിപ്പുകൾ പരിഷ്കരിക്കുകയും അപ്ഡേറ്റ് ചെയ്യുകയും വേണം. മൂന്ന് സേവനങ്ങളെ ബാധിക്കുന്ന ഒരു മാറ്റം മൂന്ന് പിൻവലിക്കൽ അഭ്യർത്ഥനകൾ, മൂന്ന് അവലോകനങ്ങൾ, മൂന്ന് പൈപ്പ്ലൈനുകൾ എന്നിവയാണെന്നാണ് അർത്ഥമാക്കുന്നത്, കൈകൊണ്ട് ഏകോപിപ്പിച്ചിരിക്കുന്നത്.
ഒരു മോണോറെപ്പോയില്, ഒരു ക്രോസ്-സെക്ടറിംഗ് മാറ്റം ഒരു പിൻ അഭ്യർത്ഥനയാണ്. ഒരു പങ്കിട്ട ലൈബ്രറി പുനർനിർമിക്കുകയും അതിന്റെ എല്ലാ ഉപയോക്താക്കളെയും അപ്ഡേറ്റ് ചെയ്യുകയും ചെയ്യുന്നത് ആറ്റോമിക് ആയി സംഭവിക്കുന്നു. പക്ഷെ നിഷ്കളങ്കരായ ഐ. ഐ. കള് വളരെ വേഗത കുറഞ്ഞവരായിത്തീരുന്നു. ഓരോ കമൈറ്റും എല്ലാം ബിൽഡ് ചെയ്ത് ടെസ്റ്റ് ചെയ്താൽ, റിപ്പോ വളരുന്നതനുസരിച്ച് പൈപ്പ്ലൈനുകൾക്ക് ഒരു നിത്യതയേ എടുക്കൂ.
മോണോറെപ്പോ ഐ. സി. യുടെ പരിഹാരം ബാധിതരായ കെട്ടിടങ്ങള്: മാറ്റം യഥാർഥത്തിൽ ബാധിക്കുന്ന പദ്ധതികളെ കണ്ടെത്തുക, അവ മാത്രം നിർമ്മിക്കുകയും പരീക്ഷിക്കുകയും ചെയ്യുക. അതിന് ആശ്രിതത്വ ഗ്രാഫ് മനസിലാക്കുന്ന ഒരു ഉപകരണം വേണം.
സ്മാർട്ട് ബിൽഡ് ടൂളിങ് ഇല്ലാത്ത ഒരു മോണോറെപ്പോ വളരെ വലിയ പോളൈറെപ്പോ ആണ്, പതുക്കെയുള്ള പൈപ്പ്ലൈനുകളുള്ളത്.
പോളിറെപോസ് ഉടമസ്ഥാവകാശം വ്യക്തമാക്കുക. ഈ ശേഖരം ആ ടീമിന് റെതാണ്. അനുമതികൾ ലളിതമാണ്. പക്ഷെ ആശ്രിതത്വ പതിപ്പുകൾ മാറുന്നു: ഒരു സേവനം പങ്കിട്ട ലൈബ്രറിയുടെ പതിപ്പ് 1 ലാണ്, മറ്റൊന്ന് പതിപ്പ് 4 ലാണ്, ആരും അപ്ഗ്രേഡ് ചെയ്യാൻ ആഗ്രഹിക്കുന്നില്ല.
മോണോറെപ്പോസ് എല്ലാവരെയും ആന്തരിക കോഡിന്റെ ഏറ്റവും പുതിയ പതിപ്പിൽ തന്നെ തുടരാൻ പ്രോത്സാഹിപ്പിക്കുക, കാരണം ഒരു പതിപ്പ് മാത്രമേയുള്ളൂ. ഉടമസ്ഥാവകാശം വ്യക്തമാക്കണം, സാധാരണയായി ഒരു CODEOWNERS ഫയൽ മാപ്പുകൾ ഫോൾഡറുകളിലേക്ക് മാപ്പ് ചെയ്യുന്നു, അങ്ങനെ ശരിയായ ആളുകൾ ശരിയായ മാറ്റങ്ങൾ അവലോകനം ചെയ്യുന്നു.
ഗ്രാഫ് മനസിലാക്കുന്നതും ഫലങ്ങൾ കാഷെ ചെയ്യുന്നതുമായ ഒരു ബിൽഡ് ടൂൾ നിങ്ങൾക്ക് വേണം:
വിദൂര കാഷെ യഥാർത്ഥ വേഗതയേറിയതാണു്. ഒരേ കോഡ് മറ്റൊരാളുടെ പൈപ്പ്ലൈനില് നിർമ്മിക്കുകയും പരീക്ഷിക്കുകയും ചെയ്തിട്ടുണ്ടെങ്കില്, വീണ്ടും ചെയ്യുന്നതിനു പകരം ഫലത്തെ വീണ്ടും ഉപയോഗിക്കുക.
ഇരു ദിശകളിലുമുള്ള കുടിയേറ്റം നടക്കുന്നു.
പോളിറെപ്പോ മോണോറെപ്പോ: റിപ്പോസിറ്ററികളെ സബ്ഫോൾഡറുകളായി ലയിപ്പിച്ചുകൊണ്ട് ചരിത്രം സംരക്ഷിക്കാം. ബുദ്ധിമുട്ടുള്ള ഭാഗം ഗിറ്റല്ല, പങ്കിട്ട ഉപകരണങ്ങൾ, ബിൽഡ് സജ്ജീകരണം, ഐ. ഐ എന്നിവയെക്കുറിച്ച് യോജിപ്പാണ്.
മോണോറെപ്പോ പോളിറെപ്പോ: ഉപകരണങ്ങൾ പോലുള്ളവ git filter-repo ചരിത്രവുമായി ഒരു ഫോൾഡറിനെ സ്വന്തം റിപ്പോസിറ്ററിയിൽ വിഭജിക്കാം. ഏറ്റവും ബുദ്ധിമുട്ടുള്ള കാര്യം പെട്ടെന്ന് വേരിയന്റ് ചെയ്യേണ്ട പങ്കിട്ട കോഡ് അഴിച്ചുമാറ്റുകയാണ്.
ഏത് ദിശയിലായാലും, ക്രമേണ, ഒരു സേനയോ ടീമോ ആയി മാറുക.
എന്റെ ഏകദേശ ഗൈഡ്:
സത്യസന്ധമായി പറഞ്ഞാൽ, ഈ ഘടന അത്ര പ്രധാനമല്ല അതിനെ ചുറ്റിപ്പറ്റിയുള്ള അച്ചടക്കം പോലെ: വ്യക്തമായ ഉടമസ്ഥാവകാശം, വേഗത്തിലുള്ള പൈപ്പ്ലൈനുകൾ, പങ്കിട്ട കോഡ് അപ്ഡേറ്റ് ചെയ്യുന്നതിനുള്ള വിശ്വസനീയമായ മാർഗ്ഗം.
എന്റെ അഭിപ്രായം: നിങ്ങളുടെ ഏറ്റവും സാധാരണമായ മാറ്റം എളുപ്പമാക്കുന്ന ലേഔട്ട് തിരഞ്ഞെടുക്കുക. പിന്നെ ഉപകരണങ്ങളില് നിക്ഷേപിക്കുക. അങ്ങനെ സാധാരണക്കാര് ഉപദ്രവിക്കില്ല.
ഡെസ്ലി