DynamoDB के साथ स्ट्रीमिंग डेटा

AWS पर एप्लिकेशन विकसित करना

Ricardo Sueiras

Principal Technologist

DynamoDB Streams: मूल बातें

 

मूल बातें

  • लगभग रियल-टाइम में डेटाबेस बदलावों पर रिएक्ट करें.
  • इवेंट-ड्रिवन पैटर्न पर आधारित.
  • हर insert, modify, या delete एक स्ट्रीम रिकॉर्ड बनाता है.
  • टेबल को पोल किए बिना रिएक्टिव ऐप्स बनाएँ.
  • डिफ़ॉल्ट रूप से बंद: StreamSpecification से सक्षम करें.
  • हर स्ट्रीम का अपना ARN होता है, टेबल ARN से अलग.
AWS पर एप्लिकेशन विकसित करना

रिटेंशन पीरियड

 

रिटेंशन

  • स्ट्रीम रिकॉर्ड 24 घंटे तक रिटेन होते हैं.
    • रिटेंशन फिक्स्ड है, कॉन्फ़िगर नहीं किया जा सकता.
  • व्यू टाइप बदलने पर स्ट्रीम फिर से बनानी पड़ती है.
    • नई स्ट्रीम एक नया स्ट्रीम ARN बनाती है.
AWS पर एप्लिकेशन विकसित करना

Streams और DynamoDB read capacity units

 

RCU

  • स्ट्रीम reads आपके read capacity units (RCUs) का उपयोग नहीं करते.
  • स्ट्रीम सक्षम करने से provisioned throughput पर असर नहीं पड़ता.
AWS पर एप्लिकेशन विकसित करना

स्ट्रीम रिकॉर्ड

  • हर स्ट्रीम रिकॉर्ड में बदलाव का वर्णन करने वाला मेटाडेटा होता है.
  • स्ट्रीम्स तीन इवेंट टाइप पकड़ती हैं:
    • INSERT
    • MODIFY
    • REMOVE

 

स्ट्रीम रिकॉर्ड

AWS पर एप्लिकेशन विकसित करना
  • व्यू टाइप तय करता है कि हर रिकॉर्ड में कौन सा डेटा आएगा.
    • KEYS_ONLY: केवल partition और sort key.
    • NEW_IMAGE: बदलाव के बाद पूरा आइटम.
    • OLD_IMAGE: बदलाव से पहले पूरा आइटम.
    • NEW_AND_OLD_IMAGES: पहले और बाद का आइटम.
  • ऑडिटिंग के लिए NEW_AND_OLD_IMAGES सामान्य विकल्प है.
  • DynamoDB Global Tables के लिए आवश्यक.

स्ट्रीम व्यू

AWS पर एप्लिकेशन विकसित करना
  • स्ट्रीम्स प्रति partition key क्रम बनाए रखती हैं.
  • Lambda रिकॉर्ड्स को बैच में प्रोसेस करती है.
    • हर सफल बैच के बाद प्रोग्रेस चेकपॉइंट होती है.
    • फेल हुए बैच फिर ट्राई होते हैं.
    • सफलता तक या रिकॉर्ड एक्सपायर होने तक रिट्राई जारी रहते हैं.

 

क्रम

AWS पर एप्लिकेशन विकसित करना

 

स्ट्रीम्स और AWS Lambda

  • Lambda सबसे आम स्ट्रीम कंस्यूमर है.
  • यह polling-आधारित event source mapping उपयोग करती है.
  • स्ट्रीम से रिकॉर्ड पढ़ती है.
  • आपके फंक्शन को रिकॉर्ड के बैच के साथ invoke करती है.
AWS पर एप्लिकेशन विकसित करना

आर्किटेक्चरल पैटर्न

 

आर्किटेक्चर पैटर्न

  • एक सामान्य एंड-टू-एंड पैटर्न:
    • एक आइटम अपडेट DynamoDB में जाता है.
    • यह बदलाव एक स्ट्रीम रिकॉर्ड बनाता है.
    • रिकॉर्ड प्रोसेसिंग के लिए Lambda ट्रिगर करता है.
AWS पर एप्लिकेशन विकसित करना

स्केलिंग

 

स्केलिंग

  • स्ट्रीम्स अंदरूनी रूप से shards में बँटी होती हैं.
    • Kinesis Data Streams की तरह.
  • हर shard में अधिकतम दो simultaneous consumers हो सकते हैं.
    • इस सीमा से ऊपर जाने पर read throttling आम है.
