Architecture Decision Record

Active theme: Light

← నిర్ణయ రికార్డు ఉదాహరణలు

మోనోరెపో వర్సెస్ మల్టీరెపో

విషయసూచిక:

సారాంశం

సమస్య

మా ప్రాజెక్ట్లో మూడు ప్రధాన వర్గాల సాఫ్ట్వేర్ అభివృద్ధి ఉంటుంది:

  • ఫ్రంట్-ఎండ్ GUIలు
  • మిడిల్వేర్ సేవలు
  • బ్యాక్-ఎండ్ సర్వర్లు

మేము అభివృద్ధి చేసేటప్పుడు, మా సోర్స్ కోడ్ నిర్వహణ (SCM) వెర్షన్ నియంత్రణ వ్యవస్థ (VCS) git.

మా కోడ్ను నిర్వహించడానికి gitను ఎలా వాడాలో మనం ఎంచుకోవాలి.

అగ్రస్థాయి ఎంపిక "మోనోరెపో" లేదా "పాలీరెపో" లేదా "హైబ్రిడ్"గా నిర్వహించడం:

  • మోనోరెపో అంటే అన్ని భాగాలను ఒక పెద్ద రెపోలో ఉంచడం
  • పాలీరెపో అంటే ప్రతి భాగాన్ని దాని స్వంత రెపోలో ఉంచడం
  • హైబ్రిడ్ అంటే మోనోరెపో, పాలీరెపోల ఏదో ఒక మిశ్రమం

మరిన్ని వివరాలకు దయచేసి https://github.com/joelparkerhenderson/monorepo-vs-polyrepo చూడండి

నిర్ణయం

సంస్థ/బృందం/ప్రాజెక్ట్ సాపేక్షంగా చిన్నదిగా ఉండి, స్థిరత్వాన్ని కొనసాగించడం కంటే వేగవంతమైన పునరావృతానికి ఎక్కువ ప్రాధాన్యత ఉన్నప్పుడు మోనోరెపో.

సంస్థ/బృందం/ప్రాజెక్ట్ సాపేక్షంగా పెద్దదిగా ఉండి, వేగవంతమైన పునరావృతం కంటే స్థిరత్వాన్ని కొనసాగించడానికి ఎక్కువ ప్రాధాన్యత ఉన్నప్పుడు పాలీరెపో.

స్థితి

నిర్ణయించబడింది. మోనోరెపోలు మరియు/లేదా పాలీరెపోలను నిర్వహించడానికి కొత్త సాధనాలు అందుబాటులోకి వస్తే/వచ్చినప్పుడు పునఃపరిశీలనకు సిద్ధంగా ఉన్నాం.

వివరాలు

ఊహలు

మేము అభివృద్ధి చేస్తున్న కోడ్ అంతా ఒక సంస్థ ఆఫర్ల కోసం, సాధారణ ప్రజల కోసం కాదు. అంటే బ్రోకర్-డీలర్కు సాధారణ ప్రజా స్వచ్ఛంద డెవలపర్ల వంటిది ఏదీ ఉండాలనే లక్ష్యం లేదు.

పరిమితులు

పరిమితులు https://github.com/joelparkerhenderson/monorepo-vs-polyrepo వద్ద చక్కగా డాక్యుమెంట్ చేయబడ్డాయి

వైఖరులు

మేము Google, Facebook మొదలైన వాటి శైలిలో మోనోరెపోలను పరిగణించాం. ఏ మోనోరెపో విస్తరణ సమస్యలైనా చాలా దూర భవిష్యత్తులో ఉన్నాయని, అవి మాకు అవసరమయ్యే సమయానికి Google, Facebook ఆచరణలనే మేము ఉపయోగించుకోగలమని మేము భావిస్తున్నాం.

మేము Google Android, Facebook React మొదలైన సాధారణ Git ఓపెన్ సోర్స్ ప్రాజెక్టుల శైలిలో పాలీరెపోలను పరిగణించాం. సాధారణ ప్రజల భాగస్వామ్యానికి (ఉదా. ప్రపంచంలో ఎవరైనా కోడ్పై పని చేయవచ్చు), వ్యక్తిగత లభ్యతకు (ఉదా. ప్రాజెక్ట్ ఏ ఇతర భాగాలు లేకుండా స్వతంత్రంగా వాడబడుతుంది) ఇవి ఉత్తమ ఎంపిక అని మేము భావిస్తున్నాం.

