വെബ് ആപ്ലിക്കേഷൻ

ഒരു **വെബ് അപ്ലിക്കേഷൻ** (web app) എന്ന് പറയുന്നത്, വെബ് ടെക്നോളജികൾ ഉപയോഗിച്ച് നിർമ്മിച്ചിട്ടുള്ള ഒരു അപ്ലിക്കേഷൻ സോഫ്റ്റ്വെയറിനെയാണ്. ഇത് നേരിട്ട് വെബ് ബ്രൗസർ വഴിയാണ് പ്രവർത്തിക്കുന്നത്. ഉപയോക്താവിന് ഇന്റർനെറ്റ് കണക്ഷൻ ഉണ്ടെങ്കിൽ ഏതു ബ്രൗസറിലൂടെയും ഇത് ഉപയോഗിക്കാൻ കഴിയുമെന്നാണ് ഇതിന്റെ പ്രത്യേകത. വെബ് അപ്ലിക്കേഷനുകൾ 1990-കളുടെ അവസാനം വെബ്ബിന്റെ വളർച്ചയ്ക്കൊപ്പം പ്രചാരത്തിലായി. ആദ്യം വെബ് സൈറ്റുകൾ സ്റ്റാറ്റിക് ആയിരുന്നു – അതായത്, ഒരു പേജ് എങ്ങനെ ഉണ്ടാകണം എന്നത് മുൻകൂട്ടി എഴുതിയിരുന്നു, അതിൽ മാറ്റങ്ങൾ വരുത്താൻ കഴിയില്ലായിരുന്നു. എന്നാൽ വെബ് അപ്ലിക്കേഷനുകൾ വന്നപ്പോൾ, ഉപയോക്താവിന്റെ അഭ്യർത്ഥനയെ അടിസ്ഥാനമാക്കി സെർവർ അതാത് സമയത്ത് മറുപടി പേജ് തയാറാക്കാൻ തുടങ്ങി. ഇതുവഴി കൂടുതൽ ഇന്ററാക്ടീവ് ആയ വെബ് സൈറ്റുകൾ സാധ്യമായി(ഉപയോക്താവിന് നേരിട്ട് പ്രതികരിക്കാനാകുന്ന സംവിധാനം ഇന്ററാക്ടീവാണ്. ഉദാഹരണത്തിന്, ഒരു ബട്ടൺ അമർത്തുമ്പോൾ പ്രതികരണമായി എന്തെങ്കിലും സംഭവിക്കാം. ഇത്തരത്തിൽ ഉപയോക്താവും ആപ്ലിക്കേഷനും തമ്മിൽ സംവദിക്കുമ്പോൾ അതിനെ ഇന്ററാക്ടീവ് എന്നു പറയുന്നു).

വെബ് ആപ്ലിക്കേഷനുകൾ എന്നത് നമ്മൾ ബ്രൗസറിൽ ഉപയോഗിക്കുന്ന ഓൺലൈൻ ആപ്ലിക്കേഷനുകളാണ്, ഇവയ്ക്ക് കൃത്യമായി പ്രവർത്തിക്കാൻ പല ഭാഗങ്ങളായി വിഭജിച്ചിരിക്കുന്നു. ഒരു ഭാഗം നമ്മുടെ ഉപകരണത്തിലുള്ളത് (ക്ലയന്റ്) ആണെങ്കിൽ, മറ്റൊന്ന് സെർവറിലായിരിക്കും (ഡാറ്റാ സംഭരണം, പ്രോസസ്സിംഗ്). ഈ ഭാഗങ്ങൾ തമ്മിൽ കൃത്യമായി ആശയവിനിമയം നടത്താൻ ടിയർ സിസ്റ്റം എന്ന സംവിധാനം ഉപയോഗിക്കുന്നു — വൺ ടിയർ(1-tier) എന്നത് എല്ലാം ഒരിടത്ത് തന്നെയായിരിക്കും, ടു ടിയർ(2-tier) ക്ലയന്റും സെർവറും മാത്രം ഉള്ള സിസ്റ്റമാണ്, ത്രി ടിയർ(3-tier) എന്നത് ക്ലയന്റ്, ആപ്ലിക്കേഷൻ സെർവർ, ഡാറ്റാബേസ് സെർവർ എന്നിങ്ങനെയായിരിക്കും വിഭജിച്ചിരിക്കുന്നത്. അവ ഓരോ ടിയർ സിസ്റ്റങ്ങളും വ്യത്യസ്ത രീതിയിൽ പ്രവർത്തിക്കുന്നതിനാൽ ഓരോന്നിനും സ്വന്തം ഉപയോഗങ്ങൾ ഉണ്ട്. എന്നാൽ, ഡെവലപ്‌മെന്റിന്റെ സമയത്ത് ഡെവലപ്പർമാർ ശ്രദ്ധിക്കേണ്ട നിരവധി സുരക്ഷാ അപകടങ്ങൾ ഉണ്ട്. ഉപയോക്തൃ ഡാറ്റയെ സുരക്ഷിതമായി സൂക്ഷിക്കാൻ ശരിയായ നടപടികൾ സ്വീകരിക്കേണ്ടത് അത്യന്താപേക്ഷിതമാണ്. 

