सर्वररहित AWS Lambda विकास · पाठ

सर्वररहित आर्किटेक्चरल पैटर्न

जटिल व्यावसायिक समस्याओं को कुशलतापूर्वक हल करने के लिए फैन-आउट, स्कैटर-गैदर और इवेंट सोर्सिंग जैसे सामान्य सर्वररहित आर्किटेक्चरल पैटर्न का अन्वेषण और उपयोग कीजिए।

पाठ 3, कुल 4 में से11 चरण

सर्वररहित आर्किटेक्चरल पैटर्न, CoddyKit पर सर्वररहित AWS Lambda विकास का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह सर्वररहित AWS Lambda विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। सर्वररहित AWS Lambda विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

सर्वररहित पैटर्न क्या हैं

सर्वररहित विकास में, हमें अक्सर एक जैसी चुनौतियों का सामना करना पड़ता है। आर्किटेक्चरल पैटर्न इन सामान्य समस्याओं के प्रमाणित और दोबारा उपयोग किए जा सकने वाले समाधान हैं।

ये विभिन्न सेवाओं के बीच संपर्क के लिए एक खाका प्रदान करके हमें ऐसे सर्वररहित अनुप्रयोग डिज़ाइन करने में सहायता करते हैं जो मापनीय, लचीले और आसानी से अनुरक्षित हों।

फैन-आउट पैटर्न

फैन-आउट पैटर्न तब होता है जब एकल इनपुट इवेंट कई समानांतर प्रक्रियाओं या कार्रवाइयों को ट्रिगर करता है। इसे पानी में फेंके गए एक पत्थर से उत्पन्न लहरों के प्रभाव जैसा समझें।

यह पैटर्न सेवाओं को अलग-अलग रखने और समवर्ती कार्य करने के लिए बहुत उपयोगी है। उदाहरण के लिए, नई फ़ाइल अपलोड को एक ही समय में कई अलग-अलग तरीकों से संसाधित करने की आवश्यकता हो सकती है।

फैन-आउट: इमेज प्रोसेसिंग का उदाहरण

मान लीजिए कि आप कोई इमेज अपलोड करते हैं। कोई Lambda फ़ंक्शन इस इवेंट को 'फैन-आउट' कर सकता है और थंबनेल बनाने, वॉटरमार्क जोड़ने तथा मेटाडेटा निकालने के लिए अलग-अलग प्रक्रियाएँ समानांतर रूप से शुरू कर सकता है।

यहाँ इस फैन-आउट तर्क का अनुकरण करने वाला एक वैचारिक Python उदाहरण है:

def process_image_event(image_id):
    print(f"Processing image: {image_id}")
    # Simulate publishing to different services
    print(f"  - Publishing to Thumbnail Service for {image_id}")
    print(f"  - Publishing to Watermark Service for {image_id}")
    print(f"  - Publishing to Metadata Service for {image_id}")

def main():
    print("--- Fan-Out Simulation ---")
    image_id = "img-12345.jpg"
    process_image_event(image_id)
    print("--- Simulation Complete ---")

if __name__ == "__main__":
    main()

स्कैटर-गैदर पैटर्न

स्कैटर-गैदर पैटर्न में किसी अनुरोध को कई प्राप्तकर्ताओं को भेजना (स्कैटर), उनकी सभी प्रतिक्रियाएँ एकत्र करना और फिर उन्हें एकल प्रतिक्रिया में समेकित करना (गैदर) शामिल है।

इसका उपयोग अक्सर कई डेटा स्रोतों में खोज करने या अलग-अलग विक्रेताओं की कीमतों की तुलना करने जैसे ऑपरेशनों के लिए किया जाता है।

स्कैटर-गैदर: उत्पाद खोज का उदाहरण

जब आप किसी उत्पाद को खोजते हैं, तो कोई Lambda विभिन्न विक्रेता API को क्वेरी 'स्कैटर' कर सकता है, फिर उनके परिणामों को 'गैदर' करके मिला सकता है और आपको सबसे अच्छे विकल्प दिखा सकता है।

यह उदाहरण अलग-अलग विक्रेताओं से क्वेरी करने और सबसे सस्ता उत्पाद ढूँढने का अनुकरण करता है:

