delivery को at least once मानिए और handler को idempotent बनाइए। पहले signature जांचिए, फिर provider के event id को unique constraint के पीछे रखिए और अगर उसे पहले देख चुके हैं तो तुरंत 200 लौटा दीजिए। state का बदलाव और id का insert एक ही transaction में कीजिए ताकि crash उसे आधा लागू न कर सके। धीमा काम queue में डालकर handler तेज़ रखिए, और जब आप सच में फेल हों तो provider को दोबारा भेजने दीजिए।
इंटरव्यूअर यह क्यों पूछते हैं
payments वहां हैं जहां सही न होने की कीमत पैसा और भरोसा दोनों है, तो इंटरव्यूअर सबूत चाहता है कि आपने distributed delivery की गारंटियों पर सोचा है। वे सुन रहे हैं कि idempotency किसी in memory set से नहीं, डेटाबेस से लागू होती है, कि signature जांची जाती है, और कि नाकामी पर आपका handler क्या लौटाता है। जिन्होंने इसे प्रोडक्शन में चलाया है वे आमतौर पर बेतरतीब क्रम में आते events का ज़िक्र करते हैं, जो हर किसी को मिलने वाला दूसरा bug है।
अपना जवाब कैसे स्ट्रक्चर करें
- यह तय करें कि webhook की delivery at least once होती है।
- unique constraint से लागू होने वाली idempotency बताएं।
- असर और निशान दोनों एक ही transaction में रखें।
- समझाएं कि सफलता और नाकामी पर आप क्या लौटाते हैं।
उदाहरण जवाब
मैं इस धारणा से शुरू करता हूं कि provider वही event एक से ज़्यादा बार, बेतरतीब क्रम में, और कभी कभी घंटों देर से भेजेगा, क्योंकि तीनों होते हैं। तो handler पहले signature और timestamp जांचता है, फिर provider के event id को एक unique index वाली processed_events table में insert करता है। अगर वह insert conflict करता है तो हम इसे संभाल चुके हैं, और मैं दोबारा काम करने की जगह सीधे 200 लौटा देता हूं। अहम बारीकी यह है कि वह insert और असली असर, यानी subscription देना या payment दर्ज करना, एक ही transaction में होते हैं, ताकि बीच में मरता हुआ process एक को दूसरे के बिना न छोड़ जाए। कोई भी धीमी चीज़, जैसे receipt का email भेजना, अपनी idempotency key के साथ queue पर जाती है। मैं event का timestamp भी रखता हूं और उस event को अनदेखा करता हूं जो मेरे पास पहले से मौजूद हालत से पुराना है, और यही आपको तब बचाता है जब cancellation उस upgrade से पहले आ जाए जो उससे पहले हुआ था। नाकामी पर मैं जानबूझकर 500 लौटाता हूं ताकि provider दोबारा भेजे, और कोई event dead letter queue में गिरे तो alert करता हूं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- जब events बेतरतीब क्रम में आएं तो क्या करते हैं?
- handler में bug ठीक करने के बाद events दोबारा कैसे चलाएंगे?
- जो संदेश हर retry पर फेल हो, उसे कैसे संभालते हैं?
फुल स्टैक डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें