മൈക്രോ-ഫ്രണ്ടെൻഡുകൾക്കായുള്ള മൊഡ്യൂൾ ഫെഡറേഷനെക്കുറിച്ചുള്ള ആഴത്തിലുള്ള പഠനം. റൺടൈമിൽ കോഡും ഡിപെൻഡൻസികളും പങ്കിടാനും ബണ്ടിൽ വലുപ്പം കുറയ്ക്കാനും സ്വതന്ത്രമായ വിന്യാസം സാധ്യമാക്കാനും പഠിക്കുക.
മൊഡ്യൂൾ ഫെഡറേഷൻ: മൈക്രോ-ഫ്രണ്ടെൻഡുകളിലെ റൺടൈം മൊഡ്യൂൾ ഷെയറിംഗിനുള്ള സമ്പൂർണ്ണ ഗൈഡ്
വെബ് ഡെവലപ്മെൻ്റിൻ്റെ എപ്പോഴും വികസിച്ചുകൊണ്ടിരിക്കുന്ന ഈ ലോകത്ത്, വാസ്തുവിദ്യയിൽ കാര്യമായ ഒരു മാറ്റത്തിന് നാം സാക്ഷ്യം വഹിച്ചു. സ്കേലബിലിറ്റിയും ടീം സ്വയംഭരണവും ലക്ഷ്യമിട്ട് നമ്മൾ മോണോലിത്തിക്ക് ആർക്കിടെക്ചറുകളിൽ നിന്ന് ബാക്കെൻഡ് മൈക്രോസർവീസുകളിലേക്ക് യാത്ര ചെയ്തു. ഇപ്പോൾ, ഇതേ വിപ്ലവം ഫ്രണ്ടെൻഡിനെയും മാറ്റിമറിക്കുകയാണ്. മൈക്രോ-ഫ്രണ്ടെൻഡുകളുടെ യുഗം ഇവിടെയാണ്, ഇതിന്റെയെല്ലാം ഹൃദയഭാഗത്ത് ഇതിനെ പ്രായോഗികമാക്കുന്ന ഒരു ശക്തമായ സാങ്കേതികവിദ്യയുണ്ട്: മൊഡ്യൂൾ ഫെഡറേഷൻ.
മൈക്രോ-ഫ്രണ്ടെൻഡുകളുടെ പ്രധാന വെല്ലുവിളി എപ്പോഴും പറയാൻ എളുപ്പവും പരിഹരിക്കാൻ പ്രയാസവുമായിരുന്നു: വേഗത കുറഞ്ഞതും, വലുപ്പമേറിയതും, കൈകാര്യം ചെയ്യാൻ ബുദ്ധിമുട്ടുള്ളതുമായ ഒരു അവസ്ഥ സൃഷ്ടിക്കാതെ, സ്വതന്ത്രമായി വിന്യസിച്ച ഒന്നിലധികം ആപ്ലിക്കേഷനുകളിൽ നിന്ന് ഒരൊറ്റ, യോജിച്ച ഉപയോക്തൃ അനുഭവം എങ്ങനെ നിർമ്മിക്കാം? പതിപ്പ് സംബന്ധമായ പ്രശ്നങ്ങളോ നിർബന്ധിത ഏകോപിത റിലീസുകളോ ഉണ്ടാക്കാതെ, റിയാക്റ്റ് പോലുള്ള കോമൺ കോഡുകളും കമ്പോണന്റ് ലൈബ്രറികളും എങ്ങനെ പങ്കിടാം?
ഈ പ്രശ്നമാണ് മൊഡ്യൂൾ ഫെഡറേഷൻ മനോഹരമായി പരിഹരിക്കുന്നത്. വെബ്പാക്ക് 5-ൽ അവതരിപ്പിച്ച ഇത് മറ്റൊരു ഫീച്ചർ മാത്രമല്ല; വെബ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കുന്നതിലും വിന്യസിക്കുന്നതിലും നാം ചിന്തിക്കുന്ന രീതിയിലുള്ള ഒരു മാതൃകാപരമായ മാറ്റമാണിത്. ഈ സമഗ്രമായ ഗൈഡ് മൊഡ്യൂൾ ഫെഡറേഷൻ്റെ എന്ത്, എന്തുകൊണ്ട്, എങ്ങനെ എന്നിവയെക്കുറിച്ച് പര്യവേക്ഷണം ചെയ്യും, അതിൻ്റെ ഏറ്റവും പരിവർത്തനാത്മകമായ കഴിവ്: റൺടൈം മൊഡ്യൂൾ ഷെയറിംഗ് എന്നിവയിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കും.
ഒരു ചെറിയ ഓർമ്മപ്പെടുത്തൽ: എന്താണ് മൈക്രോ-ഫ്രണ്ടെൻഡുകൾ?
മൊഡ്യൂൾ ഫെഡറേഷൻ്റെ മെക്കാനിക്സിലേക്ക് കടക്കുന്നതിന് മുമ്പ്, മൈക്രോ-ഫ്രണ്ടെൻഡുകൾ എന്നതുകൊണ്ട് എന്താണ് അർത്ഥമാക്കുന്നത് എന്ന് നമുക്ക് വ്യക്തമാക്കാം. ഒരു വലിയ ഇ-കൊമേഴ്സ് വെബ്സൈറ്റ് സങ്കൽപ്പിക്കുക. ഒരു മോണോലിത്തിക്ക് ലോകത്ത്, മുഴുവൻ ഫ്രണ്ടെൻഡും - ഉൽപ്പന്ന തിരയൽ, ഉൽപ്പന്ന വിശദാംശങ്ങൾ, ഷോപ്പിംഗ് കാർട്ട്, ചെക്ക്ഔട്ട് - ഒരൊറ്റ, വലിയ ആപ്ലിക്കേഷനാണ്. ചെക്ക്ഔട്ട് ബട്ടണിലെ ഒരു മാറ്റത്തിന് മുഴുവൻ ആപ്ലിക്കേഷനും പരീക്ഷിക്കുകയും വീണ്ടും വിന്യസിക്കുകയും ചെയ്യേണ്ടി വന്നേക്കാം.
ഒരു മൈക്രോ-ഫ്രണ്ടെൻഡ് ആർക്കിടെക്ചർ ഈ മോണോലിത്തിനെ ബിസിനസ്സ് ഡൊമെയ്നുകൾക്കനുസരിച്ച് വിഭജിക്കുന്നു. നിങ്ങൾക്ക് ഇവയുണ്ടാകാം:
- ഒരു സെർച്ച് ടീം, സെർച്ച് ബാറും ഫലങ്ങൾ കാണിക്കുന്ന പേജും ഇവരുടെ ഉടമസ്ഥതയിലായിരിക്കും.
- ഒരു പ്രൊഡക്റ്റ് ടീം, ഉൽപ്പന്നത്തിന്റെ വിശദാംശങ്ങളും ശുപാർശകളും ഇവരുടെ ഉടമസ്ഥതയിലായിരിക്കും.
- ഒരു ചെക്ക്ഔട്ട് ടീം, ഷോപ്പിംഗ് കാർട്ടും പണമടയ്ക്കൽ പ്രക്രിയയും ഇവരുടെ ഉടമസ്ഥതയിലായിരിക്കും.
ഓരോ ടീമിനും ആപ്ലിക്കേഷൻ്റെ അവരുടെ ഭാഗം സ്വതന്ത്രമായി നിർമ്മിക്കാനും പരീക്ഷിക്കാനും വിന്യസിക്കാനും കഴിയും. ഇത് നിരവധി പ്രധാന നേട്ടങ്ങളിലേക്ക് നയിക്കുന്നു:
- സ്വയംഭരണാധികാരമുള്ള ടീമുകൾ: ടീമുകൾക്ക് അവരുടെ സ്വന്തം ഷെഡ്യൂളുകളിൽ പ്രവർത്തിക്കാനും റിലീസ് ചെയ്യാനും കഴിയും, ഇത് വികസനം വേഗത്തിലാക്കുന്നു.
- സ്വതന്ത്രമായ വിന്യാസം: ശുപാർശ എഞ്ചിനിലെ ഒരു ബഗ് പെയ്മെൻ്റ് ഫ്ലോയിലെ ഒരു പ്രധാന അപ്ഡേറ്റിനെ തടസ്സപ്പെടുത്തുന്നില്ല.
- സാങ്കേതികവിദ്യയിലെ വഴക്കം: സെർച്ച് ടീമിന് Vue.js ഉപയോഗിക്കാം, അതേസമയം പ്രൊഡക്റ്റ് ടീമിന് റിയാക്റ്റ് ഉപയോഗിക്കാം, ഇത് ടീമുകൾക്ക് അവരുടെ പ്രത്യേക ഡൊമെയ്നിന് ഏറ്റവും മികച്ച ഉപകരണം തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു (ഇതിന് ശ്രദ്ധാപൂർവ്വമായ മാനേജ്മെൻ്റ് ആവശ്യമാണ്).
എന്നിരുന്നാലും, ഈ സമീപനം അതിൻ്റേതായ വെല്ലുവിളികൾ അവതരിപ്പിക്കുന്നു, പ്രധാനമായും പങ്കിടലിനെയും സ്ഥിരതയെയും ചുറ്റിപ്പറ്റിയുള്ളവ, ഇത് നമ്മളെ പഴയ രീതികളിലേക്ക് കൊണ്ടുവരുന്നു.
കോഡ് പങ്കിടുന്നതിനുള്ള പഴയ രീതികൾ (അവ എന്തുകൊണ്ട് പരാജയപ്പെടുന്നു)
ചരിത്രപരമായി, ടീമുകൾ വ്യത്യസ്ത ഫ്രണ്ടെൻഡ് ആപ്ലിക്കേഷനുകൾക്കിടയിൽ കോഡ് പങ്കിടുന്നതിന് നിരവധി മാർഗ്ഗങ്ങൾ പരീക്ഷിച്ചിട്ടുണ്ട്, ഓരോന്നിനും ഒരു മൈക്രോ-ഫ്രണ്ടെൻഡ് പശ്ചാത്തലത്തിൽ കാര്യമായ പോരായ്മകളുണ്ട്.
NPM പാക്കേജുകൾ
പങ്കിട്ട ഘടകങ്ങളോ യൂട്ടിലിറ്റികളോ ഒരു പതിപ്പുള്ള NPM പാക്കേജായി പ്രസിദ്ധീകരിക്കുന്നതാണ് ഏറ്റവും സാധാരണമായ സമീപനം. ഒരു പങ്കിട്ട കമ്പോണന്റ് ലൈബ്രറി ഇതിന്റെ മികച്ച ഉദാഹരണമാണ്.
- പ്രശ്നം: ഇത് ഒരു ബിൽഡ്-ടൈം ഡിപെൻഡൻസിയാണ്. ടീം A, `my-ui-library`-യിലെ പങ്കിട്ട `Button` കമ്പോണന്റ് പതിപ്പ് 1.1-ൽ നിന്ന് 1.2-ലേക്ക് അപ്ഡേറ്റ് ചെയ്താൽ, ടീം B-യും ടീം C-യും അവരുടെ `package.json` സ്വയം അപ്ഡേറ്റ് ചെയ്യുകയും, `npm install` പ്രവർത്തിപ്പിക്കുകയും, അവരുടെ മുഴുവൻ മൈക്രോ-ഫ്രണ്ടെൻഡും വീണ്ടും വിന്യസിക്കുകയും ചെയ്യാതെ ആ അപ്ഡേറ്റ് ലഭിക്കില്ല. ഇത് ശക്തമായ കൂടിച്ചേരലിന് കാരണമാവുകയും സ്വതന്ത്ര വിന്യാസത്തിന്റെ ഉദ്ദേശ്യത്തെ പരാജയപ്പെടുത്തുകയും ചെയ്യുന്നു. കൂടാതെ, ഒരേ കമ്പോണന്റിന്റെ ഒന്നിലധികം പതിപ്പുകൾ ബ്രൗസറിൽ ലോഡുചെയ്യുന്നതിനും ഇത് കാരണമാകുന്നു, ഇത് അന്തിമ ബണ്ടിലിന്റെ വലുപ്പം വർദ്ധിപ്പിക്കുന്നു.
പങ്കിട്ട വർക്ക്സ്പെയ്സുകളുള്ള മോണോറെപ്പോകൾ
മോണോറെപ്പോകൾ (Lerna അല്ലെങ്കിൽ Yarn/NPM വർക്ക്സ്പെയ്സുകൾ പോലുള്ള ഉപകരണങ്ങൾ ഉപയോഗിച്ച്) എല്ലാ മൈക്രോ-ഫ്രണ്ടെൻഡുകളും ഒരൊറ്റ റിപ്പോസിറ്ററിയിൽ സൂക്ഷിക്കുന്നു. ഇത് പങ്കിട്ട പാക്കേജുകൾ കൈകാര്യം ചെയ്യുന്നത് ലളിതമാക്കുന്നു.
- പ്രശ്നം: മോണോറെപ്പോകൾ ഡെവലപ്പർ അനുഭവത്തിന് സഹായിക്കുമെങ്കിലും, അവ പ്രധാന റൺടൈം പ്രശ്നം പരിഹരിക്കുന്നില്ല. നിങ്ങൾ ഇപ്പോഴും ബിൽഡ്-ടൈം ഡിപെൻഡൻസികളെ ആശ്രയിക്കുന്നു. ഒരു പങ്കിട്ട ലൈബ്രറിയിലെ മാറ്റത്തിന്, അത് ഉപയോഗിക്കുന്ന എല്ലാ ആപ്ലിക്കേഷനുകളും മാറ്റം പ്രതിഫലിപ്പിക്കുന്നതിന് പുനർനിർമ്മിക്കുകയും വീണ്ടും വിന്യസിക്കുകയും ചെയ്യേണ്ടതുണ്ട്.