મોનોરેપો અથવા મલ્ટીરેપો
સામગ્રી:
સારાંશ
સમસ્યા
અમારા પ્રોજેક્ટમાં સોફ્ટવેરની ત્રણ મુખ્ય શ્રેણીઓના વિકાસનો સમાવેશ થાય છે:
- ફ્રન્ટ-એન્ડ GUI
- મિડલવેર સેવાઓ
- બેક-એન્ડ સર્વર્સ
જ્યારે અમે વિકાસ કરીએ છીએ, ત્યારે અમારી સ્રોત કોડ વ્યવસ્થાપન (SCM) સંસ્કરણ નિયંત્રણ સિસ્ટમ (VCS) git છે.
અમારે પસંદ કરવાની જરૂર છે કે અમારા કોડને ગોઠવવા માટે git નો ઉપયોગ કેવી રીતે કરવો.
સર્વોચ્ચ-સ્તરની પસંદગી "મોનોરેપો" અથવા "પોલીરેપો" અથવા "હાઇબ્રિડ" તરીકે ગોઠવવાની છે:
- મોનોરેપોનો અર્થ અમે બધા ભાગોને એક મોટા રેપોમાં મૂકીએ છીએ
- પોલીરેપોનો અર્થ અમે દરેક ભાગને તેના પોતાના રેપોમાં મૂકીએ છીએ
- હાઇબ્રિડનો અર્થ મોનોરેપો અને પોલીરેપોનું કંઈક મિશ્રણ
વધુ માટે કૃપા કરીને જુઓ https://github.com/joelparkerhenderson/monorepo-vs-polyrepo
નિર્ણય
મોનોરેપો જ્યારે સંસ્થા/ટીમ/પ્રોજેક્ટ પ્રમાણમાં નાનો હોય, અને ઝડપી પુનરાવર્તન સ્થિરતા જાળવવા કરતાં ઊંચી અગ્રતા ધરાવતું હોય.
પોલીરેપો જ્યારે સંસ્થા/ટીમ/પ્રોજેક્ટ પ્રમાણમાં મોટો હોય, અને સ્થિરતા જાળવવી ઝડપી પુનરાવર્તન કરતાં ઊંચી અગ્રતા ધરાવતી હોય.
સ્થિતિ
નિર્ણય લેવાયો. મોનોરેપો અને/અથવા પોલીરેપો સંચાલિત કરવા માટે નવા સાધનો ઉપલબ્ધ થાય તો/ત્યારે ફરી વિચારવા માટે ખુલ્લા.
વિગતો
ધારણાઓ
અમે જે બધો કોડ વિકસાવી રહ્યા છીએ તે એક સંસ્થાની ઓફરો માટે છે, સામાન્ય જનતા માટે નથી. એટલે કે Broker-Dealer નો હેતુ સામાન્ય જનતાના સ્વયંસેવક ડેવલપર્સ જેવું કંઈ રાખવાનો નથી.
મર્યાદાઓ
મર્યાદાઓ https://github.com/joelparkerhenderson/monorepo-vs-polyrepo પર સારી રીતે દસ્તાવેજીકૃત છે
વલણો
અમે Google, Facebook, વગેરેની શૈલીમાં મોનોરેપો પર વિચાર કર્યો. અમને લાગે છે કે કોઈપણ મોનોરેપો સ્કેલિંગ સમસ્યાઓ ભવિષ્યમાં એટલી દૂર છે કે જ્યારે અમને તેની જરૂર પડશે ત્યાં સુધીમાં અમે Google અને Facebook જેવી જ પ્રથાઓનો લાભ લઈ શકીશું.
અમે લાક્ષણિક Git ઓપન સોર્સ પ્રોજેક્ટ્સની શૈલીમાં પોલીરેપો પર વિચાર કર્યો, જેમ કે Google Android, Facebook React, વગેરે. અમને લાગે છે કે આ સામાન્ય જનતાની ભાગીદારી (દા.ત. વિશ્વમાં કોઈપણ કોડ પર કામ કરી શકે) અને વ્યક્તિગત ઉપલબ્ધતા (દા.ત. પ્રોજેક્ટ કોઈપણ અન્ય ભાગ વિના, પોતાના પર વપરાય છે) માટે શ્રેષ્ઠ પસંદગી છે.
દલીલ
જ્યારે સંસ્થા/ટીમ/પ્રોજેક્ટ પ્રમાણમાં નાનો હોય, ત્યારે અમે મોનોરેપો પસંદ કરીએ છીએ, કારણ કે ઝડપી પુનરાવર્તન સ્થિરતા જાળવવા કરતાં નોંધપાત્ર રીતે ઊંચી અગ્રતા ધરાવે છે
જ્યારે સંસ્થા/ટીમ/પ્રોજેક્ટ પ્રમાણમાં મોટો હોય, ત્યારે અમે પોલીરેપો પસંદ કરીએ છીએ, કારણ કે સ્થિરતા જાળવવી ઝડપી પુનરાવર્તન કરતાં નોંધપાત્ર રીતે ઊંચી અગ્રતા ધરાવે છે.
અસરો
જો CI+CD માટે હાલની પાઇપલાઇન હોય, તો અમારે તેને એક રેપોની અંદર અનેક પ્રોજેક્ટ્સનું પરીક્ષણ કરવા માટે સમાયોજિત કરવી પડી શકે.
મોનોરેપો માટે સંપૂર્ણ બિલ્ડમાં CI+CD વધુ સમય લઈ શકે, કારણ કે CI+CD મોનોરેપોમાંના તમામ પ્રોજેક્ટ્સ બિલ્ડ કરી શકે.
જો સંસ્થા/ટીમ/પ્રોજેક્ટ વિકસે, તો મોનોરેપોમાં સ્કેલિંગ સમસ્યાઓ હશે.
મોનોરેપો સ્કેલિંગ સમસ્યાઓ પોલીરેપો તરફ સંક્રમણને વધુને વધુ મૂલ્યવાન બનાવી શકે.
મોનોરેપોથી પોલીરેપો તરફનું સંક્રમણ નોંધપાત્ર devops કાર્ય છે, અને તેનું આયોજન, વ્યવસ્થાપન અને પ્રોગ્રામિંગ કરવું પડશે.
સંબંધિત
સંબંધિત નિર્ણયો
અમે મોનોરેપો (દા.ત. Google Bazel) અને પોલીરેપો (દા.ત. Lyft Refactorator) સંચાલિત કરવા માટેના સંબંધિત સાધનો માટે નિર્ણયો બનાવીશું.
સંબંધિત જરૂરિયાતો
અમારે CI+CD પાઇપલાઇન git સાથે સારી રીતે કામ કરે તે માટે વિકસાવવી પડશે.
સંબંધિત આર્ટિફેક્ટ્સ
અમે અપેક્ષા રાખીએ છીએ કે રેપો સંગઠનમાં પ્રોવિઝનિંગ, રૂપરેખાંકન વ્યવસ્થાપન, પરીક્ષણ અને સમાન devops ક્ષેત્રો માટે સંબંધિત આર્ટિફેક્ટ્સ હશે.
સંબંધિત સિદ્ધાંતો
સરળતાથી પલટાવી શકાય તેવું. જો મોનોરેપો વ્યવહારમાં કામ ન કરે, અથવા નેતૃત્વને જોઈતું ન હોય, તો પોલીરેપો પર બદલવું સરળ છે.
ગ્રાહક પ્રત્યે જુસ્સો. અમે પ્રોજેક્ટને ગ્રાહકોના હાથમાં પહોંચાડવાને મૂલ્ય આપીએ છીએ, અને માનીએ છીએ કે મોનોરેપો અમને ત્યાં પોલીરેપો કરતાં ઝડપથી પહોંચાડી શકે, અને ઝડપથી પુનરાવર્તન કરવામાં પણ મદદ કરી શકે.
મોટું વિચારો. Google અને Facebook પોલીરેપો કરતાં મોનોરેપોના ખૂબ મજબૂત હિમાયતી છે, કારણ કે તમામ મુખ્ય ઓફરો એકસાથે વિકસાવી/પરીક્ષણ/ડિપ્લોય કરી શકાય છે.
નોંધો
અહીં કોઈપણ નોંધ ઉમેરો.