सर्वरलेस सिर्फ एक हाइप क्यों नहीं है, बल्कि आपके बटुए और नसों के लिए राहत क्यों है
\n\nकल्पना करें: आपने C# पर एक शानदार API लिखा, इसे वर्चुअल मशीन पर चलाया, और यह दिन में 23 घंटे बेकार पड़ा रहता है। आप हवा के लिए पैसे दे रहे हैं। परिचित लगता है? यदि हाँ, तो C# पर सर्वरलेस फंक्शन आपके लिए जीवन रेखा हैं। सर्वरलेस कंप्यूटिंग (या Function-as-a-Service) आपको कोड को केवल तब निष्पादित करने की अनुमति देती है जब वास्तव में इसकी आवश्यकता हो। न सर्वर किराए पर लेना, न इंफ्रास्ट्रक्चर के लिए मैन्युअल CI/CD सेटअप, न स्केलिंग का सिरदर्द।
\n\nइस लेख में, हम समझेंगे कि AWS Lambda और Azure Functions के लिए C# पर सर्वरलेस फंक्शन कैसे लिखें, उनकी तुलना करें, वास्तविक कोड लिखें और समझें कि माइक्रोसर्विसेज, इवेंट हैंडलर और मोबाइल ऐप बैकएंड के लिए यह सबसे अच्छा विकल्प क्यों है। और हाँ, यहाँ बहुत सारा कोड होगा — बिना पानी के।
\n\nAWS Lambda और C#: दो शक्तिशाली उपकरणों को कैसे जोड़ें
\n\nAWS Lambda C# Amazon Web Services के साथ काम करने वाले .NET डेवलपर्स के लिए शायद सबसे लोकप्रिय विकल्प है। Lambda .NET Core 3.1, .NET 6, .NET 8 और यहाँ तक कि .NET 9 का समर्थन करता है (पढ़ने के समय नवीनतम जाँच लें)। मुख्य लाभ यह है कि आप परिचित C# में लिखते हैं, और AWS स्वयं रनटाइम का ध्यान रखता है।
\n\nC# पर अपना पहला Lambda फंक्शन बनाना
\n\nशुरू करने के लिए, Visual Studio के लिए AWS Toolkit स्थापित करें या .NET CLI का उपयोग करें। 'AWS Lambda Project' टेम्पलेट के साथ एक प्रोजेक्ट बनाएँ।
\n\ndotnet new lambda.EmptyFunction --name HelloWorldFunction\ncd HelloWorldFunction\ndotnet add package Amazon.Lambda.Core\ndotnet add package Amazon.Lambda.Serialization.SystemTextJson\n\nअब फंक्शन लिखते हैं। क्लासिक उदाहरण — API Gateway अनुरोध को संसाधित करना और JSON लौटाना।
\n\nusing Amazon.Lambda.Core;\nusing Amazon.Lambda.Serialization.SystemTextJson;\n\n[assembly: LambdaSerializer(typeof(DefaultLambdaJsonSerializer))]\n\npublic class Function\n{\n public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest input, ILambdaContext context)\n {\n var message = $"नमस्ते, दुनिया! तुम्हारा अनुरोध: {input.Body ?? "खाली"}";\n context.Logger.LogInformation("Lambda फंक्शन कॉल किया गया");\n\n return new APIGatewayProxyResponse\n {\n StatusCode = 200,\n Body = JsonSerializer.Serialize(new { message, timestamp = DateTime.UtcNow }),\n Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }\n };\n }\n}\n\nध्यान दें: कोड एसिंक्रोनस है, बिल्ट-इन JSON सीरियलाइज़ेशन और लॉगिंग का उपयोग करता है। यह न्यूनतम व्यवहार्य उत्पाद है जो पहले से ही लोड के तहत काम कर सकता है।
\n\nC# के लिए AWS Lambda क्यों जीतता है?
\n- \n
- Cold start: AWS ने SnapStart के माध्यम से .NET फंक्शन के स्टार्टअप को अनुकूलित किया है — अब स्टार्ट 200 ms से कम समय लेता है। \n
- एकीकरण: बॉक्स से बाहर S3, DynamoDB, SQS, API Gateway के साथ काम करता है। \n
- निगरानी: CloudWatch लॉग, मेट्रिक्स, त्रुटियाँ एकत्र करता है। \n
C# के लिए Azure Functions: Microsoft से एक योग्य विकल्प
\n\nयदि आपका प्रोजेक्ट पहले से ही Microsoft इकोसिस्टम (Azure DevOps, Active Directory, SQL Server) से जुड़ा है, तो Azure Functions C# अधिक सुविधाजनक हो सकता है। वे न केवल आइसोलेटेड प्रोसेस (isolated process) बल्कि इन-प्रोसेस मॉडल का भी समर्थन करते हैं।
\n\nAzure के लिए C# फंक्शन का उदाहरण
\n\nAzure Functions Core Tools का उपयोग करके एक HTTP ट्रिगर बनाएँ:
\n\nfunc init MyFunctionApp --dotnet-isolated\ncd MyFunctionApp\nfunc new --name HttpExample --template "HTTP trigger"\n\nफंक्शन कोड:
\n\nusing Microsoft.Azure.Functions.Worker;\nusing Microsoft.Extensions.Logging;\n\npublic class HttpExample\n{\n private readonly ILogger<HttpExample> _logger;\n\n public HttpExample(ILogger<HttpExample> logger)\n {\n _logger