AWS पर एप्लिकेशन विकसित करना
  • Lambda concurrency shard काउंट के साथ स्केल होती है.
  • प्रोसेसिंग ट्यून करें:
    • BatchSize: प्रति invocation अधिकतम रिकॉर्ड.
    • MaximumBatchingWindow: आंशिक बैच से पहले wait.
    • MaximumRetryAttempts: failure destination से पहले retries.
    • MaximumRecordAgeInSeconds: इस उम्र से पुराने रिकॉर्ड discard.
    • ParallelizationFactor: प्रति shard concurrent प्रोसेसिंग (अधिकतम 10).

Lambda के साथ स्केलिंग

AWS पर एप्लिकेशन विकसित करना

फ़िल्टरिंग और टम्बलिंग विंडोज़

  • Lambda filter criteria सपोर्ट करती है.
    • फंक्शन invoke होने से पहले रिकॉर्ड discard करें.
    • गैर-ज़रूरी invocations और लागत घटती है.
  • Lambda tumbling windows सपोर्ट करती है.
    • एक shard में बैचों के पार state aggregate करें.

 

फ़िल्टरिंग और टम्बलिंग विंडोज़

AWS पर एप्लिकेशन विकसित करना

डुप्लिकेट रिकॉर्ड मैनेज करना

  • स्ट्रीम्स हर बदलाव को exactly once कैप्चर करती हैं.
  • Lambda at-least-once semantics के साथ प्रोसेस करती है.
    • रिट्राई वही रिकॉर्ड दोबारा प्रोसेस कर सकते हैं.
  • कंस्यूमर्स को idempotent डिज़ाइन करें.
  • सामान्य पैटर्न: प्रोसेस्ड eventID या SequenceNumber स्टोर करें.
    • पहले से हैंडल किए रिकॉर्ड स्किप करें.
    • दोनों रिट्राई में स्थिर रहते हैं.
    • भरोसेमंद idempotency keys.

 

डुप्लिकेट रिकॉर्ड मैनेज करना

AWS पर एप्लिकेशन विकसित करना

विफलताओं का हैंडलिंग

 

विफलताओं का हैंडलिंग

  • ReportBatchItemFailures केवल फेल हुए रिकॉर्ड पर रिट्राई करता है.
  • Lambda विफलताओं को हैंडल करें:
    • बैच बाइसेक्शन के लिए BisectBatchOnFunctionError.
    • रिट्राई कंट्रोल्स.
    • रिट्राई खत्म होने पर poison बैच के लिए failure destinations.
AWS पर एप्लिकेशन विकसित करना

DynamoDB से Kinesis इंटीग्रेशन

 

इंटीग्रेशन

  • टेबल्स बदलाव सीधे Kinesis Data Streams को भेज सकती हैं.
    • Kinesis Data Streams for DynamoDB फीचर से.
    • यह अलग, पैरलल क्षमता है, चेन नहीं.
    • इवेंट DynamoDB Streams से होकर नहीं जाते.
  • दोनों एक ही टेबल पर साथ चल सकते हैं.
    • वे स्वतंत्र रूप से ऑपरेट करते हैं.
    • व्यापक स्ट्रीमिंग और एनालिटिक्स आर्किटेक्चर को फीड करते हैं.
AWS पर एप्लिकेशन विकसित करना

मॉनिटरिंग: सामान्य इश्यू

 

ट्रबलशूटिंग

  • देखने योग्य आम ऑपरेशनल इश्यू:
    • हॉट पार्टिशन.
    • असफल रिट्राई.
    • डुप्लिकेट प्रोसेसिंग.
    • थ्रॉटलिंग और कंस्यूमर लैग.
AWS पर एप्लिकेशन विकसित करना

मॉनिटरिंग: CloudWatch मेट्रिक्स

  • मॉनिटर करने के लिए प्रमुख CloudWatch मेट्रिक्स:
    • Lambda Errors: कोड या डाउनस्ट्रीम इश्यू दिखते हैं.
    • IteratorAge: उच्च मान स्लो कंस्यूमर दर्शाते हैं.
    • Throttling मेट्रिक्स: read लिमिट क्रॉस होना.
    • बैच प्रोसेसिंग फेल्यर्स: रिकॉर्ड DLQ में भेजे गए.

 

ट्रबलशूटिंग

AWS पर एप्लिकेशन विकसित करना

सुरक्षा

  • स्ट्रीम्स की एक्सेस IAM permissions से नियंत्रित होती है.
  • स्ट्रीम्स टेबल की एन्क्रिप्शन सेटिंग्स इनहेरिट करती हैं.
    • KMS के साथ at rest सर्वर-साइड एन्क्रिप्शन समेत.
  • कंस्यूमर्स और डाउनस्ट्रीम प्रोसेसर्स पर least-privilege पॉलिसी लागू करें.

 

सुरक्षा

AWS पर एप्लिकेशन विकसित करना

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

AWS पर एप्लिकेशन विकसित करना

Preparing Video For Download...