सर्वरलेस कंप्यूटिंग और AWS Lambda का परिचय
\n\nसर्वरलेस आर्किटेक्चर आधुनिक क्लाउड डेवलपमेंट में प्रमुख ट्रेंड्स में से एक बन गया है। नाम के विपरीत, सर्वर अभी भी मौजूद हैं, लेकिन डेवलपर्स को अब उनके बारे में सोचने की ज़रूरत नहीं है। AWS Lambda Amazon की एक सेवा है जो सर्वर प्रबंधन के बिना कोड चलाने की अनुमति देती है। आप केवल उस कंप्यूटिंग समय के लिए भुगतान करते हैं जब आपका कोड वास्तव में निष्पादित होता है।
\n\nइस लेख में, हम विस्तार से समझेंगे कि AWS Lambda का उपयोग करके जावा में सर्वरलेस फंक्शन कैसे बनाएं। आप सीखेंगे कि प्रोजेक्ट कैसे सेट करें, पहला handler कैसे लिखें, फंक्शन को डिप्लॉय करें और वास्तविक परिस्थितियों में इसे डीबग करें।
\n\nJava-डेवलपर के लिए AWS Lambda की मूल बातें
\n\nAWS Lambda क्या है?
\n\nAWS Lambda एक Function-as-a-Service (FaaS) प्लेटफ़ॉर्म है जो इवेंट के जवाब में आपका कोड निष्पादित करता है। Lambda Java 8, 11, 17 और 21 (Corretto) को सपोर्ट करता है। फंक्शन एक अलग कंटेनर में चलता है, इनपुट के रूप में एक इवेंट (event) और कॉन्टेक्स्ट (context) प्राप्त करता है, और परिणाम लौटाता है।
\n\nमुख्य अवधारणाएँ
\n\n- \n
- Handler — आपके फंक्शन का प्रवेश बिंदु। आमतौर पर यह एक मेथड है जो
RequestHandlerयाRequestStreamHandlerइंटरफ़ेस को लागू करता है। \n - Event — डेटा जो फंक्शन में भेजा जाता है (JSON, स्ट्रिंग, बाइनरी डेटा)। \n
- Context — एक ऑब्जेक्ट जिसमें निष्पादन वातावरण के बारे में जानकारी होती है (अनुरोध ID, टाइम-आउट, फंक्शन का नाम)। \n
- Cold start — निष्क्रियता की अवधि के बाद फंक्शन के पहले कॉल पर देरी। Java के लिए यह 1-5 सेकंड हो सकता है। \n
- Layer — लाइब्रेरीज़ के साथ एक आर्काइव जिसे कई फंक्शन से जोड़ा जा सकता है। \n
पहला उदाहरण: Java पर सबसे सरल Lambda
\n\nहम एक Maven प्रोजेक्ट बनाएंगे और निर्भरता जोड़ेंगे:
\n\n<dependency>\n <groupId>com.amazonaws</groupId>\n <artifactId>aws-lambda-java-core</artifactId>\n <version>1.2.2</version>\n</dependency>\n\nअब हम handler लिखेंगे:
\n\nimport com.amazonaws.services.lambda.runtime.Context;\nimport com.amazonaws.services.lambda.runtime.RequestHandler;\n\npublic class HelloHandler implements RequestHandler<String, String> {\n\n @Override\n public String handleRequest(String input, Context context) {\n context.getLogger().log("प्राप्त: " + input);\n return "नमस्ते, " + input + "!";\n }\n}\n\nयह handler एक स्ट्रिंग प्राप्त करता है, उसे लॉग करता है और एक अभिवादन लौटाता है। फंक्शन को डिप्लॉय करने के लिए, प्रोजेक्ट को JAR में पैक करें और AWS Console में अपलोड करें या AWS CLI का उपयोग करें।
\n\nJava पर AWS Lambda के साथ उन्नत तकनीकें
\n\nJackson के माध्यम से JSON के साथ काम करना
\n\nवास्तविक प्रोजेक्ट्स में, आप JSON इवेंट को प्रोसेस करेंगे। pom.xml में Jackson जोड़ें:
<dependency>\n <groupId>com.fasterxml.jackson.core</groupId>\n <artifactId>jackson-databind</artifactId>\n <version>2.15.2</version>\n</dependency>\n\nJSON के साथ काम करने के लिए handler का उदाहरण:
\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.amazonaws.services.lambda.runtime.Context;\nimport com.amazonaws.services.lambda.runtime.RequestHandler;\nimport java.util.Map;\n\npublic class JsonHandler implements RequestHandler<Map<String, Object>, String> {\n\n private static final ObjectMapper mapper = new ObjectMapper();\n\n @Override\n public String handleRequest(Map<String, Object> event, Context context) {\n try {\n String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(event);\n context.getLogger().log("इवेंट: " + json);\n return "सफलतापूर्वक संसाधित";\n } catch (Exception e) {\n throw new RuntimeException("JSON पार्सिंग त्रुटि", e);\n }\n }\n}\n\n