വെബ് ആപ്ലിക്കേഷനുകൾ സാധാരണയായി വെബ് ആപ്ലിക്കേഷൻ ഫ്രെയിംവർക്കുകൾ ഉപയോഗിച്ച് നിർമ്മിക്കുന്നു, ഉദാഹരണത്തിന് റിയാക്ട്, ആംഗുലാർ, അല്ലെങ്കിൽ ജാങ്കോ(Django) മുതലായവ. ഈ ഫ്രെയിംവർക്കുകൾ ഡെവലപ്പർമാർക്ക് കാര്യക്ഷമവും ഘടനാപരവുമായ കോഡ് തയ്യാറാക്കാൻ സഹായിക്കുന്നു. സിംഗിൾ-പേജ് ആപ്ലിക്കേഷനുകൾ (SPAs) ഒന്ന് മാത്രം എച്ച്ടിഎംഎൽ പേജ് ലോഡ് ചെയ്യുകയും പേജിനെ പുതുക്കാതെയുള്ള ഉള്ളടക്കം ഡൈനാമിക്കായി അപ്ഡേറ്റ് ചെയ്യുകയും ചെയ്യുന്നു. പ്രോഗ്രസീവ് വെബ് ആപ്ലിക്കേഷനുകൾ (PWAs) ഓഫ്‌ലൈനിൽ പ്രവർത്തിക്കാനും നേറ്റീവ് മൊബൈൽ ആപ്ലിക്കേഷനുകളെ പോലെയുള്ള അനുഭവം നൽകാനും കഴിയുന്ന വെബ് ആപ്ലിക്കേഷനുകൾ ആണ്. എസ്പിഎകളും(SPAs) പിഡബ്യുഎസും(PWAs) സ്മൂത് നാവിഗേഷൻ, വേഗമുള്ള ഇടപെടലുകൾ എന്നിവ നൽകുന്നു. ഈ ആപ്ലിക്കേഷനുകൾ വെബ് ആപ്ലിക്കേഷനുകൾ കൂടുതൽ പ്രതികരണശീലവും ആപ്ലിക്കേഷനുകൾ പോലെയുള്ള അനുഭവം നൽകുകയും ചെയ്യുന്നു.
## ചരിത്രം
1999-ലാണ് ജാവ ഭാഷയിലൂടെയുള്ള സെർവ്ലെറ്റ് സ്‌പെസിഫിക്കേഷൻ പതിപ്പ് 2.2 വഴി "വെബ് ആപ്ലിക്കേഷൻ" എന്ന ആശയം ഔദ്യോഗികമായി അവതരിപ്പിക്കപ്പെട്ടത്. ആ സമയത്ത് ജാവാസ്ക്രിപ്റ്റും എക്സ്എംഎല്ലും നിലവിലുണ്ടായിരുന്നു. എന്നാൽ XMLHttpRequest എന്നത് ഇന്റർനെറ്റ് എക്‌സ്‌പ്ലോറർ 5-ൽ മാത്രം ആക്ടീവ്എക്സ്(ActiveX) ഓബ്ജക്റ്റായി അവതരിപ്പിച്ചിരുന്നു. 2000കളുടെ തുടക്കത്തിൽ, മൈസ്പേസ്(Myspace) (2003), ജിമെയിൽ (2004), ഡിഗ്ഗ്(Digg) (2004), ഗൂഗിൾ മാപ്സ് (2005) തുടങ്ങിയ വെബ് ആപ്ലിക്കേഷനുകൾ കൂടുതൽ ഇന്ററാക്ടീവ് ആയി മാറാൻ തുടങ്ങി. വെബ് പേജിലെ സ്ക്രിപ്റ്റുകൾ മുഴുവൻ പേജ് ഡൗൺലോഡ് ചെയ്യാതെ തന്നെ സെർവറുമായി ബന്ധപ്പെടാൻ തുടങ്ങിയതോടെയാണ് ഇത് സാധ്യമായത്. ഈ രീതി 2005-ൽ അജാക്സ്(Ajax) എന്ന പേരിൽ അറിയപ്പെടാൻ തുടങ്ങി.

