लिंकबैक चेकर ने हमारी रिलीज़ ब्लॉक कर दी: एक काल्पनिक पोस्ट-मार्टम
गढ़ी गई टीम, गढ़ा गया इंसिडेंट, असली मशीनरी। हम इसे उसी क्रम में बताते हैं जिसमें एक ऑन-कॉल इंजीनियर इसे नोट करेगा।
Contentin रिसर्च टीम ·
यह एक उदाहरण है
नीचे दी गई टीम, उत्पाद और समय सारी काल्पनिक हैं ताकि यह दिखाया जा सके कि विफलता कैसे सामने आती है। किसी वास्तविक कंपनी, ग्राहक या मापदंड का वर्णन नहीं किया गया है।
इंसिडेंट, क्रम में
1
09:10, एक लॉन्च पेज CMS में जाता है
एक छह-सदस्यीय उत्पाद टीम एक हेडलेस CMS और स्टैटिक बिल्ड पर एक मार्केटिंग साइट चलाती है। एक एडिटर एक पार्टनर घोषणा तैयार कर रहा है जिसमें एक ऐसे पार्टनर डोमेन की लिंक है जिसे पिछले सप्ताह रजिस्टर किया गया था।
2
09:14, एडिटर प्रकाशित (publish) बटन दबाता है
पब्लिश वेबहुक एक फंक्शन को कॉल करता है। फंक्शन पार्टनर डोमेन के खिलाफ एक लिंकबैक चेकर कॉल चलाता है और किसी भी गैर-सफल उत्तर पर रिलीज़ को ब्लॉक करने के लिए लिखा गया है।
3
09:14, बिल्ड कभी शुरू नहीं होता
एक साथ दो चीजें फेल होती हैं। डोमेन बिल्कुल नया है, इसलिए हमारा इंडेक्स शायद उसे अभी तक नहीं जानता। अलग से, टीम के की का प्रीपेड बैलेंस खाली था, इसलिए पेड फॉलो-अप कॉल ने HTTP 402 लौटाया।
4
09:40, टीम इसे पाती है
एडिटर एक अस्पष्ट त्रुटि की रिपोर्ट करता है। एक इंजीनियर फंक्शन लॉग पढ़ता है, 402 और खाली नतीजा देखता है, और बीस मिनट बिताता यह समझने में कि इनमें से किसने ब्लॉक किया।
5
10:05, लॉन्च हाथ से किया जाता है
कोई हूक को मैन्युअल डिप्लॉय के साथ बायपास कर देता है। लॉन्च 55 मिनट देर से होता है, और बायपास से यह रिकॉर्ड नहीं रहता कि किन चेकों को छोड़ा गया था।
लॉन्च से पहले टीम ने क्या चेक किया था
बहुत कम, जैसा कि पता चला। टेस्ट लिस्ट में केवल परिचित डोमेन थे, इसलिए गैप तब तक छिपा रहा जब तक एक पार्टनर लिंक नहीं आई। एक प्रसिद्ध साइट पर टेस्ट यह साबित करता है कि पाइपलाइन काम कर रही है, और यह कुछ नहीं बताता कि एक ऐसे डोमेन के बारे में जिसका इंडेक्स ने अभी तक अवलोकन नहीं किया है।
बेहतर टेस्ट लिस्ट में डोमेन की तीन किमें होनी चाहिए: एक स्थापित, एक छोटा निश (niche) और हाल ही में रजिस्टर किया गया एक डोमेन। किसी भी भरोसे से पहले इन तीनों को हूक से गुज़ारा जाए।
टेस्ट ने किन डोमेनों को कवर किया?
केवल आसान वाले। लिस्ट पर हर डोमेन के पीछे सालों का इतिहास था, इसलिए हर उत्तर पूरा आया, और किसी को यह नहीं दिखा कि एक खाली उत्तर प्रकाशन को कैसे प्रभावित करता है।
एक ऐसा डोमेन जो वास्तव में नया है, जोड़ें और उसके नतीजे को हाथ से पढ़ें। यदि नोट में 'बैड' लिखा है जहाँ 'अनजान' होना चाहिए, तो लॉन्च से पहले नियम को फिर से लिखना चाहिए।
स्टेजिंग रन में क्या छूट गया?
स्टेजिंग रन ने एक ऐसे की का उपयोग किया जिसका बैलेंस स्वस्थ था, इसलिए खाली-बैलेंस वाला रास्ता कभी एक्जीक्यूट नहीं हुआ। किसी ने यह टेस्ट नहीं लिखा था कि क्रेडिट जानबूझकर खत्म किया जाए।
उस रास्ते को टेस्ट के अंतर्गत रखें। प्रति तिमाही एक बार 402 फोर्स करें, और देखें कि एडिटर को बाद में क्या दिखता है, क्योंकि एक ऐसा फेल्योर रास्ता जिसे कोई नहीं चलाता, उस पर भरोसा नहीं किया जा सकता।
ऐा क्यों हुआ
गेट ने हर गैर-सफलता को एक निर्णय माना। यही मूल कारण था। बैलेंस की समस्या और एक अज्ञात डोमेन टूलिंग और इंडेक्स के बारे में तथ्य हैं, और इनमें से कोई भी पेज के बारे में कुछ नहीं बताता।
हमारा ग्राफ़ लगभग महीने में एक बार फिर से बनाया जाता है। पिछली रिफ्रेश के बाद रजिस्टर किया गया कोई भी डोमेन खाली दिख सकता है, और एक नया पार्टनर लॉन्च पेज के लिए सामान्य मामला है। किसी ने जाँच नहीं की थी। टीम ने हूक को केवल पुराने, परिचित डोमेन जैसे nytimes.com के साथ टेस्ट किया था।
दूसरी चूक मौन थी। फंक्शन ने त्रुटि लॉग की लेकिन कोई अलर्ट नहीं भेजा, और एडिटर को एक सामान्य विफलता संदेश दिखा जिसमें यह संकेत नहीं था कि क्रेडिट खत्म हो गया है।
लागत कभी मुद्दा नहीं थी। कॉल के लिए 2 क्रेडिट पर, इस काल्पनिक साइट के लिए महीने भर की जाँच की कुल लागत लगभग $0.60 थी, जो लागत तालिका में 3,000-पब्लिश वाली पंक्ति के समान है। गेट सस्ता था और फिर भी 2026 में उन्हें एक घंटा खर्च हुआ।
402 को अपनी अलग लाइन मिलनी चाहिए। एक प्रीपेड बैलेंस एक स्टेट है जिसे आप देख सकते हैं, इसलिए 10,000 क्रेडिट पर एक साधारण अलर्ट, जो $1 है, दिनों पहले फायर हो जाता।
टीम द्वारा लिखे गए एक्शन आइटम्स
मालिक रोल हैं, लोग नहीं। सभी आइटम्स उदाहरण का हिस्सा हैं।
बदलाव
मालिक
क्यों
402 को एक स्किप प्लेटफॉर्म चैनल के लिए अलर्ट के रूप में मानें
प्लेटफॉर्म
क्रेडिट एक बिलिंग स्टेट है, पेज स्टेट नहीं
नए डोमेन के लिए खाली नतीजे को 'बैड' नहीं, 'अनजान' मानें
प्लेटफॉर्म
इंडेक्स में लगभग एक महीने की देरी होती है
एडिटर को कारण स्पष्ट शब्दों में दिखाएं
एडिटरियल टूलिंग
लॉग पढ़ने में 20 मिनट बर्बाद
छोड़े गए चेकों को एंट्री पर रिकॉर्ड करें
प्लेटफॉर्म
मैन्युअल डिप्लॉय से कोई ट्रेल नहीं मिला
इस सप्ताह रजिस्टर किए गए एक डोमेन के साथ हूक का टेस्ट करें
QA
पुराने डोमेन गैप को छिपा देते हैं
लॉन्च सप्ताह के लिए एक अभ्यास
अगली विफलता के बाद नहीं, अगले लॉन्च से पहले ये चलाएं।
1
एक ऐसा डोमेन चुनें जिसकी जाँच किसी ने नहीं की है
हाल ही में रजिस्टर किए गए एक डोमेन को चुनें और उस पर फ्री ओवरव्यू एक्शन कॉल करें। पुष्टि करें कि एक पतला उत्तर 'ब्लॉक' के रूप में नहीं, बल्कि 'अनजान' के रूप में लॉग किया जाता है।
2
एक टेस्ट बैलेंस खाली करें
एक टेस्ट की का उपयोग करें जिसका बैलेंस छोटा है और जानबूझकर उसे शून्य तक चले जाने दें। देखें कि 402 कैसे आता है, अलर्ट कैसे फायर होता है और प्रकाशन बिल्ड तक कैसे जारी रहता है।
3
एडिटर का संदेश ज़ोर से पढ़ें
एक सहकर्मी से पूछें जिसे हूक नहीं दिखा है कि वह त्रुटि पाठ पढ़े। यदि वे यह नहीं कह सकते कि अगला कदम क्या उठाना है, तो लॉन्च से पहले संदेश को फिर से लिखें।
4
स्किप को एंट्री में लिखें
पुष्टि करें कि एक छोड़ा गया चेक एंट्री पर एक तारीख वाले नोट को छोड़ता है, कारण सहित। एक मैन्युअल डिप्लॉइ के बाद फिर से कोई ऐसा गैप नहीं रहता जिसे कोई समझ न पाए।
फिक्स को कैसे लिखा गया
टीम ने एक सामान्य विफलता को तीन हिस्सों में बाँटा, क्योंकि हर उत्तर का अलग मालिक है। एक 401 एक की की समस्या है, एक 402 एक बिलिंग स्टेट है, और नए डोमेन के लिए एक खाली नतीजा बस अनजान है। प्रत्येक को अपनी अलग शाखा और अपना संदेश मिलता है। यही पूरा बदलाव है।
कोई स्टैक ट्रेस पढ़ने की ज़रूरत नहीं थी कि पता चले कि क्या हुआ। अलर्ट स्टेट का नाम बताता है, और एडिटर को एक वाक्य दिखता है जो बताता है कि अगला कदम क्या उठाना है।
बैलेंस अलर्ट शून्य से बहुत ऊपर क्यों सेट किया गया?
दस हजार क्रेडिट प्रकाशित कीमत पर $1 हैं, एक छोटी राशि जो अभी भी पर्याप्त चेतावनी देती है जब यह जल्दी आती है। अलर्ट को उस जगह सेट करें जहाँ एक इंसान इसे देखे, न कि एक ऐसे लॉग में जिसे कोई शुक्रवार को नहीं खोलता।
एक जाँच जो दिन में एक बार ज़ोर से फेल हो, एक मौन जाँच से बेहतर है जो लॉन्च के दौरान फेल होती है।
संख्या को टीम से सहमत करें, और की रोटेशन के नियम के साथ उसी जगह लिखें, ताकि दोनों को एक साथ समीक्षा की जा सके।
क्या एक नया डोमेन विफलता माना जाना चाहिए?
नहीं। एक ऐसा डोमेन जिसे इंडेक्स ने अभी तक नहीं देखा, इंडेक्स के बारे में एक तथ्य है, पेज के बारे में नहीं। इसे तारीख के साथ 'अनजान' के रूप में स्टोर करें, और एक एडिटर को यह तय करने दें कि क्या वह अगली रिफ्रेश का इंतज़ार करे।
यही नियम किसी भी पतले उत्तर पर लागू होता है। इसे गायब डेटा के रूप में मानें, और पार्टनर पर कभी भी निर्णय के रूप में नहीं।
अनजान उत्तरों को उनकी अपनी लिस्ट में लॉग करें, ताकि अगली समीक्षा में उनका पैटर्न सामने आए न कि सामान्य लॉग में दब जाए।
क्या कॉपी किया जाए
लिंक डेटा पर फेल ओपन करें, अलर्ट पर फेल लॉड करें
लिंक चेक कभी भी एडिटर और लॉन्च के बीच खड़ी होने वाली एकमात्र चीज नहीं होनी चाहिए। पेज को गुज़ार दें, एंट्री को टैग करें, और विफलता को उस व्यक्ति के लिए असंभव बनाएं जो की का मालिक है।
कोड में 401, 402 और एक खाली नतीजे को अलग-अलग पहचानें
बैलेंस अलर्ट को शून्य से काफी ऊपर रखें (देखें लागत तालिका)
लॉन्च डे से पहले स्टेजिंग पर विफलता का अभ्यास करें
टीम द्वारा बाद में पूछे गए प्रश्न
समीक्षा की बैठक ने इस कहानी के हर संस्करण में एक ही छोटे समूह के प्रश्न उठाए। यहाँ बताया गया है कि काल्पनिक टीम ने उनका उत्तर कैसे दिया, और वे उत्तर एक संगठन से दूसरे में कैसे अलग होंगे।
इनमें से कोई भी उत्तर सार्वभौमिक नहीं है, और हर एक इस बात पर निर्भर करता है कि पेज किस लिए है। बात यह है कि अगली रिलीज़ से पहले कागज़ पर एक उत्तर तैयार हो।
क्या गेट को फेल क्लोज़ होना चाहिए था?
इस काल्पनिक टीम के लिए, नहीं। एक लिंक चेक एक मासिक इंडेक्स पर बना सिग्नल है, और यह एडिटर और लॉन्च के बीच एकमात्र चीज नहीं होना चाहिए।
नीति को एक वाक्य में लिखें, ताकि अगला इंजीनियर एक इच्छित ब्लॉक और एक बग में अंतर कर सके।
क्या एक बड़ा बैलेंस इसे रोक सकता था?
यह समस्या को ठीक करने के बजाय टाल देता। एक बड़ा बैलेंस भी खाली हो सकता है, और एक गेट जो हर गैर-सफलता को एक निर्णय मानता है, पहली अज्ञात डोमेन पर ब्लॉक कर देगा।
फिक्स तीन उत्तरों में विभाजन है, plus एक अलर्ट जो जल्दी फायर होता है। बैलेंस कहानी का केवल एक हिस्सा है।
बने किसी भी गेट से वही प्रश्न पूछें: कौन सी विफलता मौन रहेगी, और इसे सबसे पहले कौन नोटिस करेगा?
काल्पनिकता पर एक नोट
वास्तविक टीम अलग होंगी। आपकी टीम के पास अच्छे कारणों से फेल क्लोज़ होना हो सकता है, जैसे कि एक विनियमित साइट जहाँ हर आउटबाउंड लिंक को एक व्यक्ति द्वारा समीक्षित किया जाता है। ठीक है। बस इसे एक चुनाव बनाएं।
वेबहुक रनबुक उसी निर्णयों को एक चेकलिस्ट के रूप में सूचीबद्ध करता है, और माइथ लिस्ट उन विश्वासों को कवर करता है जिन्होंने इस काल्पनिक टीम को फँसाया।