Architecture Decision Record

Active theme: Light

← முடிவு பதிவு எடுத்துக்காட்டுகள்

Monorepo அல்லது multirepo

உள்ளடக்கம்:

சுருக்கம்

சிக்கல்

எங்கள் திட்டம் மூன்று முக்கிய வகை மென்பொருட்களை உருவாக்குவதை உள்ளடக்கியது:

  • முன்-முனை GUI கள்
  • இடைநிலைச் சேவைகள்
  • பின்-முனை சேவையகங்கள்

நாங்கள் உருவாக்கும்போது, எங்கள் மூலக் குறியீட்டு மேலாண்மை (SCM) பதிப்புக் கட்டுப்பாட்டு அமைப்பு (VCS) git.

எங்கள் குறியீட்டை ஒழுங்கமைக்க git ஐ எவ்வாறு பயன்படுத்துவது என்பதை நாங்கள் தேர்ந்தெடுக்க வேண்டும்.

உயர்நிலைத் தேர்வு "monorepo" அல்லது "polyrepo" அல்லது "கலப்பு" ஆக ஒழுங்கமைப்பது:

  • Monorepo என்பது அனைத்துப் பகுதிகளையும் ஒரு பெரிய repo வில் வைப்பது
  • Polyrepo என்பது ஒவ்வொரு பகுதியையும் அதன் சொந்த repo வில் வைப்பது
  • கலப்பு என்பது monorepo மற்றும் polyrepo வின் சில கலவை

மேலும் அறிய https://github.com/joelparkerhenderson/monorepo-vs-polyrepo ஐப் பார்க்கவும்

முடிவு

ஒரு நிறுவனம்/குழு/திட்டம் ஒப்பீட்டளவில் சிறியதாகவும், நிலைத்தன்மையைத் தக்கவைப்பதை விட விரைவான மீள்செயல் அதிக முன்னுரிமை உடையதாகவும் இருக்கும்போது Monorepo.

ஒரு நிறுவனம்/குழு/திட்டம் ஒப்பீட்டளவில் பெரியதாகவும், விரைவான மீள்செயலை விட நிலைத்தன்மையைத் தக்கவைப்பது அதிக முன்னுரிமை உடையதாகவும் இருக்கும்போது Polyrepo.

நிலை

முடிவு செய்யப்பட்டது. monorepo க்கள் மற்றும்/அல்லது polyrepo க்களை நிர்வகிப்பதற்கான புதிய கருவிகள் கிடைக்கும்போது/கிடைத்தால் மீண்டும் பார்வையிடத் திறந்துள்ளோம்.

விவரங்கள்

அனுமானங்கள்

நாங்கள் உருவாக்கும் அனைத்துக் குறியீடும் ஒரு நிறுவனத்தின் சலுகைகளுக்கானது, பொது மக்களுக்கானது அல்ல. அதாவது Broker-Dealer பொது மக்கள் தன்னார்வ உருவாக்குநர்கள் போன்ற எதையும் கொண்டிருக்க நோக்கம் கொள்ளவில்லை.

கட்டுப்பாடுகள்

கட்டுப்பாடுகள் https://github.com/joelparkerhenderson/monorepo-vs-polyrepo இல் நன்கு ஆவணப்படுத்தப்பட்டுள்ளன

நிலைப்பாடுகள்

Google, Facebook போன்றவற்றின் பாணியிலான monorepo க்களைப் பரிசீலித்தோம். monorepo அளவிடுதல் சிக்கல்கள் எதுவும் வெகு தொலைவில் எதிர்காலத்தில் உள்ளன, அவை தேவைப்படும் நேரத்தில் Google மற்றும் Facebook போன்ற அதே நடைமுறைகளை எங்களால் பயன்படுத்த முடியும் என்று நினைக்கிறோம்.

Google Android, Facebook React போன்ற வழக்கமான Git திறந்த மூலத் திட்டங்களின் பாணியிலான polyrepo க்களைப் பரிசீலித்தோம். பொது மக்கள் பங்கேற்புக்கும் (எ.கா. உலகில் எவரும் குறியீட்டில் பணியாற்றலாம்) தனிப்பட்ட கிடைப்புக்கும் (எ.கா. திட்டம் வேறு எந்தப் பகுதிகளும் இன்றித் தனியாகப் பயன்படுத்தப்படுகிறது) இவையே சிறந்த தேர்வு என்று நினைக்கிறோம்.

வாதம்

ஒரு நிறுவனம்/குழு/திட்டம் ஒப்பீட்டளவில் சிறியதாக இருக்கும்போது, நாங்கள் monorepo வைத் தேர்ந்தெடுக்கிறோம், ஏனெனில் நிலைத்தன்மையைத் தக்கவைப்பதை விட விரைவான மீள்செயல் குறிப்பிடத்தக்க அளவு அதிக முன்னுரிமை

ஒரு நிறுவனம்/குழு/திட்டம் ஒப்பீட்டளவில் பெரியதாக இருக்கும்போது, நாங்கள் polyrepo வைத் தேர்ந்தெடுக்கிறோம், ஏனெனில் விரைவான மீள்செயலை விட நிலைத்தன்மையைத் தக்கவைப்பது குறிப்பிடத்தக்க அளவு அதிக முன்னுரிமை.

தாக்கங்கள்

CI+CD க்கு ஏற்கனவே ஒரு பைப்லைன் இருந்தால், ஒரு repo வுக்குள் பல திட்டங்களைச் சோதிக்க அதை நாங்கள் சரிசெய்ய வேண்டியிருக்கலாம்.

monorepo வுக்கான முழு உருவாக்கத்துக்கு CI+CD அதிக நேரம் எடுக்கலாம், ஏனெனில் CI+CD monorepo வில் உள்ள அனைத்துத் திட்டங்களையும் உருவாக்கலாம்.

ஒரு நிறுவனம்/குழு/திட்டம் வளர்ந்தால், monorepo அளவிடுதல் சிக்கல்களைக் கொண்டிருக்கும்.

monorepo அளவிடுதல் சிக்கல்கள் polyrepo வுக்கு மாறுவதை அதிகமாக மதிப்புள்ளதாக்கலாம்.

monorepo விலிருந்து polyrepo வுக்கு மாறுவது குறிப்பிடத்தக்க devops பணி, அது திட்டமிடப்பட்டு, நிர்வகிக்கப்பட்டு, நிரலாக்கப்பட வேண்டும்.

தொடர்புடையவை

தொடர்புடைய முடிவுகள்

monorepo க்களை (எ.கா. Google Bazel) மற்றும் polyrepo க்களை (எ.கா. Lyft Refactorator) நிர்வகிப்பதற்கான தொடர்புடைய கருவிகளுக்கான முடிவுகளை உருவாக்குவோம்.

தொடர்புடைய தேவைகள்

CI+CD பைப்லைனை git உடன் நன்றாக வேலை செய்யும்படி உருவாக்க வேண்டும்.

தொடர்புடைய படைப்புகள்

repo ஒழுங்கமைப்பு வழங்கல், உள்ளமைவு மேலாண்மை, சோதனை, அது போன்ற devops பகுதிகளுக்கான தொடர்புடைய படைப்புகளைக் கொண்டிருக்கும் என எதிர்பார்க்கிறோம்.

தொடர்புடைய கொள்கைகள்

எளிதில் மாற்றியமைக்கக்கூடியது. monorepo நடைமுறையில் வேலை செய்யவில்லை என்றால், அல்லது தலைமை விரும்பவில்லை என்றால், polyrepo வுக்கு மாறுவது எளிது.

வாடிக்கையாளர் மீது ஈடுபாடு. திட்டத்தை வாடிக்கையாளர்கள் கைகளில் சேர்ப்பதை நாங்கள் மதிக்கிறோம், monorepo எங்களை polyrepo வை விட வேகமாக அங்கு கொண்டு சேர்க்கும், மேலும் வேகமாக மீள்செயல் செய்யவும் உதவும் என்று நம்புகிறோம்.

பெரிதாகச் சிந்தியுங்கள். Google மற்றும் Facebook polyrepo க்களை விட monorepo க்களுக்கு மிகவும் வலுவான ஆதரவாளர்கள், ஏனெனில் அனைத்து மைய சலுகைகளையும் இணைந்து உருவாக்கவும்/சோதிக்கவும்/வரிசைப்படுத்தவும் முடியும்.

குறிப்புகள்

எந்தக் குறிப்புகளையும் இங்கே சேர்க்கவும்.