മുൻകാല കമ്പ്യൂട്ടിംഗ് മാതൃകകളായ ക്ലയന്റ്-സെർവർ മോഡലുകളിൽ, പ്രോസസ്സിംഗ് ലോഡ് സെർവറിലെയും ക്ലയന്റിലെയും കോഡുകൾ തമ്മിൽ പങ്കിട്ടിരുന്നു. അതായത്, ആപ്ലിക്കേഷനുകൾക്ക് ഓരോ ഉപയോക്താവിന്റെ കംപ്യൂട്ടറിൽ ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതായ പ്രീ-കംപൈൽഡ് ക്ലയന്റ് പ്രോഗ്രാം(pre-compiled client program) ഉണ്ടായിരുന്നു. ഇത് ഉപയോക്താക്കളുടെ ഇന്റർഫേസായി പ്രവർത്തിക്കുകയും ലോക്കലി റൺ ചെയ്‌തിരുന്നു(ലോക്കലി റൺ എന്നതുകൊണ്ട് അർത്ഥമാക്കുന്നത്, ഒരു പ്രോഗ്രാം അല്ലെങ്കിൽ ആപ്ലിക്കേഷൻ ഉപയോക്താവിന്റെ കമ്പ്യൂട്ടറിൽ നേരിട്ട് പ്രവർത്തിക്കുക എന്നതാണ് — ഇന്റർനെറ്റ് ഇല്ലാതെ, സെർവറിനെ ആശ്രയിക്കാതെ. ഉദാഹരണത്തിന്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്ന മൈക്രോസോഫ്റ്റ് വേഡ് പോലുള്ള സോഫ്റ്റ്‌വെയർ ലോക്കലി റൺ ചെയ്യുന്നു. വെബ് അപ്ലിക്കേഷൻ അതിനേക്കാൾ വ്യത്യസ്തമാണ്, അവയ്ക്ക് സെർവർ, ബ്രൗസർ എന്നിവ ആവശ്യമുണ്ട്). സെർവർ സൈഡിലുള്ള കോഡ് അപ്‌ഗ്രേഡ് ചെയ്യുമ്പോൾ സാധാരണയായി ഓരോ ഉപയോക്താവിന്റെയും കമ്പ്യൂട്ടറിലുളള ക്ലയന്റ്-സൈഡ് കോഡും അപ്‌ഡേറ്റ് ചെയ്യേണ്ടതായി വരും. ഇത് സാങ്കേതിക പിന്തുണയ്ക്കുള്ള ചെലവുകൾ കൂട്ടുകയും ഉത്പാദനക്ഷമത കുറയുന്നതിനും കാരണമാകുകയും ചെയ്യും. ആ ആപ്ലിക്കേഷൻ ഒരു പ്രത്യേക കമ്പ്യൂട്ടർ സിസ്റ്റത്തിനും അതിന്റെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിനും മാത്രമേ അനുയോജ്യമായിരുന്നുള്ളൂ. അതിനാൽ, മറ്റ് കമ്പ്യൂട്ടറുകളിൽ ഉപയോഗിക്കാൻ പാകത്തിന് ആ ആപ്ലിക്കേഷൻ മാറ്റാൻ വളരെ വലിയ ചെലവുമായിരുന്നു. അതുകൊണ്ടുതന്നെ വലിയ കമ്പനികൾക്ക് മാത്രമേ അതു ചെയ്യാൻ കഴിയുമായിരുന്നുള്ളൂ.

