𝗪𝗵𝘆 𝘁𝗵𝗲 𝗯𝗼𝗿𝗶𝗻𝗴 𝗱𝗲𝗰𝗶𝘀𝗶𝗼𝗻𝘀 𝘄𝗲𝗿𝗲 𝗺𝘆 𝗯𝗲𝘀𝘁 𝗱𝗲𝗰𝗶𝘀𝗶𝗼𝗻𝘀

मला वाटायचे की एक चांगला डेव्हलपर होणे म्हणजे क्लिष्ट कोड लिहिणे.

मी चुकीचा होतो.

एका मेडिकल क्लिनिकसाठी MVP डिझाइन करताना, जे भविष्यात मल्टी-टेनंट SaaS बनेल, मला एक कठीण धडा मिळाला. कोड हा सोपा भाग आहे. कठीण भाग म्हणजे काय 'बनवायचे नाही' हे ठरवणे.

मायक्रोसर्व्हिसेस (microservices), इव्हेंट्स (events) आणि Kubernetes वापरण्याचा मोह होता. हे CV वर खूप छान दिसते. पण मायक्रोसर्व्हिसेसची किंमत मोठी असते. क्लिष्ट पाइपलाइन्स, व्हर्जनिंगच्या समस्या आणि कठीण डीबगिंग (debugging) यामुळे तुम्हाला त्याची मोठी किंमत मोजावी लागते.

तीन लोकांची टीम आणि मोजकेच युजर्स असताना, मायक्रोसर्व्हिसेस म्हणजे फक्त अतिरिक्त काम आहे. तुम्ही अशा समस्या सोडवत असता ज्या अजून तुमच्याकडे आहेतच नाहीत.

त्याऐवजी, मी .NET 8 आणि PostgreSQL सह एक साधी लेअर्ड आर्किटेक्चर (layered architecture) निवडली. याचा खर्च महिन्याला सुमारे $30 येतो.

मी अशा स्मार्ट आणि स्वस्त निर्णयांवर लक्ष केंद्रित केले, जे नंतर बदलणे महाग पडू शकते:

• पहिल्या दिवसापासून प्रत्येक टेबलमध्ये TenantId कॉलम जोडला. • पहिल्या कमिटपासून Docker वापरले. • WhatsApp प्रोव्हायडरसाठी एक इंटरफेस तयार केला.

या गोष्टींसाठी प्रत्येकी फक्त एक दुपार लागली. यामुळे भविष्यातील मायग्रेशन्स (migrations) साध्या कॉन्फिगरेशन बदलांमध्ये रूपांतरित झाले.

मी व्यवसायाच्या गरजांनुसार पॅटर्नमध्ये तडजोड करायलाही शिकलो.

उदाहरणार्थ, मी WhatsApp नोटिफिकेशन्ससाठी Outbox पॅटर्न वापरला. अपॉइंटमेंट बुक करणे जलद आणि विश्वसनीय असणे आवश्यक आहे. मेसेज पाठवणे दोन सेकंद उशिरा होऊ शकते. जर WhatsApp स्लो असेल, तरीही अपॉइंटमेंट प्रक्रिया सुरळीत चालते.

मात्र, मी मेडिकल रेकॉर्ड्ससाठी "eventual consistency" नाकारले. वैद्यकीय निदान अचूक आणि त्वरित असणे आवश्यक आहे. आरोग्य क्षेत्रात, कायदेशीर आवश्यकता या प्रत्यक्षात आर्किटेक्चरल आवश्यकता असतात.

मी प्रत्यक्ष गणिताचाही विचार केला.

Kubernetes सेटअप (EKS) चा खर्च महिन्याला $545 ते $615 येईल. AWS Fargate सेटअपचा खर्च महिन्याला $350 ते $420 येईल.

म्हणजे दरमहा $150 पेक्षा जास्त बचत होते. मी Fargate निवडले कारण आमच्या सध्याच्या आकारमानासाठी ते अधिक सोपे आणि स्वस्त आहे.

माझी रणनीती सोपी आहे:

  1. प्रथम लेयर्स (layers) वापरा.
  2. जेव्हा बाह्य अवलंबित्व (external dependencies) (जसे की WhatsApp) तुमच्या सिस्टमवर परिणाम करू लागतील, तेव्हा इव्हेंट्स (events) वापरा.
  3. जेव्हा कामाचा व्याप आणि टीमचा आकार आवश्यक असेल, तेव्हाच मायक्रोसर्व्हिसेसकडे वळा.

तुमच्याकडे नसलेल्या वीस क्लायंट्ससाठी डिझाइन करू नका. जो क्लायंट आज तुम्हाला पैसे देत आहे, त्याच्यासाठी उत्पादन तयार करा.

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