def get_product_info(vendor_name, product_id):
    # Simulate calling a vendor API
    print(f"  - Querying {vendor_name} for product {product_id}...")
    if vendor_name == "VendorA":
        return {"vendor": "VendorA", "price": 100, "stock": 5}
    elif vendor_name == "VendorB":
        return {"vendor": "VendorB", "price": 95, "stock": 10}
    elif vendor_name == "VendorC":
        return {"vendor": "VendorC", "price": 110, "stock": 3}
    return None

def main():
    print("--- Scatter-Gather Simulation ---")
    product_id = "PROD-XYZ"
    vendors = ["VendorA", "VendorB", "VendorC"]
    
    all_results = []
    print(f"Searching for product {product_id} across vendors:")
    for vendor in vendors:
        result = get_product_info(vendor, product_id)
        if result:
            all_results.append(result)
    
    print("\n--- Aggregated Results ---")
    if all_results:
        for res in all_results:
            print(f"  Vendor: {res['vendor']}, Price: ${res['price']}, Stock: {res['stock']}")
        
        cheapest = min(all_results, key=lambda x: x['price'])
        print(f"\nCheapest option: {cheapest['vendor']} at ${cheapest['price']}")
    else:
        print("No results found.")
    print("--- Simulation Complete ---")

if __name__ == "__main__":
    main()

इवेंट सोर्सिंग पैटर्न

इवेंट सोर्सिंग एक आर्किटेक्चरल पैटर्न है जिसमें अनुप्रयोग की स्थिति में होने वाले सभी बदलावों को अपरिवर्तनीय इवेंट की शृंखला के रूप में संग्रहीत किया जाता है। केवल वर्तमान स्थिति संग्रहीत करने के बजाय, आप यह भी संग्रहीत करते हैं कि उस स्थिति तक कैसे पहुँचा गया।

इससे पूरा ऑडिट ट्रेल मिलता है, पिछली स्थितियों को फिर से बनाया जा सकता है और यह जटिल इवेंट-आधारित प्रणालियों की आधारशिला है।

इवेंट सोर्सिंग: ऑर्डर प्रबंधन का उदाहरण

ई-कॉमर्स प्रणाली में Order रिकॉर्ड को अपडेट करने के बजाय, आप OrderCreated, ItemAdded और OrderShipped जैसे इवेंट रिकॉर्ड करते हैं। इसके बाद वर्तमान स्थिति इन इवेंट को क्रम से लागू करके प्राप्त की जाती है।

यहाँ किसी ऑर्डर के इवेंट रिकॉर्ड करने का एक अनुकरण दिया गया है:

import datetime

def record_event(event_type, payload):
    timestamp = datetime.datetime.now().isoformat()
    event = {
        "eventId": f"evt-{datetime.datetime.now().timestamp()}",
        "eventType": event_type,
        "timestamp": timestamp,
        "payload": payload
    }
    # In a real system, this would write to a database stream (e.g., DynamoDB Streams, Kinesis)
    print(f"Recorded Event: {event['eventType']} at {event['timestamp']}")
    print(f"  Payload: {event['payload']}")
    return event

def main():
    print("--- Event Sourcing Simulation ---")
    
    # Simulate an order creation
    order_id = "ORD-001"
    record_event("OrderCreated", {"orderId": order_id, "customer": "Alice", "initialItems": []})
    
    # Simulate adding an item
    record_event("ItemAdded", {"orderId": order_id, "itemId": "SKU-A", "quantity": 1})
    
    # Simulate updating an item quantity
    record_event("ItemQuantityUpdated", {"orderId": order_id, "itemId": "SKU-A", "newQuantity": 2})
    
    # Simulate shipping the order
    record_event("OrderShipped", {"orderId": order_id, "shippingProvider": "UPS"})
    
    print("\n--- Event Stream Recorded ---")

if __name__ == "__main__":
    main()

सर्वररहित पैटर्न के लाभ

