TypeScript पर सर्वरलेस: आपका बैकएंड बिना सर्वर (और सिरदर्द) के
\n\nनमस्ते, साथी! यदि आपने कभी VPS सेट अप किया है, nginx से जूझा है, CPU लोड की निगरानी की है और रात के तीन बजे क्रैश हुए PostgreSQL को पुनः आरंभ किया है — यह लेख आपके लिए है। दुनिया सर्वरलेस (बिना सर्वर के कंप्यूटिंग) की ओर बढ़ रही है, और TypeScript इस ट्रेन में पूरी गति से कूदने के लिए एक आदर्श भाषा है।
\n\nआइए समझते हैं कि सर्वरलेस फंक्शन क्या हैं, उन्हें TypeScript पर कैसे लिखें, और अपने प्रोजेक्ट के लिए कौन सा प्लेटफ़ॉर्म (AWS Lambda, Google Cloud Functions, Yandex Cloud Functions) चुनें। स्पॉयलर: कोड होगा, उदाहरण होंगे, लेकिन सर्वर नहीं होंगे।
\n\nसर्वरलेस क्या है? (स्पॉयलर: सर्वर अभी भी हैं)
\n\n«सर्वरलेस» नाम एक मार्केटिंग चाल है। सर्वर निश्चित रूप से मौजूद हैं, लेकिन आप उनके बारे में कुछ नहीं जानते और जानना नहीं चाहते। आप बस एक फंक्शन (आमतौर पर TypeScript पर) लिखते हैं, इसे क्लाउड पर अपलोड करते हैं, और यह अनुरोध पर निष्पादित होता है। आप केवल निष्पादन समय के लिए भुगतान करते हैं — निष्क्रिय सर्वर या स्केलिंग के लिए नहीं।
\n\nइसे FaaS (Function as a Service) कहा जाता है। मुख्य लाभ:
\n\n- \n
- स्वचालित स्केलिंग — कुछ सेकंड में 0 से 10,000 अनुरोध प्रति सेकंड। \n
- बचत — आप निष्पादन के मिलीसेकंड के लिए भुगतान करते हैं, मशीन किराए पर लेने के लिए नहीं। \n
- कम DevOps — क्लाउड स्वयं रनटाइम वातावरण को अपडेट करता है, कमजोरियों को पैच करता है। \n
- TypeScript आउट ऑफ द बॉक्स — सभी बड़े प्रदाता Node.js का समर्थन करते हैं, और इसलिए TypeScript का भी। \n
लेकिन नुकसान भी हैं: कोल्ड स्टार्ट (लोडिंग के पहले मिलीसेकंड), निष्पादन समय की सीमा (आमतौर पर 15 मिनट), डिबगिंग में कठिनाइयाँ।
\n\nAWS Lambda के लिए TypeScript पर पहला सर्वरलेस फंक्शन लिखना
\n\nAWS Lambda सर्वरलेस का राजा है। इसके साथ शुरू करते हैं। TypeScript के लिए aws-sdk और @types/aws-lambda इंस्टॉल करें।
npm init -y\nnpm install typescript @types/node aws-lambda --save-dev\nnpx tsc --init\n\nएक फ़ाइल handler.ts बनाएँ:
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\nexport const handler = async (event: APIGatewayProxyEvent): Promise<APIGatewayProxyResult> => {\n const name = event.queryStringParameters?.name || 'अतिथि';\n \n return {\n statusCode: 200,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n message: `नमस्ते, ${name}! यह TypeScript पर एक सर्वरलेस फंक्शन है।`,\n timestamp: new Date().toISOString(),\n }),\n };\n};\n\nप्रोजेक्ट बनाएँ:
\n\nnpx tsc\nzip -r function.zip .\n\nकंसोल के माध्यम से AWS Lambda में आर्काइव अपलोड करें, रनटाइम Node.js 20.x निर्दिष्ट करें, और एंट्री पॉइंट के रूप में handler.handler सेट करें।
हो गया! अब आपके पास एक HTTP API है जिसे सर्वर की आवश्यकता नहीं है। इसे API Gateway पर लटकाकर उपयोग किया जा सकता है।
\n\nGoogle Cloud Functions: Google से TypeScript विकल्प
\n\nयदि आप Google इकोसिस्टम (Firebase, BigQuery, GCP) पसंद करते हैं, तो Google Cloud Functions आपकी पसंद है। सिंटैक्स AWS के समान है, लेकिन कुछ बारीकियाँ हैं।
\n\nटूल इंस्टॉल करें:
\n\nnpm install -g @google-cloud/functions-framework\n\nindex.ts बनाएँ:
import { Request, Response } from 'express';\n\nexport const helloWorld = (req: Request, res: Response) => {\n const name = req.query.name || 'दुनिया';\n res.json({\n message: `नमस्ते, ${name}! यह TypeScript पर Google Cloud Functions है।`,\n timestamp: new Date().toISOString(),\n });\n};\n\nस्थानीय परीक्षण के लिए:
\n\nnpx @google-cloud/functions-framework --target=helloWorld\n\nएक कमांड में डिप्लॉयमेंट:
\n\ngcloud functions deploy hello-world \\\n --runtime nodejs20 \\\n --trigger-http \\\n --allow-unauthenticated \\\n --entry-point hell