𝗪𝗵𝘆 𝗗𝗼𝗺𝗮𝗶𝗻 𝗠𝗼𝗱𝗲𝗹𝘀 𝗠𝗮𝘁𝘁𝗲𝗿 𝗠𝗼𝗿𝗲 𝗶𝗻 𝘁𝗵𝗲 𝗔𝗜 𝗘𝗿𝗮

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

നമ്മുടെ ഡിസൈനുകൾ പരിശോധിക്കാൻ നമുക്കൊരു മാർഗ്ഗം ആവശ്യമാണ്. 'എസൻഷ്യൽ കോംപ്ലക്സിറ്റിയും' (essential complexity) 'ആക്സിഡന്റൽ കോംപ്ലക്സിറ്റിയും' (accidental complexity) തമ്മിൽ വേർതിരിക്കേണ്ടതുണ്ട്. എസൻഷ്യൽ കോംപ്ലക്സിറ്റി എന്നത് യഥാർത്ഥ പ്രശ്നമാണ്. എന്നാൽ ആക്സിഡന്റൽ കോംപ്ലക്സിറ്റി എന്നത് നമ്മുടെ ടൂളുകളും പ്രക്രിയകളും ഉപയോഗിച്ച് നമ്മൾ തന്നെ സൃഷ്ടിക്കുന്ന കുഴപ്പങ്ങളാണ്.

AI ഉപയോഗിച്ച് ഇംപ്ലിമെന്റേഷൻ (implementation) എന്നത് ഇപ്പോൾ വളരെ എളുപ്പമായിരിക്കുന്നു. ഇതൊരു വലിയ മാറ്റമാണ്. പണ്ട്, കോഡ് എഴുതുന്നതിലെ പ്രയാസങ്ങൾ മികച്ച ഘടനകൾ (structures) നിർമ്മിക്കാൻ ഡെവലപ്പർമാരെ പ്രേരിപ്പിച്ചിരുന്നു. നിങ്ങളുടെ കോഡ് കുഴപ്പത്തിലാണെങ്കിൽ അത് കൈകാര്യം ചെയ്യാൻ പ്രയാസമായിരുന്നു. ആ പ്രയാസം ഒരു ഫീഡ്‌ബാക്ക് ലൂപ്പ് (feedback loop) ആയി പ്രവർത്തിച്ചിരുന്നു.

AI ആ പ്രയാസങ്ങളെ ഇല്ലാതാക്കുന്നു. വൃത്തിയുള്ള കോഡ് പോലെ തന്നെ വേഗത്തിൽ മോശമായ രീതിയിൽ ഘടനയില്ലാത്ത കോഡും എഴുതാൻ ഇതിന് കഴിയും. ഒരു മോശം മോഡലിന്റെ പ്രത്യാഘാതങ്ങൾ ഇനി ബിൽഡ് (build) സമയത്ത് ഡെവലപ്പർ അനുഭവിക്കേണ്ടി വരില്ല. പകരം, ആ പ്രശ്നങ്ങൾ പ്രൊഡക്ഷൻ (production) ഘട്ടത്തിലേക്ക് നീങ്ങുന്നു. ഇത് ഡാറ്റാ തകരാറുകൾക്കും (corrupt data) അസാധ്യമായ ഇന്റഗ്രേഷൻ ജോലികൾക്കും കാരണമാകുന്നു.

ഇത് തടയാനുള്ള ഒരു മാർഗ്ഗമാണ് 'റിച്ച് ഡൊമെയ്ൻ മോഡൽ' (rich domain model). ഇത് പ്രധാനമായും മൂന്ന് കാര്യങ്ങൾ ചെയ്യുന്നു:

  • ആശയങ്ങൾക്ക് കൃത്യമായ രൂപം നൽകാൻ നിർബന്ധിക്കുന്നതിലൂടെ ഡൊമെയ്ൻ പഠിക്കാൻ ഇത് നിങ്ങളെ സഹായിക്കുന്നു.
  • ഇത് ഡൊമെയ്‌നെ കൃത്യമായി നിർവചിക്കുന്നു, അതിനാൽ "എന്താണ് നിർമ്മിക്കേണ്ടത്" എന്നത് ഒരു ഊഹം മാത്രമായി അവശേഷിക്കില്ല.
  • കംപൈലർ (compiler) വഴി എപ്പോഴും പുതുക്കപ്പെട്ട നിലയിൽ കോഡിലൂടെ ഡൊമെയ്‌നെ ഇത് രേഖപ്പെടുത്തുന്നു.

ഒരു ഡൊമെയ്ൻ മോഡൽ ഫലപ്രദമാകാൻ മൂന്ന് നിയമങ്ങൾ പാലിക്കേണ്ടതുണ്ട്:

  • എസൻഷ്യൽ കോംപ്ലക്സിറ്റി ഒരൊറ്റ ഭാഗമായി നിലനിർത്തുക. ഒരു ആശയത്തെ നൂറുകണക്കിന് മൈക്രോ സർവീസുകളിലായി (microservices) ചിതറിക്കിടക്കരുത്.
  • ഫീഡ്‌ബാക്ക് നൽകുക. തെറ്റായ ഒരു അനുമാനം ഒരു സൈലന്റ് ബഗ്ഗായി (silent bug) മാറുന്നതിന് പകരം ഒരു കംപൈൽ എറർ (compile error) ആയി മാറണം.
  • മാറ്റങ്ങൾ എളുപ്പമാക്കുക. ഒരു ആശയം തിരുത്തണമെങ്കിൽ അത് ഒരിടത്ത് മാത്രം ചെയ്താൽ മതിയാകണം, പത്ത് സർവീസുകളിൽ തിരഞ്ഞു നടക്കേണ്ടി വരരുത്.

"ബ്ലോട്ട്" (bloat) ഒഴിവാക്കാൻ വേണ്ടി ഡൊമെയ്‌നെ വളരെ നേരത്തെ തന്നെ മൈക്രോ സർവീസുകളായി വിഭജിച്ചാൽ, നിങ്ങൾ യഥാർത്ഥത്തിൽ ആ കുഴപ്പങ്ങളെ മറ്റൊരു രൂപത്തിലേക്ക് മാറ്റുക മാത്രമാണ് ചെയ്യുന്നത്. ഒരു "ഗോഡ് ഒബ്ജക്റ്റിന്" (god object) പകരം ട്രാക്ക് ചെയ്യാൻ പ്രയാസമുള്ള ഒരു വിതരണം ചെയ്ത കുഴപ്പമാണ് (distributed mess) നിങ്ങൾ ഉണ്ടാക്കുന്നത്. നിങ്ങൾക്ക് കാണാൻ കഴിയാത്ത ഒരു ഡിപെൻഡൻസി (dependency), പ്രൊഡക്ഷനിൽ തകരാറുകൾ ഉണ്ടാക്കാൻ സാധ്യതയുള്ള ഒന്നാണ്.

ഒരു റിച്ച ഡൊമെയ്ൻ മോഡലിന്റെ ലക്ഷ്യം എപ്പോഴും ശരിയായിരിക്കുക എന്നതല്ല. മറിച്ച്, തെറ്റുകൾ സംഭവിക്കുമ്പോൾ അവ തിരുത്താനുള്ള ചിലവ് കുറവായിരിക്കുമ്പോൾ തന്നെ ആ തെറ്റുകൾ തിരിച്ചറിയാൻ സാധിക്കുക എന്നതാണ്.

Source: https://dev.to/leonpennings/what-is-the-reason-for-using-a-rich-domain-model-in-the-age-of-ai-3gg

Optional learning community: https://t.me/GyaanSetuAi