ये पैटर्न सर्वरलेस अनुप्रयोगों के लिए महत्वपूर्ण लाभ प्रदान करते हैं:

  • स्केलेबिलिटी: अधिक समानांतर प्रक्रियाएँ जोड़कर बढ़े हुए लोड को आसानी से संभालें।
  • डिकपलिंग: सेवाएँ स्वतंत्र रूप से काम करती हैं, जिससे निर्भरताएँ कम होती हैं और मजबूती बढ़ती है।
  • मजबूती: फैन-आउट या स्कैटर-गैदर कार्यप्रवाह के एक हिस्से में होने वाली विफलताएँ आवश्यक रूप से पूरी प्रक्रिया को नहीं रोकतीं।
  • ऑडिटयोग्यता (इवेंट सोर्सिंग): परिवर्तनों का पूरा इतिहास डीबगिंग, अनुपालन और विश्लेषण के लिए अत्यंत उपयोगी होता है।

सही पैटर्न चुनना

सही पैटर्न का चयन आपकी विशिष्ट समस्या पर निर्भर करता है:

  • जब किसी एक इवेंट से कई स्वतंत्र, समानांतर कार्रवाइयाँ शुरू करनी हों, तब फैन-आउट का उपयोग करें।
  • जब आपको कई स्रोतों से पूछताछ करके उनके उत्तरों को एकत्र करना हो, तब स्कैटर-गैदर का उपयोग करें।
  • जब आपको परिवर्तनों का पूरा, अपरिवर्तनीय इतिहास या जटिल समय-आधारित पूछताछ चाहिए, तब इवेंट सोर्सिंग का उपयोग करें।

अक्सर इन पैटर्न को किसी बड़े सर्वरलेस आर्किटेक्चर में मिलाकर उपयोग किया जा सकता है।

पैटर्न चुनौती

एक नए ई-कॉमर्स प्लेटफ़ॉर्म को ग्राहकों के ऑर्डर संसाधित करने हैं। जब कोई ऑर्डर दिया जाए, तो सिस्टम को यह करना होगा:

  1. इन्वेंटरी अपडेट करना।
  2. पुष्टिकरण ईमेल भेजना।
  3. शिपिंग लेबल बनाना।
  4. भुगतान संसाधित करना।

ऑर्डर दिए जाने के बाद इन स्वतंत्र कार्यों के समन्वय के लिए कौन-सा सर्वरलेस आर्किटेक्चरल पैटर्न सबसे उपयुक्त है?

पैटर्न का पुनरावलोकन

हमने सर्वरलेस आर्किटेक्चर के प्रमुख पैटर्न देखे हैं: एकल इवेंट से समानांतर प्रोसेसिंग के लिए फैन-आउट, कई स्रोतों से उत्तरों को एकत्र करने के लिए स्कैटर-गैदर, और स्थिति में होने वाले परिवर्तनों का अपरिवर्तनीय इतिहास बनाए रखने के लिए इवेंट सोर्सिंग।

इन पैटर्न को समझने से आपको मजबूत, स्केलेबल और resilient सर्वरलेस अनुप्रयोग डिज़ाइन करने में मदद मिलती है, ताकि हर जटिल समस्या के लिए सही उपकरण चुना जा सके।

शुरुआत निःशुल्क

एआई शिक्षक के साथ सर्वररहित AWS Lambda विकास सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “सर्वररहित आर्किटेक्चरल पैटर्न” पाठ निःशुल्क है?

हाँ—“सर्वररहित आर्किटेक्चरल पैटर्न” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और सर्वररहित AWS Lambda विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। सर्वररहित AWS Lambda विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“सर्वररहित आर्किटेक्चरल पैटर्न” में मैं क्या सीखूँगा?

जटिल व्यावसायिक समस्याओं को कुशलतापूर्वक हल करने के लिए फैन-आउट, स्कैटर-गैदर और इवेंट सोर्सिंग जैसे सामान्य सर्वररहित आर्किटेक्चरल पैटर्न का अन्वेषण और उपयोग कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ सर्वररहित AWS Lambda विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या सर्वररहित AWS Lambda विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर सर्वररहित AWS Lambda विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“सर्वररहित आर्किटेक्चरल पैटर्न” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस सर्वररहित AWS Lambda विकास पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर सर्वररहित AWS Lambda विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. कैनरी और ब्लू/ग्रीन परिनियोजन
  2. लचीले सर्वररहित सिस्टम बनाना
  3. सर्वररहित आर्किटेक्चरल पैटर्न
  4. सर्वररहित आर्किटेक्चर में लागत अनुकूलन
← सर्वररहित AWS Lambda विकास पर वापस जाएँ