വിരസമായ തീരുമാനങ്ങളാണ് എന്റെ ഏറ്റവും മികച്ച തീരുമാനങ്ങളാകാൻ കാരണം

സങ്കീർണ്ണമായ കോഡ് എഴുതുന്നതാണ് ഒരു നല്ല ഡെവലപ്പർ എന്നതിന്റെ ലക്ഷണമെന്ന് ഞാൻ പണ്ട് കരുതിയിരുന്നു.

ഞാൻ തെറ്റായിരുന്നു.

ഭാവിയിൽ ഒരു multi-tenant SaaS ആയി മാറാൻ പോകുന്ന ഒരു മെഡിക്കൽ ക്ലിനിക്കിനായി ഒരു MVP രൂപകൽപ്പന ചെയ്തപ്പോൾ, ഞാൻ ഒരു കഠിനമായ പാഠം പഠിച്ചു. കോഡ് എഴുതുന്നത് എളുപ്പമുള്ള കാര്യമാണ്. എന്നാൽ എന്തൊക്കെ നിർമ്മിക്കരുത് എന്ന് തീരുമാനിക്കുന്നതാണ് ഏറ്റവും പ്രയാസമേറിയത്.

microservices, events, Kubernetes എന്നിവ ഉപയോഗിക്കണമെന്ന വലിയൊരു പ്രലോഭനം എനിക്കുണ്ടായിരുന്നു. ഒരു CV-യിൽ ഇത് കാണാൻ വളരെ മികച്ചതാണ്. എന്നാൽ microservices ഉപയോഗിക്കുന്നത് വലിയ ചിലവുള്ള കാര്യമാണ്. സങ്കീർണ്ണമായ pipelines, versioning പ്രശ്നങ്ങൾ, പ്രയാസകരമായ debugging എന്നിവയിലൂടെയാണ് നിങ്ങൾ അതിന്റെ വില നൽകേണ്ടി വരുന്നത്.

മൂന്ന് പേരുള്ള ഒരു ടീമും കുറച്ച് ഉപഭോക്താക്കളും മാത്രമുള്ളപ്പോൾ, microservices എന്നത് വെറും അധിക ജോലി മാത്രമാണ്. നിലവിൽ ഇല്ലാത്ത പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ നിങ്ങൾ ശ്രമിക്കേണ്ടി വരും.

അതിനുപകരം, ഞാൻ .NET 8-ഉം PostgreSQL-ഉം ഉപയോഗിച്ചുള്ള ലളിതമായ ഒരു layered architecture തിരഞ്ഞെടുത്തു. ഇതിന് പ്രതിമാസം ഏകദേശം $30 മാത്രമേ ചിലവ് വരുന്നുള്ളൂ.

പിന്നീട് മാറ്റം വരുത്താൻ വലിയ ചിലവ് വരുന്ന കാര്യങ്ങളിൽ, ബുദ്ധിപരവും ലാഭകരവുമായ തീരുമാനങ്ങൾ എടുക്കാൻ ഞാൻ ശ്രദ്ധിച്ചു:

• ആദ്യ ദിവസം മുതൽ എല്ലാ ടേബിളുകളിലും ഒരു TenantId കോളം ചേർത്തു. • ആദ്യത്തെ commit മുതൽ Docker ഉപയോഗിച്ചു. • WhatsApp പ്രൊവൈഡറിനായി ഒരു interface നിർമ്മിച്ചു.

ഇവ ഓരോന്നും പൂർത്തിയാക്കാൻ ഒരു ഉച്ചനേരം മതിയായിരുന്നു. ഇവ ഭാവിയിലെ migrations-നെ ലളിതമായ configuration മാറ്റങ്ങളാക്കി മാറ്റി.

ബിസിനസ് ആവശ്യങ്ങൾക്കനുസരിച്ച് പാറ്റേണുകൾ (patterns) ക്രമീകരിക്കാനും ഞാൻ പഠിച്ചു.

ഉദാഹരണത്തിന്, WhatsApp നോട്ടിഫിക്കേഷനുകൾക്കായി ഞാൻ Outbox pattern ഉപയോഗിച്ചു. ഒരു അപ്പോയിന്റ്മെന്റ് ബുക്ക് ചെയ്യുന്നത് വേഗതയുള്ളതും വിശ്വസനീയവുമാകണം. എന്നാൽ ഒരു സന്ദേശം അയക്കുന്നത് രണ്ട് സെക്കൻഡ് കഴിഞ്ഞ് നടന്നാലും കുഴപ്പമില്ല. WhatsApp പതുക്കെയാണെങ്കിൽ പോലും അപ്പോയിന്റ്മെന്റ് ബുക്കിംഗ് തടസ്സപ്പെടില്ല.

എന്നിരുന്നാലും, മെഡിക്കൽ റെക്കോർഡുകൾക്കായി ഞാൻ "eventual consistency" ഒഴിവാക്കി. ഒരു മെഡിക്കൽ ഡയഗ്നോസിസ് കൃത്യവും ഉടനടിയുള്ളതും ആയിരിക്കണം. ആരോഗ്യമേഖലയിൽ, നിയമപരമായ ആവശ്യകതകൾ യഥാർത്ഥത്തിൽ ആർക്കിടെക്ചറൽ ആവശ്യകതകൾ കൂടിയാണ്.

ഞാൻ യഥാർത്ഥ കണക്കുകളും പരിശോധിച്ചു.

ഒരു Kubernetes setup (EKS) പ്രതിമാസം $545 മുതൽ $615 വരെ ചിലവ് വരുത്തും. ഒരു AWS Fargate setup പ്രതിമാസം $350 മുതൽ $420 വരെയാണ് ചിലവ് വരുന്നത്.

ഇത് ഓരോ മാസവും $150-ലധികം ലാഭിക്കാൻ സഹായിക്കുന്നു. ഞങ്ങളുടെ നിലവിലെ ആവശ്യങ്ങൾക്ക് കൂടുതൽ ലളിതവും ലാഭകരവുമായതിനാൽ ഞാൻ Fargate തിരഞ്ഞെടുത്തു.

എന്റെ തന്ത്രം ലളിതമാണ്:

  1. ആദ്യം layers ഉപയോഗിക്കുക.
  2. ബാഹ്യമായ ഡിപെൻഡൻസികൾ (WhatsApp പോലുള്ളവ) നിങ്ങളുടെ സിസ്റ്റത്തെ ബാധിക്കാൻ തുടങ്ങുമ്പോൾ events ഉപയോഗിക്കുക.
  3. ആവശ്യകതയും ടീമിന്റെ വലിപ്പവും കൂടുമ്പോൾ മാത്രം microservices-ലേക്ക് മാറുക.

നിലവിലില്ലാത്ത ഇരുപത് ക്ലയന്റുകൾക്കായി ഡിസൈൻ ചെയ്യരുത്. ഇന്ന് നിങ്ങൾക്ക് പണം നൽകുന്ന ക്ലയന്റിനായി മാത്രം നിർമ്മിക്കുക.

Source: https://dev.to/jose_confalonieri_3891172/lo-que-aprendi-disenando-un-saas-para-clinicas-por-que-la-decision-mas-importante-fue-la-mas-4iom