1995-ൽ നെറ്റ്‌സ്കേപ് കമ്പനി ക്ലയന്റ്-സൈഡ് സ്ക്രിപ്റ്റിംഗ് ഭാഷയായ ജാവാസ്ക്രിപ്റ്റ് അവതരിപ്പിച്ചു. ഇതിലൂടെ യൂസർ ഇന്റർഫേസിൽ പ്രവർത്തനക്ഷമമായ ഘടകങ്ങൾ പ്രോഗ്രാമർമാർക്ക് കൂട്ടിച്ചേർക്കാനായി. ഈ ഘടകങ്ങൾ ബ്രൗസറിൽ നേരിട്ട് പ്രവർത്തിക്കുന്നതിനാൽ സെർവർലേക്ക് ആവർത്തിച്ച് പോകേണ്ടതില്ല. വെബ് പേജ് സെർവറിൽ നിന്ന് ലോഡ് ചെയ്ത ശേഷം, അതിനകത്തുള്ള ജാവാസ്ക്രിപ്റ്റ് പോലുള്ള സ്ക്രിപ്റ്റുകൾ ഉപയോഗിച്ച് ചില ജോലികൾ ബ്രൗസറിലാണ് നടക്കുന്നത്. ഇതിലൂടെ, ഫോമുകൾ ചെക്ക് ചെയ്യൽ, ഉള്ളടക്കം മറയ്ക്കൽ/കാണിക്കൽ പോലുള്ള കാര്യങ്ങൾ സെർവറിൽ പോകാതെ സാധിക്കും. അതിനാൽ, പേജ് വീണ്ടും ലോഡ് ചെയ്യാതെ തന്നെ ഉപയോഗപ്രദമായ അനുഭവം ലഭിക്കും.

പ്രോഗ്രസ്സീവ് വെബ്ബ് ആപ്പ് (PWA) എന്നത് ഒരു വെബ് ആപ്പിന്റെ രൂപത്തിലാണ് പ്രവർത്തനം ആരംഭിക്കുന്നത്, എന്നാൽ പിന്നീട് അത് മൊബൈൽ ആപ്പിന്റെ അനുഭവം നൽകുന്നതായാണ് മാറുന്നത്. 2015-ൽ ഫ്രാൻസെസ് ബെറിമാനും ഗൂഗിൾ ക്രോം എൻജിനീയറായ അലക്സ് റസ്സലും ചേർന്നാണ് ഈ ആശയം അവതരിപ്പിച്ചത്. ആദ്യം ബ്രൗസറിലൂടെ ആപ്പ് തുറക്കുമ്പോഴും, പിന്നീട് ഹോം സ്ക്രീനിൽനിന്ന് നേരിട്ട് തുറക്കാനും, ഇൻസ്റ്റാൾ ചെയ്യാനും കഴിയും. ഇന്റർനെറ്റ് ഇല്ലാതെയും ചില പ്രവർത്തനങ്ങൾ നടത്താൻ ഇത് സാധ്യമാക്കുന്നു. നോട്ടിഫിക്കേഷൻസ്(Notifications) പോലുള്ള ആധുനിക ഫീച്ചറുകൾ ഉപയോഗിച്ചും ഈ ആപ്പുകൾ പ്രവർത്തിക്കുന്നു. ഇതുമൂലം ആപ്പ് ഉപയോഗിക്കുന്ന സമയത്ത് വേഗതയും സൗകര്യവും നൽകുന്ന ഒരു ആധുനിക ആപ്പ് അനുഭവം ഉപയോക്താവിന് ലഭിക്കുന്നു.
## ഘടന
പരമ്പരാഗത പി.സി ആപ്ലിക്കേഷനുകൾ ക്ലയന്റിലേയ്ക്കു മാത്രം നിയന്ത്രിതമായ ഒറ്റതരത്തിലുള്ള ഘടനയിലാണു പ്രവർത്തിക്കുന്നത്. വെബ് ആപ്ലിക്കേഷനുകൾ പൊതുവായി പ്രസന്റേഷൻ ലേയർ, ആപ്ലിക്കേഷൻ ലേയർ, ഡേറ്റാ ലേയർ തുടങ്ങിയ പലതരം ഘടകങ്ങളായി വിഭജിച്ചിരിക്കുന്ന പല പാളികളുള്ള സംവിധാനത്തെ (multi-tier architecture) അടിസ്ഥാനമാക്കിയുള്ളവയാണ്. ഇത് സ്കേയിൽ ചെയ്യാനും, എളുപ്പത്തിൽ പരിപാലിക്കാനും, ഓരോ ഭാഗവും സൂക്ഷ്മമായി വേർതിരിക്കാനും സഹായിക്കുന്നു(ഒരു ആപ്ലിക്കേഷൻ വലിയ തോതിലുള്ള ഉപയോക്താക്കളുടെ എണ്ണം കൈകാര്യം ചെയ്യാനായി സെർവറുകൾ കൂട്ടിച്ചേർക്കുകയോ വിഭവങ്ങൾ വർദ്ധിപ്പിക്കുകയോ ചെയ്യാൻ കഴിയുന്നതിനെയാണ് സ്കെയിൽ ചെയ്യുന്നു എന്ന് പറയുന്നത്. ഉദാഹരണം:
ഒരു വെബ് ആപ്ലിക്കേഷന് ഇന്ന് 100 ഉപയോക്താക്കളാണുള്ളത്. നാളെ അത് 10,000 ആളുകൾ ആയിരിക്കാം ഉപയോഗിക്കേണ്ടി വരിക. അപ്പോൾ ആ ആപ്ലിക്കേഷൻ സ്കെയിൽ ചെയ്യാൻ കഴിയണം — അതായത് കൂടുതൽ റിസോഴ്സുകൾ ചേർത്ത് അത്രയും ഉപയോക്താക്കളെ പിന്താങ്ങാനാവണം). വെബ് ആപ്ലിക്കേഷനുകൾ മൂന്ന് തലങ്ങളിൽ പ്രവർത്തിക്കുന്നു: പ്രഥമതലമായ പ്രസന്റേഷൻ ലേയർ ഉപയോഗിക്കുന്നു ബ്രൗസർ മുഖേന ഉപയോക്താവ് കാണുന്ന ഭാഗം — ഉദാഹരണത്തിന് ലോഗിൻ(login) ഫോമുകൾ. രണ്ടാമത്തെ തലമായ ആപ്ലിക്കേഷൻ ലേയറിൽ എഎസ്പി(ASP), നോഡ്.ജെഎസ്, പൈത്തൺ മുതലായ സാങ്കേതികവിദ്യകൾ ഉപയോഗിച്ച് ആവശ്യങ്ങൾ പ്രോസസ് ചെയ്യുന്നു — ഉദാഹരണത്തിന്, ലോഗിൻ ബട്ടൺ ക്ലിക്കായപ്പോൾ ഉപയോക്തൃ നാമം അല്ലെങ്കിൽ രഹസ്യവാക്ക്(username/password) ശരിയാണോ എന്ന് പരിശോധിക്കുന്നു. മൂന്നാം തലമായ ഡാറ്റ ലേയർ ഡാറ്റയോ ഉപയോക്താവിന്റെ വിവരങ്ങൾ സംഭരിക്കുന്ന ഭാഗമാണ്, ഉദാഹരണത്തിന് മൈഎസ്ക്യുഎൽ പോലെയുള്ള ഡാറ്റാബേസുകൾ. ഈ മൂന്ന് തലങ്ങളും സഹകരിച്ചാണ് ഒരു വെബ് ആപ്ലിക്കേഷൻ കാര്യക്ഷമമായി പ്രവർത്തിക്കുന്നത്. മൂന്നാം തലമായ ഡാറ്റാബേസ് ടിയർ എന്നത് ഉപയോക്തൃ ഡാറ്റ സംഭരിക്കുന്നതും, ഉപയോക്തൃ ഇന്റർഫേസ് എങ്ങിനെയാണ് കാണേണ്ടത് എന്നത് നിർണ്ണയിക്കുകയും ചെയ്യുന്ന ഭാഗമാണ്. മൂന്ന് തലങ്ങളുള്ള സിസ്റ്റത്തിൽ, ബ്രൗസർ ഉപയോക്താവിന്റെ അഭ്യർത്ഥന (request) അയക്കുന്നു, അതിന്റെ അടിസ്ഥാനത്തിൽ അപ്ലിക്കേഷൻ എഞ്ചിൻ ഡാറ്റാബേസിൽ നിന്ന് വിവരങ്ങൾ തിരയുകയോ അപ്‌ഡേറ്റ് ചെയ്യുകയോ ചെയ്യുന്നു, തുടർന്ന് അതിന്റെ അടിസ്ഥാനത്തിൽ ഉപയോക്താവിനായി ഇന്റർഫേസ് സൃഷ്ടിക്കുന്നു. ഇങ്ങനെ ഓരോ തലവും വ്യക്തമായ ഉത്തരവാദിത്വം നിർവഹിച്ച് ആപ്ലിക്കേഷൻ സംയോജിതമായി പ്രവർത്തിക്കുന്നു.

