विफलता का निदान करने से पहले दो पाइपलाइनों को अलग करें
जब प्रदाता ईमेल वितरित करना जारी रखता है तो एक एप्लिकेशन प्रदाता घटनाओं को शामिल करना बंद कर सकता है। यह उन संदेशों के बारे में स्वस्थ ईवेंट ट्रैफ़िक भी प्राप्त कर सकता है जिनकी डिलीवरी विफल हो रही है। ये अलग-अलग सफलता मानदंड वाली अलग-अलग पाइपलाइन हैं। ईमेल पथ भेजने वाले प्रदाता के माध्यम से प्राप्तकर्ता प्रणाली तक सबमिशन से चलता है। डेटा पथ प्रदाता अवलोकनों से एपीआई या वेबहुक के माध्यम से भंडारण, परिवर्तन और डैशबोर्ड तक चलता है। एक खाली डैशबोर्ड अतिरिक्त साक्ष्य के बिना यह पहचान नहीं सकता कि कौन सा पथ विफल हुआ।
ट्विलियो SendGrid का इवेंट वेबहुक संदर्भ संसाधित, वितरित, स्थगित और गिराई गई घटनाओं में अंतर करता है। वे शब्द प्रदाता-विशिष्ट संदेश प्रबंधन का वर्णन करते हैं। वे ग्राहक के अंतर्ग्रहण डेटाबेस के लिए स्थितियाँ नहीं हैं। यह पांडुलिपि एक उदाहरण के रूप में प्रलेखित शब्दार्थ का उपयोग करती है और एक एकीकरण अनुबंध का प्रस्ताव करती है; यह दावा नहीं करता है कि EmailAuth में कोई विशेष कनेक्टर है या कोई वास्तविक घटना प्राप्त, संग्रहीत या खो गई है।
प्रत्येक सफलता शर्त को स्पष्ट रूप से परिभाषित करें
सबमिशन स्वीकृति, प्रदाता संदेश हैंडलिंग, वेबहुक या एपीआई उपलब्धता, अंतर्ग्रहण पावती, टिकाऊ भंडारण, परिवर्तन और प्रदर्शन के लिए अलग-अलग चौकियों को रिकॉर्ड करें। प्रत्येक को एक साक्ष्य स्रोत और एक टाइमस्टैम्प की आवश्यकता होती है। वेबहुक के लिए एक सफल HTTP प्रतिक्रिया यह संकेत दे सकती है कि एंडपॉइंट ने अनुरोध को स्वीकार कर लिया है, लेकिन यह अपने आप में यह साबित नहीं करता है कि एप्लिकेशन ने प्रत्येक ईवेंट को सही ढंग से बनाए रखा है। इसके विपरीत, एक डेटाबेस पंक्ति पुरानी या डुप्लिकेट हो सकती है और इसे वर्तमान कनेक्टिविटी के प्रमाण के रूप में नहीं माना जाना चाहिए।
SendGrid उदाहरण के लिए, संसाधित का मतलब है कि SendGrid स्वीकृत है और संदेश वितरित कर सकता है; डिलीवर का मतलब है कि यह संदेश प्राप्तकर्ता सर्वर तक पहुंचाने में सफल रहा। कोई भी कथन इनबॉक्स प्लेसमेंट या मानव पढ़ने का वादा नहीं करता है। विलंबित का अर्थ है प्राप्तकर्ता सर्वर ने संदेश को अस्थायी रूप से अस्वीकार कर दिया है। प्रत्येक सकारात्मक घटना को सामान्य सफलता ध्वज में अनुवाद करने के बजाय इन अर्थों को डेटा डिक्शनरी में रखें। एकीकरण को मूल प्रदाता ईवेंट प्रकार को उसकी आंतरिक व्याख्या के साथ संरक्षित करना चाहिए।
एपीआई और इवेंट अनुबंध को पिन करें
वास्तविक प्रदाता, एंडपॉइंट या वेबहुक प्रारूप, दस्तावेजित संस्करण जहां उपलब्ध हो, स्कीमा स्नैपशॉट तिथि और उन फ़ील्ड्स की पहचान करें जिन पर एप्लिकेशन निर्भर करता है। यदि प्रदाता वेबहुक पेलोड के लिए औपचारिक संस्करण का खुलासा नहीं करता है, तो ऐसा कहें और संस्करण संख्या का आविष्कार करने के बजाय दिनांकित अनुबंध स्नैपशॉट को बनाए रखें। अज्ञात ईवेंट प्रकारों के लिए आवश्यक और वैकल्पिक फ़ील्ड, टाइमस्टैम्प इकाइयां, ईवेंट पहचानकर्ता, किरायेदार बाइंडिंग और व्यवहार रिकॉर्ड करें।
पेजिनेशन केवल एक एपीआई के लिए अनुबंध में शामिल है जो वास्तव में पेजिनेटेड पुनर्प्राप्ति का समर्थन करता है। एक वेबहुक बैच स्वचालित रूप से एक पृष्ठांकित एपीआई प्रतिक्रिया नहीं है। यदि कोई कनेक्टर दोनों विधियों का उपयोग करता है, तो उन्हें अलग से दस्तावेज़ित करें। कार्यान्वयन से पहले वास्तविक एपीआई दस्तावेज़ से कर्सर दृढ़ता, टर्मिनल-पेज व्यवहार और आंशिक-पेज हैंडलिंग को परिभाषित करें। यह ड्राफ्ट वेबहुक स्रोतों से SendGrid पेजिनेशन योजना का दावा नहीं करता है, और इसने किसी को खोजने के लिए एपीआई को कॉल नहीं किया है।
पुनः प्रयास व्यवहार को प्रदाता-विशिष्ट मानें
SendGrid का वेबहुक दस्तावेज़ीकरण प्रारंभ हो रहा है बताता है कि गैर-2xx प्रतिक्रियाएँ किसी घटना के घटित होने के बाद 24 घंटों तक बढ़ते अंतराल पर पुनः प्रयास का कारण बनती हैं। यह उस सीमा को रोलिंग के रूप में वर्णित करता है, इसलिए नई असफल घटनाओं को अपनी पुनः प्रयास अवधि प्राप्त होती है। यह एक प्रलेखित SendGrid व्यवहार है, यह कोई सार्वभौमिक गारंटी नहीं है कि कोई अन्य प्रदाता समान अवधि के लिए पुनः प्रयास करता है या कोई एप्लिकेशन अनिश्चित काल तक प्रत्येक छूटी हुई घटना को पुनर्प्राप्त कर सकता है।
अंतर्ग्रहण डिज़ाइन को यह मानना चाहिए कि पुनः प्रयास-संबंधी पुनरावृत्ति संभव है और वास्तविक अनुबंध द्वारा समर्थित पहचानकर्ताओं का उपयोग करके एक निष्क्रिय प्रसंस्करण रणनीति को परिभाषित करना चाहिए। HTTP पावती से सटीक-एक बार डिलीवरी न मानें। एक ही संदेश के बारे में दोहराई गई घटना को एक अलग घटना से अलग करने के लिए पर्याप्त गैर-गुप्त उत्पत्ति को सुरक्षित रखें। अकेले एक संदेश पहचानकर्ता प्रत्येक जीवनचक्र घटना की विशिष्ट रूप से पहचान नहीं कर सकता है, इसलिए डिडुप्लीकेशन कुंजी को प्रदाता के दस्तावेजित फ़ील्ड और एप्लिकेशन के स्टोरेज मॉडल से मेल खाना चाहिए।
आंशिक विफलता को दृश्यमान बनाएं
एक बैच में कई इवेंट शामिल हो सकते हैं जबकि एप्लिकेशन की प्रोसेसिंग का केवल एक हिस्सा ही सफल होता है। परिभाषित करें कि क्या पावती टिकाऊ स्वीकृति से पहले या बाद में होती है, कैसे विफल वस्तुओं को अधिकृत रीप्ले के लिए बनाए रखा जाता है, और सिस्टम बार-बार प्रसंस्करण को कुल योग बढ़ाने से कैसे रोकता है। ये प्रस्तावित डिज़ाइन निर्णय हैं, यह दावा नहीं है कि प्रदाता या EmailAuth एक विशेष लेनदेन मॉडल लागू करता है। पॉलिसी चुनने से पहले वास्तविक एप्लिकेशन की विफलता सीमाओं की समीक्षा करें।
अलग स्कीमा अस्वीकृति, किरायेदार-मैपिंग विफलता, भंडारण विफलता और डाउनस्ट्रीम एकत्रीकरण विफलता। उन्हें अलग उपचार की जरूरत है. एक घटना जिसे किरायेदार को सुरक्षित रूप से नहीं सौंपा जा सकता है उसे केवल अंतर्ग्रहण को चालू रखने के लिए डिफ़ॉल्ट ग्राहक के डेटासेट में नहीं रखा जाना चाहिए। किसी अज्ञात वैकल्पिक फ़ील्ड को स्वचालित रूप से एक वैध संदेश को बिना डिलीवर किए हुए नहीं दिखाना चाहिए। व्यापक परिचालन लॉग में प्राप्तकर्ता विवरण या क्रेडेंशियल से बचते हुए, न्यूनतम आवश्यक डेटा के साथ एक नियंत्रित त्रुटि रिकॉर्ड को सुरक्षित रखें।
एक अनुबंध-और-स्थिरता कार्यपत्रक
प्रदाता स्रोत, अनुबंध संस्करण या स्नैपशॉट तिथि, समापन बिंदु प्रकार, प्रमाणीकरण विधि संदर्भ, किरायेदार बाइंडिंग, ईवेंट पहचान, टाइमस्टैम्प शब्दार्थ और अपेक्षित पावती व्यवहार के साथ एक वर्कशीट बनाएं। डुप्लिकेट ईवेंट, आउट-ऑफ-ऑर्डर अवलोकन, अज्ञात प्रकार, लापता आवश्यक फ़ील्ड, आंशिक प्रसंस्करण विफलता और पुनर्प्राप्ति के लिए फिक्स्चर जोड़ें। समर्थित पेजिनेटेड एपीआई के लिए, खाली पेज, बार-बार कर्सर और बाधित पुनर्प्राप्ति जोड़ें। जब कनेक्टर केवल वेबहुक हो तो मार्क पेजिनेशन लागू नहीं होता है।
प्रत्येक फिक्स्चर को अपनी अपेक्षित संग्रहीत पंक्तियाँ, डिडुप्लीकेशन परिणाम, त्रुटि रिकॉर्ड और डैशबोर्ड प्रभाव बताना चाहिए। सिंथेटिक प्राप्तकर्ताओं और किरायेदारों का उपयोग करें, और जब तक अलग से अधिकृत न हो, नेटवर्क डिलीवरी को अक्षम रखें। कार्यपत्रक में केवल इसलिए मनगढ़ंत सफलता परिणाम न डालें क्योंकि डिज़ाइन उचित लगता है। कैटलॉग को मूल अनुबंध और स्थिरता साक्ष्य की आवश्यकता होती है; यह आलेख एक प्रस्तावित संरचना प्रदान करता है और यह दावा नहीं करता है कि उन परीक्षणों को निष्पादित किया गया था।
काल्पनिक निदान: एक शांत डैशबोर्ड
एक काल्पनिक संचालन टीम अपने डैशबोर्ड में कोई नई डिलीवरी ईवेंट नहीं देखती है और निष्कर्ष निकालती है कि आउटबाउंड ईमेल बंद हो गया है। इसके प्रदाता-पक्ष के साक्ष्य, यदि अधिकृत जांच के माध्यम से प्राप्त किए जाते हैं, तो वेबहुक एंडपॉइंट विफल होने पर निरंतर डिलीवरी दिखा सकते हैं। सही अगला प्रश्न यह है कि क्या डेटा पथ पुनः प्रयास कर रहा है, अपनी दस्तावेज़ीकृत विंडो के बाद छोड़ रहा है या पावती के बाद विफल हो रहा है। अकेले डैशबोर्ड उन विकल्पों का समाधान नहीं कर सकता.
प्रस्तावित अभ्यास में, टीम प्रदाता अवलोकन समय, समापन बिंदु प्रतिक्रियाओं, टिकाऊ-अंतर्ग्रहण रिकॉर्ड और एकत्रीकरण टाइमस्टैम्प की तुलना करेगी। यह केवल डैशबोर्ड को पॉप्युलेट करने के लिए ग्राहक संदेशों को दोबारा नहीं भेजेगा। यह परिदृश्य काल्पनिक है: किसी प्रदाता खाते, समापन बिंदु, घटना या डिलीवरी का निरीक्षण नहीं किया गया था। यह दर्शाता है कि क्यों घटना के स्वामित्व को मेल डिलीवरी को टेलीमेट्री अंतर्ग्रहण से अलग करना चाहिए और किसी भी टीम के स्वस्थ घटक को सबूत के रूप में मानने से बचना चाहिए कि पूरी पाइपलाइन काम करती है।
कवरेज को बढ़ा-चढ़ाकर पेश किए बिना अवलोकनों का मिलान करें
RFC 9990 को परिभाषित करता है DMARC समग्र रिपोर्टिंग, अपनी स्वयं की रिपोर्टिंग और वितरण प्रक्रिया के साथ एक अलग अवलोकन स्रोत। ऐसी रिपोर्टें डोमेन-प्रमाणीकरण पैटर्न का आकलन करने में मदद कर सकती हैं, लेकिन वे लापता वेबहुक की मरम्मत नहीं करती हैं या प्रदाता डिलीवरी टेलीमेट्री की पूर्णता को साबित नहीं करती हैं। प्रत्येक स्रोत का कवरेज, समय विंडो और पहचानकर्ताओं को एक साथ उपयोग करते समय दृश्यमान रखें।
पेजिनेशन, डुप्लिकेट, पुनः प्रयास और आंशिक विफलताओं के लिए आवश्यक संस्करण-पिन किए गए एपीआई अनुबंध और फिक्स्चर खुले रहते हैं। कोई क्रेडेंशियल नहीं बनाया गया, समापन बिंदु कॉन्फ़िगर नहीं किया गया या वास्तविक घटना दोबारा नहीं चलाई गई। मानव विशेषज्ञ समीक्षा, स्रोत प्रयोज्यता, उत्पादन मार्ग, पहुंच और मालिक की रिहाई भी खुली रहती है। प्रकाशन के लिए एक अधिकृत अनुबंध समीक्षा और वास्तविक एकीकरण से बरकरार स्थिरता परिणामों की आवश्यकता होती है, जिसमें असमर्थित क्षमताओं को किसी अन्य प्रदाता के दस्तावेज़ीकरण से अनुमान लगाने के बजाय स्पष्ट रूप से चिह्नित किया जाता है।