नोट 1: यहां होस्ट किया गया इंटरैक्टिव डेमो है: डेमो.saasconstruct.com
नोट 2: प्रत्येक SaaS सेटअप के लिए मेरा मासिक बिल 3-5$ प्रति माह है, और यह ज्यादातर सीआई/सीडी लागत है।
नोट 3: टेम्पलेट यहां है: saasconstruct.com।
मैंने AWS पर कई AI PoCs और MVP किए हैं, और यह हमेशा समान चीजें होती हैं:
इसलिए, मैंने सोचा कि मैं AWS पर ऐसी चीज़ों को बूटस्ट्रैप करने के लिए एक सरल समाधान बनाऊंगा। और इसके बारे में एक ब्लॉग पोस्ट लिखें।
मैंने कुछ सुविधाएँ जोड़ने का निर्णय लिया, जैसे स्ट्राइप भुगतान (और यदि आप बिक्री कर/वैट के बारे में चिंता नहीं करना चाहते हैं तो लेमनस्क्वीज़ी भुगतान) और भुगतान प्रबंधन, प्रमाणीकरण, ट्रैफ़िक अलार्म, और अन्य। मैंने यह भी सोचा कि इसे कॉन्फ़िगर करने योग्य बनाने की आवश्यकता है, जैसे लंबे कार्यों के लिए एपीआई गेटवे और एडब्ल्यूएस लैम्ब्डा को ईएलबी और ईसीएस से बदलना।
मैंने शुरुआत के लिए आम तौर पर घोषित सबसे आसान ढांचा चुना। यह Vue है, और, जहां तक मैं समझता हूं, वहां दूसरा सबसे लोकप्रिय ढांचा है। मैंने इसे इसलिए चुना क्योंकि न केवल यह सबसे आसान है, बल्कि मुझे इसके साथ कुछ अनुभव भी है।
वेबसाइट एक मानक एसपीए एप्लिकेशन है जिसमें वाइट एक बिल्ड टूल है। स्टाइलिंग के लिए, मैं बूटस्ट्रैप का उपयोग करता हूं क्योंकि इसके साथ काम करना भी बहुत आसान है, और इसलिए भी क्योंकि फ्रंटएंड फ्रेमवर्क के एक संस्करण से दूसरे संस्करण में माइग्रेट करते समय यह बहुत अधिक दर्द का कारण नहीं बनता है।
दो विकल्प हैं:
मैं फ्रंटएंड होस्टिंग समाधानों में AWS के प्राथमिक फोकस के रूप में एम्प्लीफाई होस्टिंग के साथ गया था और क्योंकि इसे सेट करना, डोमेन संलग्न करना आदि आसान है।
चूँकि यह 'पे-एज़-यू-गो' आधार है, इसलिए मैंने एक ट्रैफ़िक अलार्म स्थापित किया है: यदि प्रति 10 सेकंड में एक निश्चित संख्या से अधिक हिट होती है, तो मुझे एक अधिसूचना मिलती है।
बैकएंड एपीआई गेटवे है, जो दर सीमित करता है, और एडब्ल्यूएस लैम्ब्डा (पायथन), जो व्यवसाय और सामान्य तर्क करता है:
मेरे पास एक और AWS लैम्ब्डा फ़ंक्शन भी है जो कॉग्निटो में साइन अप करने के बाद डेटाबेस में एक उपयोगकर्ता बनाता है।
साझा उपयोगिताएँ हैं जहाँ मैंने कुछ साझा कार्यक्षमताएँ रखी हैं, उदाहरण के लिए, ईमेल करना। इसके अलावा, लॉगिंग कार्यक्षमता, उदाहरण के लिए, यदि कोई भुगतान त्रुटि होती है तो मुझे एक ईमेल भेजा जाता है।
प्रमाणीकरण कठिन है, मैं जानता हूं, और मैं तृतीय-पक्ष सेवा का उपयोग नहीं करना चाहता था। इसलिए मैं AWS Cognito के साथ रहा। यह काफी सस्ता है।
आप कह सकते हैं, बस AWS Amplify Auth (जो AWS कॉग्निटो के चारों ओर एक आवरण है) का उपयोग करें, लेकिन मुझे इससे कुछ समस्याएं थीं। मैंने Reddit पर एक पोस्ट भी लिखी:
प्रमाणीकरण के लिए एम्प्लीफाई के साथ मेरी समस्याओं की सूची
और कुछ निराश उपयोगकर्ता की और भी बड़ी सूची वाली एक और पोस्ट है (हालाँकि यह एक पुरानी पोस्ट है)।
यहाँ
इसके अलावा, यदि आप केवल एम्प्लीफाई का उपयोग करते हैं, तो आप पूरे पारिस्थितिकी तंत्र में फंस गए हैं और कुछ भी बदलने का कोई मौका नहीं है। उदाहरण के लिए, यदि आप क्लाउडफ्रंट वितरण तक पहुंच चाहते हैं (उदाहरण के लिए, जब आप कुछ क्षेत्रों को जियो-ब्लॉक करना चाहते हैं), तो दुर्भाग्य से, आप इसे एम्प्लीफाई होस्टिंग के साथ नहीं देख सकते हैं। मेरे पास अन्य मुद्दे भी थे: उदाहरणों में से एक एम्प्लीफाई संसाधनों से सीडीके निर्माण था, जो मेरे लिए एक परेशानी का विषय था।
तो मैंने जो किया वह एक हाइब्रिड दृष्टिकोण है (जो Reddit के अनुसार कुछ हद तक लोकप्रिय है): AWS Amplify JS लाइब्रेरी आपको अपने द्वारा बनाए गए क्लाउड संसाधनों को आयात करने की अनुमति देता है, जैसे उपयोगकर्ता पूल, इसलिए मैंने उन्हें बनाया सीडीके के साथ और फिर प्रमाणीकरण के लिए एम्प्लीफाई जेएस लाइब्रेरी का उपयोग किया।
इस मामले में, मैं हमेशा जो कुछ भी चाहता हूं उसे बदल सकता हूं, क्लाउड संसाधनों को स्वैप कर सकता हूं (उदाहरण के लिए, अगर मुझे क्लाउडफ्रंट वितरण तक पहुंच की आवश्यकता है तो मैं एम्प्लीफाई होस्टिंग से क्लाउडफ्रंट एस3 पर जा सकता हूं)।
AWS SES। यह मुख्य AWS ईमेल सेवा है। यह सब कुछ भेजता है, जिसमें कॉग्निटो प्रमाणीकरण ईमेल, संपर्क फ़ॉर्म से अनुरोध आदि शामिल हैं। केवल एक चीज जिसे आपको समझने की आवश्यकता है वह यह है कि आपके डेव एडब्ल्यूएस खाते में, आपको भेजने में सक्षम होने के लिए पहले सत्यापित पहचान बनाने की आवश्यकता होगी (मैंने इसे इसके माध्यम से स्वचालित किया है) IaC), और उत्पादन AWS खाते में, आपको उत्पादन पहुंच का अनुरोध करना होगा (जो कि केवल कुछ क्लिक है)।
AWS SES का उपयोग करके, ईमेल सूचनाएं निम्नलिखित परिदृश्यों में भेजी जाती हैं:
DynamoDB एक डेटाबेस के रूप में। आसान, तेज़ और प्रबंधित। हां, मुझे एक्सेस पैटर्न के बारे में सोचना पड़ा, लेकिन आम तौर पर, इसके साथ काम करना अच्छा होता है और सत्यापन/निर्माण करते समय मुझे कुछ भी खर्च नहीं करना पड़ता है। चूंकि मैं कई उत्पादों पर काम करने की योजना बना रहा हूं और उन्हें अलग रखना चाहता हूं, इसलिए मैं प्रति प्रोजेक्ट डेव और प्रोडक्ट खातों में आरडीएस/डॉक्यूमेंटडीबी नहीं डाल सकता (इसकी लागत बहुत अधिक है)।
मैंने दो भुगतान प्रणालियाँ जोड़ीं, और यह चुनना संभव है कि किसका उपयोग किया जाए क्योंकि वे समान रूप से काम करती हैं:
मैंने स्ट्राइप/लेमनस्क्वीज़ी वेबहुक के लिए कुछ अंतिम बिंदु लिखे हैं, जो सभी तर्कों को संभालते हैं।
तो चुनने के लिए बहुत सारी चीज़ें हैं:
मैंने AWS CDK चुना, और यहां मेरे कारण हैं:
मैंने टेराफॉर्म को न चुनने का कारण यह बताया कि सीडीके आसान है; यह सरल तरीके से संसाधन बनाने की अनुमति देता है, कम से कम मेरी राय में। मुझे ओओपी पसंद है और मैं उसी के अनुसार अपना क्लाउड इंफ्रास्ट्रक्चर बनाने का प्रयास करता हूं। एक बड़ा लाभ यह है कि सीआई/सीडी (सीडीके पाइपलाइन) शामिल है, इसलिए मुझे इसका आविष्कार करने की ज़रूरत नहीं है।
मैंने सीडीके पाइपलाइन को चुना क्योंकि यह फिर से आसान है। बस पाइपलाइन को GitHub रिपॉजिटरी से कनेक्ट करें, और आप जाने के लिए तैयार हैं। विकास शाखा को गिट पुश -> इसे विकास खाते में ले जाया जाएगा। मुख्य (या पुल अनुरोध) पर गिट पुश -> उत्पादन रोलआउट।
मैंने एपीआई गेटवे के माध्यम से स्पैम होने से रोकने के लिए रेट लिमिटिंग की स्थापना की है। मैंने दो क्लाउडवॉच अलार्म:
स्थापित किए हैंमैंने बिलिंग अलार्म भी स्थापित किया है ताकि मुझे सूचित किया जा सके कि क्या मैं बहुत अधिक खर्च करने वाला हूं।
CloudWatch इवेंट लॉग करता है, आप उन्हें AWS कंसोल में और सीधे IDE में एक्सटेंशन के माध्यम से देख सकते हैं।
विकल्प OpenAI (GPT मॉडल के साथ) या AWS बेडरॉक (क्लाउड मॉडल के साथ) का उपयोग करने के बीच था। यह निर्णय चुनौतीपूर्ण था क्योंकि, जबकि क्लाउड के साथ AWS बेडरॉक AWS के साथ आसानी से एकीकृत हो जाता है, OpenAI का अधिक सामान्यतः उपयोग किया जाता है। दोनों कंपनियां शीर्ष स्तरीय एआई मॉडल पेश करती हैं। अभी के लिए, मैंने AWS Badrock के साथ बने रहना चुना है। यह भविष्य में बदल सकता है, लेकिन अभी के लिए, मैं सरलता की सराहना करता हूँ। वेक्टर डेटाबेस के लिए, मैं पाइनकोन का उपयोग करता हूं, जिसमें सर्वर रहित इंडेक्स हैं।
मेरे द्वारा यहां बनाए गए एआई एप्लिकेशन का एक उदाहरण एक आरएजी सिस्टम है, जो अनिवार्य रूप से एक चैटबॉट है जो आपके डेटा के आधार पर सवालों के जवाब दे सकता है। आप एक वेक्टर डेटाबेस में जानकारी संग्रहीत करते हैं, और क्वेरी पर, आप एक समानता खोज करते हैं, और फिर उस खोज के परिणाम के आधार पर उत्तर देने के लिए एलएलएम का उपयोग करते हैं। मैं वर्तमान में लागत से बचने के लिए सरल मॉडल का उपयोग करता हूं, लेकिन विभिन्न मॉडलों पर स्विच करना कोड की एक पंक्ति को बदलने जितना आसान है।
मैं शुरू में एक जावा डेवलपर था, लेकिन फिर एक पायथन डेवलपर बन गया क्योंकि मैंने मशीन लर्निंग और डीप लर्निंग सेवाएं विकसित कीं। उस क्षेत्र में अधिकांश पुस्तकालय पायथन में विकसित किए गए हैं या पायथन रैपर की विशेषता वाले हैं। इसके अलावा, पायथन AWS के साथ सहजता से एकीकृत होता है, चाहे वह AWS लैम्ब्डा में हो (उदाहरण के लिए, AWS लैम्ब्डा पॉवरटूल्स लाइब्रेरी का उपयोग करके) या CDK में। तो अंत में, बैकएंड और क्लाउड इंफ्रास्ट्रक्चर (सीडीके के माध्यम से) दोनों को पायथन में लागू किया जाता है।
फ्रंटएंड फ्रेमवर्क के साथ इसकी लोकप्रियता के कारण मेरी द्वितीयक भाषा टाइपस्क्रिप्ट है। जब मैं जावास्क्रिप्ट के साथ काम करता था, तो जैसे-जैसे कोडबेस बड़ा होता गया, मुझे प्रकारों की अनुपस्थिति भ्रमित करने वाली लगी। टाइपस्क्रिप्ट की स्थिर टाइपिंग विकास के दौरान, विशेष रूप से बड़ी परियोजनाओं में, बहुत आवश्यक स्पष्टता और सुरक्षा प्रदान करती है।
चूंकि मेरे पास अधिक ट्रैफ़िक लोड नहीं है, इसलिए मेरी AWS लागत बहुत कम है, आमतौर पर $3-5 प्रति माह, मुख्य रूप से CI/CD खर्चों के कारण।
सेटअप में एक CDN (एम्प्लीफाई होस्टिंग द्वारा प्रदान किया गया) और AWS लैम्ब्डा के भीतर एक छोटी कैशिंग परत शामिल है। इसके अतिरिक्त, कुछ सेवाएँ AWS फ्री टियर के अंतर्गत आती हैं, जिससे मेरी लागत और कम हो जाती है।
जैसे-जैसे उत्पाद बढ़ता है और अधिक उपयोगकर्ता प्राप्त होते हैं, मुझे प्रावधानित DynamoDB पर स्विच करके और DAX (DynamoDB Accelerator) लागू करके संसाधनों को अनुकूलित करने की आवश्यकता हो सकती है। हालाँकि, अभी के लिए, यह सेटअप पूरी तरह से काम करता है।
यह समाधान मेरी वर्तमान जरूरतों को कुशलता से पूरा करता है।
मैंने SaaSConstruct पर अपने AWS टेम्पलेट में इस संपूर्ण तकनीकी स्टैक को बॉयलरप्लेट (जिसे मैं सक्रिय रूप से विकसित और अद्यतन करता हूं) के रूप में शामिल किया है।
मैं अतिरिक्त सुविधाओं की खोज जारी रखूंगा जिन्हें इसकी क्षमताओं को बढ़ाने के लिए इस सेटअप में शामिल किया जा सकता है...
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3