ഒരു വലിയ ആപ്ലിക്കേഷനിൽ ബിസിനസ് ലോജിക് (ഉദാഹരണത്തിന്: ഡ്രോപ്പ് ഡൗൺ മൂല്യങ്ങൾ എങ്ങനെ വേണം, ഉപഭോക്തൃ പാസ്വേഡ് പോലെയുള്ള നയങ്ങൾ എങ്ങനെ കൈകാര്യം ചെയ്യണം തുടങ്ങിയവ) ഒരൊറ്റ ലെയറിൽ സൂക്ഷിക്കുന്നത് ഈ സംവിധാനത്തെ ഗൂഢമായി നിർവഹിക്കാൻ പ്രയാസമാക്കും. അതിനാൽ സൂക്ഷ്മതയോടെ വിഭജിച്ച പാളികളി(finer layers)ലേക്ക് തരംതിരിച്ചുള്ള n-ടിയർ മോഡൽ ഉപയോഗിക്കേണ്ടിവരും. അതിനാൽ, n-ടിയർ മോഡൽ ഉപയോഗിച്ച് ഈ ലോജിക് പല ഉപവിഭാഗങ്ങളായി വിഭജിക്കാം. ഇതു വഴി ആപ്ലിക്കേഷൻ കൂടുതൽ എളുപ്പത്തിൽ നയിക്കാനും, പരിപാലിക്കാനും കഴിയും. മറ്റൊരു പ്രയോജനം എന്നത് ഇന്റഗ്രേഷൻ ടിയർ (Integration Tier) ചേർക്കാനാകുന്നതാണ്. ഇത് ഡാറ്റ ടിയറിനെ മറ്റ് ലെയറുകളിൽ നിന്ന് വേർതിരിക്കുകയും, ഡാറ്റ എളുപ്പത്തിൽ ലഭ്യമാക്കാൻ ഉപയോഗിക്കാൻ പാകത്തിനുള്ള ഇന്റർഫേസ് നൽകുകയും ചെയ്യുന്നു. ഇതു വഴി ആപ്ലിക്കേഷൻ ഡാറ്റയെ നേരിട്ട് ആക്സസ് ചെയ്യേണ്ടതില്ല, മറിച്ച് ഒരു ഇടനില ലെയർ വഴി സംവദിക്കാനാകും — ഇത് സുരക്ഷയും സ്കേലബിലിറ്റിയും വർദ്ധിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്, ഉപയോക്താവിന്റെ ഡാറ്റ നേരിട്ട് ഡാറ്റാബേസിലെ ക്ലയിന്റ് പട്ടികയിലേക്ക് എസ്ക്യുഎൽ ക്വറി അയക്കാതെ, `list_clients()` എന്ന ഫംഗ്ഷൻ വിളിച്ചാണ് പ്രവേശിക്കുന്നത്. ഇത് വഴി, അടിസ്ഥാനത്തിലുള്ള ഡാറ്റാബേസ് മാറ്റിയാലും, മറ്റുള്ള ടിയറുകളിൽ (Presentation, Application) ഒരുവിധം മാറ്റം വരുത്തേണ്ട ആവശ്യം ഉണ്ടാകില്ല.  
ഇത് ആപ്ലിക്കേഷനെ ഭാഗങ്ങളായി തിരിച്ച് സുതാര്യമായി കൈകാര്യം ചെയ്യാൻ കഴിയുന്നവിധത്തിൽ രൂപകല്പന ചെയ്യാൻ സഹായിക്കുന്നു. അതിന്റെ ഫലമായി, ഓരോ ഭാഗവും (module) സ്വതന്ത്രമായി പരിപാലിക്കാനും മാറ്റങ്ങൾ വരുത്താനും എളുപ്പമാകുന്നു. ഇത് ആപ്ലിക്കേഷൻ നന്നായി വിന്യസിക്കപ്പെട്ടതും, അറ്റകുറ്റപ്പണിക്ക് സൗകര്യപ്രദമാക്കുന്നു.

