ഒരു മെഷീൻ പോലും തൊടാതെ ഞാൻ എങ്ങനെ എല്ലാ ബ്രാഞ്ചുകളും അപ്ഡേറ്റ് ചെയ്തു
ഞാൻ Electron ഉപയോഗിച്ച് ഒരു ഇന്റേണൽ ഡെസ്ക്ടോപ്പ് ടൂൾ നിർമ്മിച്ചു. ഇത് പല ബ്രാഞ്ച് ഓഫീസുകളിലെ മെഷീനുകളിൽ പ്രവർത്തിക്കുന്നു. ഈ ഓഫീസുകൾക്ക് വ്യത്യസ്ത നെറ്റ്വർക്കുകളും വ്യത്യസ്ത നിലവാരത്തിലുള്ള ഐടി (IT) അറിവുകളുമാണുള്ളത്.
കഴിഞ്ഞ ആഴ്ച, എല്ലാ മെഷീനുകളിലേക്കും ഉടൻ തന്നെ ഒരു ഫിക്സ് (fix) എത്തിക്കേണ്ടി വന്നു. ഞാൻ ഒരു ബ്രാഞ്ചും സന്ദർശിച്ചില്ല. സെറ്റപ്പ് ഫയലുകൾ ഇമെയിൽ ചെയ്തില്ല. ഇൻസ്റ്റാൾ ചെയ്യാൻ ആരെയും ആവശ്യപ്പെട്ടതുമില്ല.
ഞാൻ എന്റെ ടെർമിനലിൽ രണ്ട് കമാൻഡുകൾ പ്രവർത്തിപ്പിച്ചു, എന്നിട്ട് അവിടെfrom മാറി. അടുത്ത ദിവസം രാവിലെ ആയപ്പോഴേക്കും എല്ലാ മെഷീനുകളിലും അപ്ഡേറ്റ് എത്തിയിരുന്നു.
മാസങ്ങൾക്ക് മുമ്പ് ഞാൻ electron-updater ഉപയോഗിച്ച് ഒരു ഓട്ടോ-അപ്ഡേറ്റ് സിസ്റ്റം നിർമ്മിച്ചതുകൊണ്ടാണ് ഇത് സാധ്യമായത്.
നിങ്ങൾ റിമോട്ട് ലൊക്കേഷനുകളിലേക്ക് സോഫ്റ്റ്വെയർ എത്തിക്കുമ്പോൾ, ഈ പ്രശ്നങ്ങൾ നേരിടേണ്ടി വരും:
- ഇൻസ്റ്റാളറുകൾ പ്രവർത്തിപ്പിക്കാൻ ഉപയോക്താക്കളെ നിങ്ങൾക്ക് ആശ്രയിക്കാൻ കഴിയില്ല.
- ഐടി സപ്പോർട്ട് അവിടെത്തന്നെയുണ്ടാകുമെന്ന് നിങ്ങൾക്ക് കരുതാൻ കഴിയില്ല.
- റിമോട്ട് ആക്സസ് വലിയ തോതിൽ ഉപയോഗിക്കാൻ പ്രായോഗികമല്ല (does not scale).
- മാനുവൽ വിതരണം നിങ്ങളുടെ ഏറ്റവും വലിയ തടസ്സമായി മാറും.
ഇതിനുള്ള പരിഹാരം ഇൻസ്റ്റാളറെ ഈ പ്രക്രിയയിൽ നിന്ന് ഒഴിവാക്കുക എന്നതാണ്.
എന്റെ സിസ്റ്റം ഒരു ജനറിക് HTTP പ്രൊവൈഡർ ഉപയോഗിക്കുന്നു. ഞാൻ SFTP വഴി ഒരു പ്രൈവറ്റ് വെബ് സെർവറിൽ അപ്ഡേറ്റുകൾ ഹോസ്റ്റ് ചെയ്യുന്നു. ഇത് ഇന്റേണൽ സോഫ്റ്റ്വെയറുകളെ GitHub പോലുള്ള പബ്ലിക് റിപ്പോസിറ്ററികളിൽ നിന്ന് അകറ്റി നിർത്തുന്നു.
ഈ പ്രക്രിയയ്ക്ക് നാല് പാളികളുണ്ട് (layers):
- Build and publish: ആപ്പ് കംപൈൽ ചെയ്യുകയും ഫയലുകൾ സെർവറിലേക്ക് അപ്ലോഡ് ചെയ്യുകയും ചെയ്യുന്നു.
- Main process: പുതിയ വേർഷനുകൾ ഉണ്ടോ എന്ന് പരിശോധിക്കുകയും അവ സൈലന്റ് ആയി ഡൗൺലോഡ് ചെയ്യുകയും ചെയ്യുന്നു.
- Preload bridge: അപ്ഡേറ്റ് ഇവന്റുകളെ സുരക്ഷിതമായി UI-ലേക്ക് എത്തിക്കുന്നു.
- Renderer UI: ഉപയോക്താവിന് അത് തടയാൻ അനുവദിക്കാതെ തന്നെ പ്രോഗ്രസ് കാണിക്കുന്നു.
അപ്ഡേറ്റ് എങ്ങനെയാണ് നടക്കുന്നത് എന്ന് താഴെ നൽകുന്നു:
- ഞാൻ ഒരു പബ്ലിഷ് സ്ക്രിപ്റ്റ് റൺ ചെയ്യുന്നു. അത് ആപ്പ് ബിൽഡ് ചെയ്യുകയും ഫയലുകൾ അപ്ലോഡ് ചെയ്യുകയും ചെയ്യുന്നു.
- പുതിയ അപ്ഡേറ്റുകൾ പരിശോധിക്കാൻ ആപ്പ് ഒരു
latest.ymlഫയൽ ഉപയോഗിക്കുന്നു. ഈ ഫയലിൽ വേർഷനും ഒരു സെക്യൂരിറ്റി ഹാഷും അടങ്ങിയിരിക്കുന്നു. - ആപ്പ് ലോഞ്ച് ചെയ്യുമ്പോൾ അത് സെർവർ പരിശോധിക്കുന്നു.
- പുതിയ വേർഷൻ ഉണ്ടെങ്കിൽ, അത് സ്വയമേവ ഡൗൺലോഡ് ചെയ്യുന്നു.
- ഡൗൺലോഡ് പൂർത്തിയായിക്കഴിഞ്ഞാൽ, ആപ്പ് ക്ലോസ് ആകുകയും അപ്ഡേറ്റ് ഇൻസ്റ്റാൾ ചെയ്യുകയും ചെയ്യുന്നു.
ഞാൻ autoDownload: true ആണ് ഉപയോഗിക്കുന്നത്. ഇതിനർത്ഥം ഉപയോക്താക്കൾ ഒന്നും ക്ലിക്ക് ചെയ്യേണ്ടതില്ല എന്നാണ്. ഞാൻ UI-ൽ ഒരു പ്രോഗ്രസ് ബാറും കാണിക്കുന്നുണ്ട്. ഇത് ഉപയോക്താക്കൾക്ക് ഒരു തീരുമാനമെടുക്കേണ്ടി വരാതെ തന്നെ പ്രക്രിയ എന്താണെന്ന് മനസ്സിലാക്കാൻ സഹായിക്കുന്നു.
ഇന്റേണൽ ഡെസ്ക്ടോപ്പ് സോഫ്റ്റ്വെയറുകൾ നിർമ്മിക്കുന്നതിനുള്ള പാഠങ്ങൾ:
- പൂർണ്ണ നിയന്ത്രണത്തിനായി ഒരു ജനറിക് HTTP പ്രൊവൈഡർ ഉപയോഗിക്കുക.
- അപ്ലോഡ് ചെയ്യുമ്പോൾ എപ്പോഴും മെറ്റാഡാറ്റ ഫയലുകൾ ഓവർറൈറ്റ് ചെയ്യുക.
- കണക്ഷൻ തകരാറുകൾ ഉണ്ടാകാൻ സാധ്യതയുള്ള സാഹചര്യങ്ങൾക്കായി നിങ്ങളുടെ അപ്ലോഡ് സ്ക്രിപ്റ്റിൽ 'resume logic' ഉൾപ്പെടുത്തുക.
- സൈലന്റ് ഡൗൺലോഡുകൾ ഉപയോഗിക്കുക, എന്നാൽ ഒരു പ്രോഗ്രസ് ബാർ കാണിക്കുകയും ചെയ്യുക.
- അപ്ഡേറ്റുകൾ എപ്പോഴും ഒരു SHA-512 ഹാഷ് ഉപയോഗിച്ച് പരിശോധിക്കുക.
ഈ പൈപ്പ്ലൈൻ നേരത്തെ തന്നെ നിർമ്മിച്ചത് ദിവസങ്ങളോളം നീണ്ടുനിൽക്കുന്ന മാനുവൽ ജോലികളിൽ നിന്ന് എന്നെ രക്ഷിച്ചു.
