Event-driven architecture essentials

AWS Lambda के साथ Serverless Applications

Claudio Canales

Senior DevOps Engineer

Recap: one Lambda mental model

  • Event source: क्या Lambda को ट्रिगर करता है.
  • Event payload: जो हुआ उसका JSON.
  • Handler: उसे प्रोसेस करने वाला कोड.
  • Outcome: प्रतिक्रिया या साइड इफेक्ट.
  • Logs: जहाँ आप डीबग करते हैं.

Lambda execution flow

AWS Lambda के साथ Serverless Applications

Events are messages

  • एक event बताता है क्या हुआ.
  • यह आमतौर पर metadata वाला JSON मैसेज होता है.
  • आपका handler फ़ील्ड निकालकर कार्रवाई करता है.

Events के लिए डोरबेल सादृश्य

AWS Lambda के साथ Serverless Applications

Common event sources in AWS

  • Amazon S3 अपलोड पर events ट्रिगर करता है.
  • Amazon SQS एक managed queue है जो messages डिलीवर करता है.
  • DynamoDB Streams change log बनाता है.
  • हर एक अलग JSON payload देता है.

Event sources: S3 vs SQS vs Streams

AWS Lambda के साथ Serverless Applications

Synchronous vs asynchronous invocation

  • Synchronous: कॉलर परिणाम का इंतज़ार करता है.
  • Asynchronous: कॉलर को acknowledgment मिलता है; event बाद में प्रोसेस होता है.

Sync vs async सादृश्य

AWS Lambda के साथ Serverless Applications

Event-driven architecture essentials

  • Events AWS सेवाओं से JSON के रूप में आते हैं.
  • Invocation मोड बदलता है कि errors कहाँ दिखेंगी.
  • Payloads अलग होते हैं, इसलिए सावधानी से parse और validate करें.
  • Retries और duplicates मानकर चलें.

Key takeaways पाइपलाइन

AWS Lambda के साथ Serverless Applications

Payloads are contracts

  • Payloads अनुबंध जैसे हैं: भेजने वाला shape तय करता है.
  • आपके handler को पता होना चाहिए फ़ील्ड कहाँ हैं.
  • जो चाहिए निकालें, validate करें, प्रोसेस करें, और log करें.

Payload अनुबंध और parsing workflow

AWS Lambda के साथ Serverless Applications

Example payload: SQS message event

एनोटेटेड SQS event payload

  • Records बैच है.
  • body एक string है.
  • messageId ट्रेस और deduplicate करने में मदद करता है.
AWS Lambda के साथ Serverless Applications

Walkthrough: iterate through Records

def lambda_handler(event, context):
    records = event.get("Records", [])
    for record in records:
        body = record.get("body", "")
        print("BODY:", body)
    return {"statusCode": 200}
  • सुरक्षित default के साथ Records पढ़ें.
  • हर record पर loop चलाएँ और body निकालें.
  • ज़रूरी बात log करें, फिर return करें.

Records पर लूप चलाएँ

AWS Lambda के साथ Serverless Applications

Walkthrough: parse JSON body safely

import json
def lambda_handler(event, context):
    records = event.get("Records") or [{}]
    body = records[0].get("body", "{}")
    payload = json.loads(body)
    oid = payload.get("order_id")
    return json.dumps({"order_id": oid})
  • body एक string है; json.loads से parse करें.
  • "{}" जैसा सुरक्षित default रखें.
  • order_id निकालें और json.dumps से JSON लौटाएँ.

Body parsing flow

AWS Lambda के साथ Serverless Applications

Defensive parsing checklist

Defensive parsing चेकलिस्ट

  • नए source को सीखते समय event का shape एक बार log करें.
  • वैकल्पिक फ़ील्ड्स के लिए .get() और defaults का उपयोग करें.
  • आवश्यक फ़ील्ड्स validate करें और स्पष्ट errors लौटाएँ.
  • खाली batches और missing keys संभालें.
AWS Lambda के साथ Serverless Applications

Design for retries and duplicates

  • कई event sources at-least-once delivery उपयोग करते हैं.
  • डुप्लिकेट हो सकते हैं.
  • Idempotent handlers डिज़ाइन करें ताकि दो बार प्रोसेस पर भी सही रहे.

Retries और duplicates

AWS Lambda के साथ Serverless Applications

Idempotency in practice

  • messageId या order_id जैसा unique key चुनें.
  • हर प्रोसेस्ड key को DynamoDB में स्टोर करें.
  • key मौजूद हो तो जॉब स्किप करें.

Idempotency decision flow

AWS Lambda के साथ Serverless Applications

Key takeaways

  • Events AWS सेवाओं से JSON के रूप में आते हैं.
  • Invocation मोड बदलता है कि errors कहाँ दिखेंगी.
  • Payloads अलग होते हैं, इसलिए सावधानी से parse और validate करें.
  • Retries और duplicates मानकर चलें.

Key takeaways पाइपलाइन

AWS Lambda के साथ Serverless Applications

अभ्यास करते हैं!

AWS Lambda के साथ Serverless Applications

Preparing Video For Download...