हर call पर साफ साफ timeout रखें, जो आपकी अपनी deadline से छोटा हो, और client library के डिफ़ॉल्ट पर कभी भरोसा न करें। retry सिर्फ idempotent ऑपरेशंस पर करें, exponential backoff और jitter के साथ, और कोशिशों की गिनती छोटी और तय रखें। एक circuit breaker जोड़ें ताकि बार बार की नाकामी पर कतार लगने की जगह तुरंत fail हो, और तय करें कि degraded दिखता कैसा है: कोई cached value, कोई अधूरा जवाब, या एक साफ error, न कि लटकी हुई request।
इंटरव्यूअर यह क्यों पूछते हैं
retries वह क्लासिक तरीका है जिससे छोटी घटना outage बन जाती है, इसलिए यह जांचता है कि आप retry amplification और एक global deadline की ज़रूरत समझते हैं या नहीं। इंटरव्यूअर ठोस बातें चाहते हैं: jitter, budgets, retry की शर्त के तौर पर idempotency, और fallback व्यवहार। जो जवाब सिर्फ retries और circuit breaker जोड़ने की बात करके amplification पर कुछ नहीं कहते, वे बताते हैं कि यह पढ़ा गया है, चलाया नहीं गया।
अपना जवाब कैसे स्ट्रक्चर करें
- timeouts और deadline propagation से शुरू करें।
- retry की शर्त बताएं: ऑपरेशन idempotent हो।
- amplification से बचने के लिए backoff, jitter और retry budgets समझाएं।
- तय करें कि यूज़र को असल में degraded व्यवहार क्या मिलता है।
उदाहरण जवाब
सबसे पहली चीज़ है हर outbound call पर timeout, जो latency के वितरण से चुना गया हो, यूं ही नहीं, और हमेशा उस deadline से छोटा हो जो मुझे मिली थी, ताकि मेरे caller के हाथ खड़े करने से पहले मैं fail हो जाऊं। बची हुई deadline मैं आगे भी भेजता हूं, वरना ऐसी request पर काम चलता रहता है जिसका कोई इंतज़ार ही नहीं कर रहा। retries सिर्फ idempotent calls पर लागू होती हैं, और तब भी exponential backoff तथा jitter के साथ, दो या तीन कोशिशों तक सीमित। सीमा की वजह amplification है: अगर हर layer तीन बार retry करे, तो नीचे की छोटी सी झलक दस गुना लोड बन जाती है, और इसी तरह एक धीमी dependency पूरा outage बन जाती है। इसीलिए मुझे retry budget भी पसंद है, जहां retries कुल requests के एक छोटे प्रतिशत तक सीमित रहती हैं। ऊपर एक circuit breaker बैठता है ताकि नाकामी एक हद पार करते ही मैं कुछ देर के लिए तुरंत fail करूं और बीच बीच में जांचता रहूं, जिससे मैं पहले से जूझ रही चीज़ पर और requests नहीं लादता। और मैं पहले ही तय कर लेता हूं कि degraded का मतलब क्या है; एक pricing service में हमने checkout fail करने की जगह आखिरी cached कीमत staleness flag के साथ दिखाई थी।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- किसी खास dependency के लिए timeout की value आप कैसे तय करते हैं?
- retry amplification क्या है, और metrics में आप इसे कैसे पकड़ते हैं?
- circuit breaker यह कैसे तय करता है कि अब दोबारा बंद होना है?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें