परफॉर्मेंस ट्यूनिंग और ऑप्टिमाइज़ेशन तकनीक

AWS Lambda के साथ Serverless Applications

Claudio Canales

Senior DevOps Engineer

Performance = latency + cost

  • आप समय के लिए भुगतान करते हैं.
  • परफॉर्मेंस ट्यूनिंग करना मतलब कॉस्ट ऑप्टिमाइज़ेशन भी है.
  • ट्यून करने से पहले मापें.
  • एक बार में सिर्फ एक चीज़ बदलें.

स्टॉपवॉच और लागत

AWS Lambda के साथ Serverless Applications

समय कहाँ जाता है

  • इनिशियलाइज़ेशन.
  • हैंडलर निष्पादन.
  • एक्सटर्नल कॉल्स पर इंतज़ार का समय.

इनिट बनाम हैंडलर बनाम एक्सटर्नल कॉल्स

AWS Lambda के साथ Serverless Applications

Cold start बनाम warm start

Cold start

  • Lambda को नया एन्वायरनमेंट चाहिए.

Warm start

  • मौजूदा एन्वायरनमेंट री-यूज़ होता है.
  • हैंडलर कम ओवरहेड के साथ चलता है.

कोल्ड बनाम वॉर्म टाइमलाइन

AWS Lambda के साथ Serverless Applications

Init work बनाम handler work

  • इम्पोर्ट्स और ग्लोबल सेटअप इनिट में चलते हैं.
  • भारी इनिट का मतलब स्लो कोल्ड स्टार्ट्स.
  • इनिट अवधि मेट्रिक्स में दिखती है.

इनिट बनाम हैंडलर स्प्लिट

AWS Lambda के साथ Serverless Applications

वॉर्म इनवोकेशन्स में क्लाइंट री-यूज़ करें

  • हर इनवोकेशन पर क्लाइंट बनाना वही लागत दोहराता है.
  • वॉर्म एन्वायरनमेंट में उसे री-यूज़ करें.

ग्लोबल क्लाइंट री-यूज़

AWS Lambda के साथ Serverless Applications

कोड पैटर्न: क्लाइंट हैंडलर के बाहर

import boto3
sts = boto3.client("sts")
def handler(event, context):
    return sts.get_caller_identity()

क्लाइंट एक बार बना

AWS Lambda के साथ Serverless Applications

जहाँ संभव हो, कैश करें

  • डेटा मेमोरी में रखें.
  • छोटे टेम्प फाइल्स के लिए /tmp इस्तेमाल करें.
  • सोच-समझकर कैश करें और ज़रूरत पर इनवैलिडेट करें.

इन-मैमोरी और /tmp कैशिंग

AWS Lambda के साथ Serverless Applications

डिपेंडेंसीज़ को lean रखें

  • बड़े पैकेज लोड होने में समय लेते हैं.
  • जो उपयोग नहीं होता, हटा दें.
  • डिपेंडेंसीज़ को जितना हो सके छोटा रखें.

स्लिम बनाम भारी डिपेंडेंसी पैकेज

AWS Lambda के साथ Serverless Applications

सोच-समझकर लॉग करें

  • बहुत अधिक लॉगिंग लागत और शोर बढ़ाती है.
  • छोटे, स्ट्रक्चर्ड संदेश रखें.
  • सर्चेबल रहें; ट्रेस और डिबग में मदद करें.

लॉगिंग वॉल्यूम बनाम सिग्नल

AWS Lambda के साथ Serverless Applications

एक्सटर्नल कॉल ओवरहेड घटाएँ

  • अन्य सर्विसेज़ को कॉल सबसे स्लो हिस्सा है.
  • कॉल्स घटाएँ; जहाँ संभव हो बैच करें.
  • टाइमआउट सेट करें ताकि फेल्यर्स अटके नहीं.

एक्सटर्नल कॉल्स कम करें

AWS Lambda के साथ Serverless Applications

मेमोरी CPU को भी प्रभावित करती है

  • CPU मेमोरी के साथ स्केल होता है.
  • CPU-बाउंड कोड जल्दी खत्म हो सकता है.
  • ज़्यादा मेमोरी अवधि या लागत घटा सकती है.
  • बेस्ट वैल्यू खोजने के लिए टेस्ट करें.

मेमोरी -> CPU -> तेज रनटाइम

AWS Lambda के साथ Serverless Applications

कॉस्ट का sweet spot खोजें

  • सबसे अच्छा मेमोरी सेटिंग कुल लागत कम करती है.
  • कर्व पहले गिरता है, फिर सपाट या ऊपर जाता है.
  • बदलावों के बाद फिर टेस्ट करें.

कॉस्ट बनाम मेमोरी कर्व

AWS Lambda के साथ Serverless Applications

CloudWatch से मापें

  • Duration और Init duration ट्रैक करें.
  • errors और throttles ट्रैक करें.
  • टेल लेटेंसीज़ देखें (p95, p99).

CloudWatch परफॉर्मेंस मेट्रिक्स

AWS Lambda के साथ Serverless Applications

कोल्ड स्टार्ट्स घटाना

  • इनिट में चलने वाली चीज़ें घटाएँ.
  • अपना पैकेज lean रखें.
  • महंगा सेटअप री-यूज़ करें.
  • प्रोविज़न्ड एन्वायरनमेंट्स पर विचार करें.

कोल्ड स्टार्ट कमी चेकलिस्ट

AWS Lambda के साथ Serverless Applications

मुख्य निष्कर्ष

  • जानें समय कहाँ जाता है.
  • क्लाइंट री-यूज़ करें और सोच-समझकर कैश करें.
  • मेमोरी से CPU और अवधि बदलते हैं.
  • हर बदलाव को मापें.

परफॉर्मेंस मुख्य बातें

AWS Lambda के साथ Serverless Applications

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

AWS Lambda के साथ Serverless Applications

Preparing Video For Download...