വെബ് ആപ്ലിക്കേഷനുകൾ രണ്ടുതരത്തിൽ ആർക്കിടെക്ചർ സ്വീകരിക്കാറുണ്ട്: ഒന്നാണ് സ്മാർട്ട് ക്ലയന്റ് – ഡംബ് സെർവർ എന്ന മോഡൽ, ഇവിടെ ക്ലയന്റ് (ബ്രൗസർ) തന്നെ കൂടുതലും പ്രോസസ്സിംഗ് പ്രവർത്തനങ്ങൾ നിർവഹിക്കുന്നു, സെർവർ വെറും ഡാറ്റ കൈമാറ്റത്തിനായി മാത്രം ഉപയോഗിക്കുന്നു. രണ്ടാമത്തേത് ഡംബ് ക്ലയന്റ് – സ്മാർട്ട് സെർവർ എന്നത്, ഇവിടെ ക്ലയന്റ് ഭാഗം ലളിതമായതിനാൽ മുഴുവൻ ലോജിക്, പ്രോസസ്സിംഗ്, ഡാറ്റ ഹാൻഡ്ലിങ് എന്നിവ സെർവറിൽ തന്നെ നടക്കുന്നു. ഈ രണ്ട് മോഡലുകളും ആപ്ലിക്കേഷന്റെ ആവശ്യകതയനുസരിച്ച് തിരഞ്ഞെടുക്കപ്പെടുന്നു(ലോജിക് എന്നത് പ്രോഗ്രാമിംഗ് വ്യവസ്ഥയിൽ ഉപയോഗിക്കുമ്പോൾ, അത് ഒരു സിസ്റ്റത്തിന്റെ പ്രവർത്തനം നിർണ്ണയിക്കുന്ന നിയമങ്ങളേയും തീരുമാനങ്ങളേയും സൂചിപ്പിക്കുന്നു. ഉദാഹരണത്തിന്, ഒരു വെബ് ആപ്ലിക്കേഷനിൽ "ഉപയോക്താവ് ലോഗിൻ ചെയ്തിട്ടുണ്ടോ?" എന്നത് പരിശോധിച്ച് തുടർന്നുള്ള നടപടികൾ എടുക്കുന്നതെല്ലാം ലോജിക് ആണെന്ന് പറയാം. ഇത് സാധാരണയായി കോഡിന്റെ "ബിസിനസ് ലോജിക്" ആയി കണക്കാക്കപ്പെടുന്നു, അതാണ് ഒരു ആപ്ലിക്കേഷൻ പ്രതീക്ഷിച്ച രീതിയിൽ പ്രവർത്തിക്കാൻ സഹായിക്കുന്നത്). വെബ് ആപ്ലിക്കേഷനിൽ, പ്രസന്റേഷൻ ടിയർ (Presentation Tier) എന്നത് യൂസർ ഇന്റർഫേസ് ഹാൻഡിൽ ചെയ്യുന്ന ഭാഗമാണ്, ഇത് ക്ലയന്റിൽ, അതായത് ബ്രൗസറിൽ നടക്കുന്നു. സ്റ്റോറേജ് ടിയർ (Storage Tier) എന്നത് ഡാറ്റാബേസ് സംരക്ഷിക്കുന്ന സെർവർ ഭാഗമാണ്. ബിസിനസ് ലോജിക് അല്ലെങ്കിൽ ആപ്ലിക്കേഷൻ ടിയർ (Application Tier) പ്രോസസ്സിംഗും തീരുമാനമെടുക്കലുകളും കൈകാര്യം ചെയ്യുന്ന ഭാഗമാണ്, ഇത് ക്ലയന്റിലോ സെർവറിലോ, ചിലപ്പോഴൊക്കെ ഇരുഭാഗത്തുമാകാം. ഈ മൂന്ന് ഭാഗങ്ങളും ചേർന്നാണ് ഒരു ആധുനിക വെബ് ആപ്ലിക്കേഷൻ ശരിയായി പ്രവർത്തിക്കുന്നത്.
## സുരക്ഷ
ഈ തരത്തിലുള്ള ആപ്പുകളിൽ സുരക്ഷാ ചോർച്ച പ്രധാനമായ ആശങ്കയാണ്, കാരണം ഇതിൽ സംരംഭങ്ങളുടെ വിവരങ്ങളും സ്വകാര്യ ഉപഭോക്തൃ ഡാറ്റയും ഉൾപ്പെടാം. ഈ വിവരങ്ങളെ സംരക്ഷിക്കുന്നത് ഒരു വെബ് ആപ്ലിക്കേഷൻ വികസനത്തിൽ നിർബന്ധമായ ഘടകമാണ്. അതിനാൽ തന്നെ സുരക്ഷിതമായ കോഡിംഗ് രീതി പ്രയോഗിക്കുക വളരെ പ്രധാനമാണ്. ആപ്ലിക്കേഷനെ അറ്റാക്ക് ചെയ്താൽ സംഭവിക്കാവുന്ന നഷ്ടങ്ങൾ വലുതായിരിക്കും. അതിനാൽ ഡാറ്റ എൻക്രിപ്ഷൻ, ആക്സസ് കൺട്രോൾ, ഇൻപുട്ട് വാലിഡേഷൻ പോലുള്ള പ്രവർത്തന മേഖലകൾ വികസന ഘട്ടത്തിൽ തന്നെ ഉൾപ്പെടുത്തേണ്ടതുണ്ട്. ഇത് ആധികാരികത (authentication), അധികാരപരിധി (authorization), ആസ്തികൾ കൈകാര്യം ചെയ്യൽ, ഇൻപുട്ട് പരിശോധന, ലോഗിംഗ്, ഓഡിറ്റിംഗ് എന്നിവ ഉൾപ്പെടുന്ന പ്രക്രിയകളെ ഉൾക്കൊള്ളുന്നു. ആപ്ലിക്കേഷനുകളിൽ തന്നെ സുരക്ഷാ സംവിധാനങ്ങൾ തുടങ്ങുമ്പോൾ നിന്നു തന്നെ നിർമിക്കുന്നത് ദീർഘകാലത്തിൽ കൂടുതൽ ഫലപ്രദവും കുറച്ച് തടസ്സമുള്ളതുമായ രീതിയാണ്. ഇത് സുരക്ഷാ ദൗർബല്യങ്ങൾ കുറയ്ക്കുകയും, പിന്നീട് ഇത് തിരുത്തുന്നതിനുള്ള ചിലവുകൾ ഒഴിവാക്കുകയും ചെയ്യും. സുരക്ഷയ്ക്ക് മുൻ‌ഗണന നൽകി നിർമ്മിച്ച ആപ്പുകൾ കൂടുതൽ വിശ്വസനീയവുമാണ്. ഇങ്ങനെ ചെയ്താൽ ഉപയോക്താവിന്റെ ഡാറ്റയും സ്ഥാപനത്തിന്റെ ആസ്തികളും സുരക്ഷിതമായി നിലനിർത്താൻ കഴിയും.
## സോഫ്റ്റ്വെയർ വികസിപ്പിക്കൽ
വെബ് ആപ്ലിക്കേഷനുകൾ രചിക്കുന്ന പ്രക്രിയ വെബ് ആപ്ലിക്കേഷൻ ഫ്രെയിംവർക്കുകൾ ഉപയോഗിച്ചാൽ ലളിതമാകുന്നു. ഈ ഫ്രെയിംവർക്കുകൾ ദ്രുത ആപ്ലിക്കേഷൻ വികസനത്തെ പിന്തുണയ്ക്കുന്നു. സാധാരണയായി നേരിടേണ്ട വിവിധ വികസന പ്രശ്നങ്ങൾ കൈകാര്യം ചെയ്യേണ്ടതിന്റെ ആവശ്യം ഒഴിവാക്കുന്നു, ഉദാഹരണത്തിന് ഉപയോക്തൃ മാനേജുമെന്റ് പോലുള്ളവ. അതിനാൽ തന്നെ, ഡെവലപ്പർമാർക്ക് അവരുടെ ലക്ഷ്യങ്ങൾക്ക് അനുയോജ്യമായ ഭാഗങ്ങൾക്കാണ് കൂടുതൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ കഴിയുന്നത്. ഇതിലൂടെ സമയവും ഭാരം കുറഞ്ഞ ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കാൻ സഹായിക്കുന്നു.

ഇന്റർനെറ്റിലൂടെ നേരിട്ട് പ്രവർത്തിക്കുന്ന ആപ്ലിക്കേഷനുകൾ, ഒറ്റ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം പോലെ പ്രവർത്തിക്കുന്നതിനു സാധ്യതയുണ്ട്. ഉദാഹരണത്തിന്, ബ്രൗസറിൽ തന്നെ എല്ലാവിധ പ്രവർത്തനങ്ങളും ചെയ്യാൻ കഴിയുന്ന ആപ്ലിക്കേഷനുകൾ. പക്ഷേ, ഇപ്പോഴുള്ള പ്ലാറ്റ്‌ഫോമുകൾ അതിനായി പൂർണ്ണമായും തയ്യാറായിട്ടില്ല, അതുകൊണ്ടാണ് അതെല്ലാം വികസനത്തിന്റെ ഒരു സാധ്യത മാത്രമായി നിലകൊള്ളുന്നത്.

## അവലംബം

വർഗ്ഗം:വെബ് ഡിവലപ്മെന്റ്