వాదన

సంస్థ/బృందం/ప్రాజెక్ట్ సాపేక్షంగా చిన్నదిగా ఉన్నప్పుడు, స్థిరత్వాన్ని కొనసాగించడం కంటే వేగవంతమైన పునరావృతం ప్రాధాన్యతలో గణనీయంగా ఎక్కువ కాబట్టి మేము మోనోరెపోను ఎంచుకుంటాం

సంస్థ/బృందం/ప్రాజెక్ట్ సాపేక్షంగా పెద్దదిగా ఉన్నప్పుడు, వేగవంతమైన పునరావృతం కంటే స్థిరత్వాన్ని కొనసాగించడం ప్రాధాన్యతలో గణనీయంగా ఎక్కువ కాబట్టి మేము పాలీరెపోను ఎంచుకుంటాం.

పర్యవసానాలు

CI+CD కోసం ఇప్పటికే పైప్లైన్ ఉంటే, ఒకే రెపోలో అనేక ప్రాజెక్టులను పరీక్షించడానికి మనం దాన్ని సర్దుబాటు చేయాల్సి రావచ్చు.

CI+CD మోనోరెపోలోని అన్ని ప్రాజెక్టులను బిల్డ్ చేయగలదు కాబట్టి, మోనోరెపోకు పూర్తి బిల్డ్ కోసం CI+CD ఎక్కువ సమయం తీసుకోవచ్చు.

సంస్థ/బృందం/ప్రాజెక్ట్ పెరిగితే, మోనోరెపోకు విస్తరణ సమస్యలు వస్తాయి.

మోనోరెపో విస్తరణ సమస్యలు పాలీరెపోకు మారడాన్ని పెరుగుతున్న విలువైనదిగా చేయవచ్చు.

మోనోరెపో నుండి పాలీరెపోకు మారడం గణనీయమైన డెవ్ఆప్స్ పని, దాన్ని ప్రణాళిక వేయాలి, నిర్వహించాలి, ప్రోగ్రామ్ చేయాలి.

సంబంధితాలు

సంబంధిత నిర్ణయాలు

మోనోరెపోలను (ఉదా. Google Bazel), పాలీరెపోలను (ఉదా. Lyft Refactorator) నిర్వహించడానికి సంబంధిత సాధనాల కోసం మేము నిర్ణయాలను సృష్టిస్తాం.

సంబంధిత అవసరాలు

CI+CD పైప్లైన్ gitతో బాగా పనిచేసేలా మనం అభివృద్ధి చేయాలి.

సంబంధిత రచనలు

ప్రొవిజనింగ్, కాన్ఫిగరేషన్ నిర్వహణ, పరీక్ష, ఇలాంటి డెవ్ఆప్స్ రంగాల కోసం రెపో సంస్థకు సంబంధిత ఆర్టిఫాక్ట్లు ఉంటాయని మేము ఆశిస్తున్నాం.

సంబంధిత సూత్రాలు

సులభంగా వెనక్కి తీసుకోగలగడం. మోనోరెపో ఆచరణలో పనిచేయకపోతే, లేదా నాయకత్వానికి అది అవసరం లేకపోతే, పాలీరెపోకు మారడం సులభం.

కస్టమర్ ముందు. ప్రాజెక్ట్ను కస్టమర్ల చేతుల్లోకి చేర్చడానికి మేము విలువ ఇస్తాం, పాలీరెపో కంటే మోనోరెపో మమ్మల్ని అక్కడికి వేగంగా చేర్చగలదని, వేగంగా పునరావృతం చేయడంలో కూడా సహాయపడుతుందని మేము నమ్ముతున్నాం.

పెద్దగా ఆలోచించు. Google, Facebook పాలీరెపోల కంటే మోనోరెపోలకు చాలా బలమైన మద్దతుదారులు, ఎందుకంటే అన్ని ప్రధాన ఆఫర్లను కలిసి అభివృద్ధి/పరీక్ష/డిప్లాయ్ చేయవచ్చు.

గమనికలు

ఇక్కడ ఏవైనా గమనికలు జోడించండి.