इवेंट-ड्रिवन एप्लिकेशन

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

Ricardo Sueiras

Principal Technologist

इवेंट क्या है?

 

event-vs-messages

  • एक message, कंपोनेंट्स के बीच भेजा गया work का unit होता है.
  • एक event बताता है कि कुछ हो चुका है.
  • सर्विसेज events पब्लिश करके बातचीत करती हैं.
  • अन्य सर्विसेज उन events पर स्वतंत्र रूप से रिएक्ट करती हैं.
  • डीकपलिंग निर्भरताएँ घटाती है और स्केलेबिलिटी बढ़ाती है.
AWS पर एप्लिकेशन विकसित करना

इवेंट प्रोड्यूसर

 

event producers

  • प्रोड्यूसर, एक्शन होने पर events बनाते और पब्लिश करते हैं.
  • AWS सर्विसेज और कस्टम एप्लिकेशन, दोनों events बना सकते हैं.
  • Amazon S3 पर फ़ाइल अपलोड करना एक उदाहरण है.
  • फिर Amazon S3 एक object-created event जारी करता है.
AWS पर एप्लिकेशन विकसित करना

इवेंट कंज्यूमर

 

consumers

  • कंज्यूमर events को asynchronous तरीके से रिसीव और प्रोसेस करते हैं.
  • इवेंट सोर्स अलग-अलग डिलीवरी मॉडल्स उपयोग करते हैं.
  • Push-आधारित: events तुरंत डिलीवर होते हैं.
  • Poll-आधारित: कंज्यूमर poll करने पर events लेते हैं.
AWS पर एप्लिकेशन विकसित करना

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

  • AWS Lambda एक सामान्य इवेंट कंज्यूमर है.
  • यह स्रोतों को poll कर बैचों में रिकॉर्ड स्वतः लाता है.

 

event source mapping

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

Lambda इवेंट सोर्स मैपिंग ट्यून करना

  • थ्रूपुट बढ़ाने के लिए इवेंट सोर्स मैपिंग ट्यून करें.
  • प्रति इनवोकेशन रिकॉर्ड्स नियंत्रित करने को बैच साइज समायोजित करें.
  • फेल्ड रिकॉर्ड्स के लिए रिट्राई कंट्रोल्स कॉन्फ़िगर करें.
  • सपोर्टेड सोर्सेज पर partial batch responses उपयोग करें.
  • ReportBatchItemFailures सफल रिकॉर्ड्स को दोबारा प्रोसेस होने से बचाता है.

 

event source mapping

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

Amazon EventBridge

  • EventBridge सर्विसेज और एप्लिकेशंस के बीच events रूट करता है.
  • यह टाइट कपलिंग के बिना डायनेमिक रूटिंग सक्षम करता है.
  • एप्लिकेशन अपने events EventBridge पर पब्लिश करते हैं.
  • रूटिंग रूल्स तय करते हैं कि कौन से टार्गेट्स कौन सा इवेंट लें.

 

event bridge

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

EventBridge क्षमताएँ

 

capabilities

  • EventBridge कई रूटिंग क्षमताएँ देता है.
  • रूल्स एक इवेंट को कई टार्गेट्स तक फैला सकते हैं.
  • शेड्यूल्ड रूल्स को cron सर्वर की ज़रूरत नहीं रहती.
  • शेड्यूल्स rate(), at(), और cron() expressions सपोर्ट करते हैं.
  • Pipes पॉइंट-टू-पॉइंट इंटीग्रेशन देती हैं.
  • Pipes फ़िल्टरिंग और ट्रांसफ़ॉर्मेशन भी सक्षम करती हैं.
AWS पर एप्लिकेशन विकसित करना

इवेंट बसें

 

event bus

  • अलग-अलग इवेंट बसें रूटिंग को बेहतर बनाती हैं.
  • डिफ़ॉल्ट बस AWS सर्विसेज से events लेती है.
  • कस्टम बसें एप्लिकेशन-विशिष्ट events ले जाती हैं.
  • पार्टनर बसें थर्ड-पार्टी प्रोवाइडर्स से events लेती हैं.
  • हर बस और उसके टार्गेट्स के बीच रूल्स होते हैं.
AWS पर एप्लिकेशन विकसित करना

स्कीमा डिस्कवरी

 

event schema and registry

  • प्रोड्यूसर और कंज्यूमर अक्सर स्वतंत्र रूप से विकसित होते हैं.
  • इवेंट स्ट्रक्चर समझना जरूरी है.
  • स्कीमा डिस्कवरी आने वाले events की स्ट्रक्चर कैप्चर करती है.
  • इसे इवेंट पेलोड inspect करने में उपयोग करें.
  • इंटीग्रेशंस वैलिडेट करने में उपयोग करें.
  • सपोर्टेड भाषाओं के लिए बाइंडिंग जनरेट करने में उपयोग करें.
AWS पर एप्लिकेशन विकसित करना

स्कीमा रजिस्ट्री

  • स्कीमा रजिस्ट्री आपके इवेंट स्कीमा स्टोर करती है.
  • यह डेवलपर्स को स्ट्रक्चर समझने और बाइंडिंग जनरेट करने में मदद करती है.

 

event schema and registry

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

इवेंट फ़िल्टरिंग

  • फ़िल्टरिंग अनावश्यक प्रोसेसिंग घटाती है.
  • JSON इवेंट पैटर्न से मैच परिभाषित करें.
  • पैटर्न केवल वे ही events मैच करते हैं जो आप चाहते हैं.
  • डाउनस्ट्रीम सिस्टम तब केवल प्रासंगिक events प्रोसेस करते हैं.

 

event filtering

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

इवेंट ऑर्डरिंग

  • इवेंट ऑर्डरिंग हमेशा सुनिश्चित नहीं रहती.
  • कुछ सर्विसेज events को क्रम से बाहर प्रोसेस कर सकती हैं.
  • अनुक्रम लागू करने के लिए ऑर्डरिंग कंट्रोल्स का उपयोग करें.

 

event ordering

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

इवेंट्स का आर्काइव और रीप्ले

 

archiving and replaying

  • EventBridge events को आर्काइव कर बाद में रीप्ले कर सकता है.
  • विफलताओं से उबरने के लिए events रीप्ले करें.
  • नए कंज्यूमर टेस्ट करने के लिए events रीप्ले करें.
  • डाउनस्ट्रीम सिस्टम फिर से बनाने के लिए events रीप्ले करें.
AWS पर एप्लिकेशन विकसित करना

एरर हैंडलिंग

 

handling errors

  • इवेंट-ड्रिवन ऐप्स को errors सुरक्षित रूप से हैंडल करना चाहिए.
  • विफलताओं में डुप्लिकेट events शामिल हैं.
    • प्रोसेसिंग असफल.
    • कंज्यूमर अनुपलब्ध.
  • जहाँ संभव हो, कंज्यूमर को idempotent डिज़ाइन करें.
AWS पर एप्लिकेशन विकसित करना

DLQs और डेस्टिनेशंस

 

handling errors

  • बार-बार असफल होने वाले events को अलग करने के लिए DLQs उपयोग करें.
  • EventBridge में, DLQs प्रति रूल टार्गेट कॉन्फ़िगर होते हैं, प्रति फंक्शन नहीं.
  • Lambda Destinations इस रूटिंग को बढ़ाते हैं.
  • Destinations सफलता और विफलता, दोनों रिज़ल्ट्स रूट करते हैं.
AWS पर एप्लिकेशन विकसित करना

इवेंट्स का टेस्ट और वैलिडेशन

  • इवेंट-ड्रिवन ऐप्स का टेस्टिंग रूटिंग को वैलिडेट करता है.
  • यह इवेंट फ़िल्टरिंग को भी वैलिडेट करता है.
  • यह इवेंट रिट्राई को भी वैलिडेट करता है.
  • यह डिस्ट्रीब्यूटेड सिस्टम्स में प्रोसेसिंग की पुष्टि करता है.
  • AWS SAM से सैंपल टेस्ट events जनरेट करें.
  • सैंपल events सटीक JSON आउटपुट दोहराते हैं.

 

testing

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

क्या टेस्ट करें

  • डिप्लॉयमेंट से पहले SAM आपको लोकली टेस्ट करने देता है.
  • इवेंट पैटर्न मैचिंग वैलिडेट करें.
  • रिट्राई बिहेवियर वैलिडेट करें.
  • थ्रॉटलिंग सिनेरियो वैलिडेट करें.
  • डुप्लिकेट इवेंट डिलीवरी वैलिडेट करें.
  • idempotent कंज्यूमर बिहेवियर वैलिडेट करें.

 

testing

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

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

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

Preparing Video For Download...