DevOps इंजीनियर इंटरव्यू सवाल

आपकी CI पाइपलाइन flaky है और टीम लाल builds को पढ़े बिना retry करने लगी है। इसे कैसे ठीक करेंगे?

इंटरव्यूअर असल में क्या परख रहा है, अपना जवाब कैसे स्ट्रक्चर करें, और एक बोला हुआ उदाहरण जिसे आप अपना सकते हैं।

छोटा जवाब

flakiness को प्रोडक्शन incident की तरह लें, क्योंकि जिस पाइपलाइन पर किसी को भरोसा नहीं वह कोई सुरक्षा देती ही नहीं। पहले नापें: pass rate ट्रैक करें और जो tests बीच बीच में फेल होते हैं उन्हें quarantine करें ताकि main फिर हरा हो जाए। फिर quarantine किए गए tests को वजह के हिसाब से ठीक करें, जो आमतौर पर shared state, timing की धारणाएं, या कोई असली race condition होती है। नियम लागू करें कि quarantine अस्थायी है, उसका एक owner और एक तारीख है, ताकि वह कब्रिस्तान न बन जाए।

इंटरव्यूअर यह क्यों पूछते हैं

यह संस्कृति और सिस्टम दोनों का सवाल है। इंटरव्यूअर देखना चाहता है कि आप असली नुकसान पहचानते हैं, यानी retry करने से लोग सच्ची नाकामियों को नज़रअंदाज़ करना सीख जाते हैं, और यह कि आपके पास अनुशासन की अपील नहीं, ठोस योजना है। वे यह भी सुनते हैं कि आप tests को लापरवाही से डिलीट या quarantine तो नहीं करेंगे, क्योंकि flaky test कभी कभी प्रोडक्ट में असली concurrency बग का इशारा होता है।

अपना जवाब कैसे स्ट्रक्चर करें

  • असली कीमत बताएं: ऐसा लाल build जिसका कोई मतलब ही नहीं।
  • कुछ भी ठीक करने से पहले flakiness नापें।
  • भरोसा लौटाने के लिए quarantine करें, फिर जड़ से ठीक करें।
  • quarantine पर बाड़ लगाएं ताकि वह अस्थायी ही रहे।

उदाहरण जवाब

बोला हुआ उदाहरण, पहले व्यक्ति में

खतरनाक हिस्सा बर्बाद समय नहीं है, यह है कि लोगों ने सीख लिया है कि लाल का मतलब टूटा हुआ नहीं, तो जिस दिन असली regression आएगा वह भी retry होकर निकल जाएगा। मैं नापने से शुरू करता हूं, क्योंकि कौन से tests flaky हैं इस बारे में राय आमतौर पर गलत होती है। एक ही अनबदले commit पर suite बार बार चलाओ, या कुछ सौ runs पर हर test का pass rate ट्रैक करो, और आपको रैंक की गई सूची मिल जाती है। फिर सबसे बुरे वालों को blocking रास्ते से हटाकर quarantine करो ताकि main हरा हो और लाल का फिर मतलब बने, लेकिन quarantine एक owner और एक expiry तारीख के साथ, वरना वह ऐसा कब्रिस्तान बन जाता है जिसे कोई नहीं देखता। ठीक करने में वजहें झुंड में आती हैं: डेटाबेस या singleton के ज़रिए state साझा करते tests, सही इंतज़ार की जगह sleeps, और क्रम पर निर्भरता। और इनमें से कुछ असली bugs होते हैं। मैंने एक बार ऐसे test का पीछा किया जो पचास में एक बार फेल होता था और वह connection pool में असली race निकला, जो प्रोडक्शन में बीच बीच में होने वाली ऐसी दिक्कत बनता जिसे कोई दोहरा ही नहीं पाता।

जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।

देखें यह कैसे काम करता है

फॉलो-अप सवाल जिनकी उम्मीद रखें

  • नए flaky tests merge होने से कैसे रोकेंगे?
  • किसी test को डिलीट करना कब सही फैसला है?
  • साझा test एनवायरनमेंट से आने वाली flakiness को कैसे संभालते हैं?

DevOps इंजीनियर के और सवाल

आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।

मेरे सवाल प्रेडिक्ट करें

मुश्किल सवाल पूछे जाने से पहले उनकी रिहर्सल कीजिए

एक लाइव कोपायलट के साथ प्रैक्टिस कीजिए, फिर तैयार होकर अंदर जाइए। $29 Session Pass आपको इंटरव्यू पार करा देता है, न कोई सब्सक्रिप्शन, न कोई लॉक-इन।

GhostPilot पाएं