पहले देखें कि टूटना ज़रूरी भी है या नहीं: fields जोड़ना और optional parameters स्वीकार करना backward compatible रहता है, बशर्ते क्लाइंट अनजान fields को नज़रअंदाज़ कर दें। अगर सच में टूटता है, तो साफ साफ version करें, आमतौर पर major versions के लिए path prefix, दोनों versions को एक ही internal model पर साथ साथ चलाएं, headers और per version metrics के साथ deprecation की समयसीमा घोषित करें, और पुराना तभी हटाएं जब उस पर ट्रैफ़िक लगभग शून्य हो जाए।
इंटरव्यूअर यह क्यों पूछते हैं
यह backward compatibility और ऑपरेशनल अनुशासन पर परखने वाला सवाल है। इंटरव्यूअर सुनना चाहते हैं कि जहां संभव हो आप breaking changes से बचते हैं, आप बता सकते हैं कि breaking किसे कहते हैं, और आपने सच में कोई endpoint रिटायर किया है, जिसके लिए यह जानना पड़ता है कि उसे कौन कॉल करता है। जो जवाब URL में v2 डालने पर ही रुक जाते हैं, वे असली मुश्किल हिस्सा चूक जाते हैं, यानी migration और हटाना।
अपना जवाब कैसे स्ट्रक्चर करें
- additive बदलावों को सचमुच breaking बदलावों से अलग करें।
- एक versioning तरीका चुनें और संक्षेप में सही ठहराएं।
- बताएं कि logic दोहराए बिना दोनों versions साथ कैसे रहते हैं।
- deprecation और हटाने की प्रक्रिया डेटा के साथ रखें।
उदाहरण जवाब
मेरा पहला कदम यह जांचना है कि टूटना ज़रूरी है या नहीं। कोई field जोड़ना, कोई optional parameter जोड़ना, या कोई enum value जोड़ना अगर क्लाइंट अनजान values सह लेते हैं, यह सब बिना version बढ़ाए जा सकता है। breaking का मतलब है कोई field हटाना या उसका नाम बदलना, validation कड़ी करना, या किसी मौजूदा value का अर्थ बदल देना। जब यह सचमुच breaking होता है, तो मैं path में major version रखता हूं, क्योंकि यह logs में दिखता है और क्लाइंट के लिए समझना आसान है, और पुराने version को मैं उसी internal model के ऊपर एक पतली translation layer की तरह रखता हूं ताकि मुझे दो implementations न संभालनी पड़ें। फिर वह हिस्सा आता है जिसमें असल में समय लगता है: per version per client requests instrument करना, response header और docs में sunset तारीख छापना, और सबसे बड़े callers से सीधे संपर्क करना। पिछली बार जो मैंने किया, उसमें v1 पर ट्रैफ़िक दो integrations से दिन में गिनी चुनी requests तक गिर गया, हमने संपर्क किया, और तीन महीने बाद उसे हटाना सुरक्षित था। per client metrics के बिना आप कभी कुछ delete नहीं कर पाते।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- किन बदलावों को आप बिना version बढ़ाए करना सुरक्षित मानते हैं?
- HTTP की जगह events या message payloads को आप कैसे version करते हैं?
- जो बड़ा कस्टमर migrate करने से इनकार कर दे, उसका आप क्या करते हैं?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें