Go और Serverless: AWS Lambda फ़ंक्शन कैसे लिखें जिससे Python डेवलपर ईर्ष्या करें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go Serverless का नया राजा क्यों है (और बस)?

\n\n

जब serverless आर्किटेक्चर की बात आती है, तो अधिकांश डेवलपर्स के दिमाग में JavaScript (Node.js) या Python आता है। यह तार्किक है: वे सरल, लोकप्रिय हैं, और उनके लिए ढेरों ट्यूटोरियल लिखे गए हैं। लेकिन एक समस्या है: कोल्ड स्टार्ट।

\n\n

कल्पना करें: आप Python पर Lambda फ़ंक्शन चला रहे हैं। निष्क्रियता के बाद पहला अनुरोध 3-5 सेकंड में प्रोसेस होता है। उपयोगकर्ता प्रतीक्षा करता है। व्यवसाय पैसे खोता है। अब उसी फ़ंक्शन की कल्पना Go पर करें: 100-200 मिलीसेकंड। अंतर महसूस कर रहे हैं?

\n\n

Go (Golang) एक ऐसी भाषा है जो Google की गहराइयों में उन कार्यों को हल करने के लिए बनाई गई है जहाँ प्रदर्शन और सरलता महत्वपूर्ण है। serverless की दुनिया में, यह तीन प्रमुख लाभ देता है:

\n
    \n
  • तत्काल कोल्ड स्टार्ट — संकलित बाइनरी मिलीसेकंड में शुरू होती है।
  • \n
  • कम मेमोरी खपत — आप कम भुगतान करते हैं, लेकिन अधिक पाते हैं।
  • \n
  • एक बाइनरी — कोई निर्भरता नहीं, बस अपलोड करें और भूल जाएँ।
  • \n
\n\n

इस लेख में, हम AWS Lambda के लिए Go पर serverless फ़ंक्शन लिखने का तरीका समझेंगे, वास्तविक कोड उदाहरण देखेंगे और विकल्पों से तुलना करेंगे। यदि आप Python फ़ंक्शन के "गर्म होने" की प्रतीक्षा करते-करते थक गए हैं — स्वागत है।

\n\n

AWS Lambda को Go पर कैसे सेट करें: चरण-दर-चरण गाइड

\n\n

कोड लिखने से पहले, आइए टूलिंग को समझते हैं। AWS Lambda पर Go के साथ काम करने के लिए आपको चाहिए:

\n
    \n
  • स्थापित Go (संस्करण 1.21+)।
  • \n
  • उपयोगिता aws-cli (या AWS कंसोल)।
  • \n
  • Handler क्या है, इसकी बुनियादी समझ।
  • \n
\n\n

चरण 1. प्रोजेक्ट बनाएँ

\n

एक नई निर्देशिका बनाएँ और मॉड्यूल को इनिशियलाइज़ करें:

\n
mkdir go-lambda-example\ncd go-lambda-example\ngo mod init example.com/lambda
\n\n

चरण 2. पहला फ़ंक्शन लिखें

\n

एक फ़ाइल main.go बनाएँ। यहाँ Go पर serverless फ़ंक्शन का एक न्यूनतम उदाहरण है जो JSON को प्रोसेस करता है और उत्तर देता है:

\n
package main\n\nimport (\n    "context"\n    "fmt"\n\n    "github.com/aws/aws-lambda-go/lambda"\n)\n\n// MyEvent — इनकमिंग इवेंट की संरचना\ntype MyEvent struct {\n    Name string `json:"name"`\n}\n\n// MyResponse — उत्तर की संरचना\ntype MyResponse struct {\n    Message string `json:"message"`\n    Status  int    `json:"status"`\n}\n\n// HandleRequest — Lambda का मुख्य हैंडलर\nfunc HandleRequest(ctx context.Context, event MyEvent) (MyResponse, error) {\n    if event.Name == "" {\n        return MyResponse{Message: "Hello, anonymous!", Status: 200}, nil\n    }\n    return MyResponse{\n        Message: fmt.Sprintf("Hello, %s! Welcome to serverless with Go.", event.Name),\n        Status:  200,\n    }, nil\n}\n\nfunc main() {\n    lambda.Start(HandleRequest)\n}
\n\n

महत्वपूर्ण: फ़ंक्शन को context.Context स्वीकार करना चाहिए और (T, error) लौटाना चाहिए। Go Lambda के लिए यह मानक है।

\n\n

चरण 3. Linux के लिए संकलित करें

\n

AWS Lambda Linux पर चलता है, इसलिए बाइनरी को इस OS के लिए बनाया जाना चाहिए:

\n
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go
\n

ध्यान दें: आउटपुट फ़ाइल का नाम bootstrap होना चाहिए — Go के लिए AWS Lambda की यह आवश्यकता है।

\n\n

चरण 4. पैक करें और अपलोड करें

\n

बाइनरी को ZIP में पैक करें:

\n
zip function.zip bootstrap
\n

अब इसे कंसोल या CLI के माध्यम से AWS Lambda पर अपलोड करें। हो गया! आपका पहला serverless फ़ंक्शन Go पर काम कर रहा है।

\n\n

उन्नत उदाहरण: S3 और DynamoDB के साथ काम करना

\n

अब जब बुनियादी बातें समझ में आ गई हैं, तो आइए कुछ उपयोगी लिखें। मान लीजिए, हमें S3 में फ़ाइल अपलोड को प्रोसेस करना है और DynamoDB में मेटाडेटा स्टोर करना है। यह serverless के लिए एक क्लासिक परिदृश्य है।

\n\n

आवश्यक SDK स्थापित करें:

\n
go get github.com/aws/aws-lambda-go/events\ngo get github.com/aws/aws-sdk-go-v2/service/s3\ngo get github.com/aws/aws-sdk-go-v2/service/dynamodb
\n\

ब्लॉग

पुस्तक अनुशंसाएँ