expand and contract पैटर्न इस्तेमाल करें। पहले expand: नया column या table इस तरह जोड़ें कि पीछे से मेल खाता रहे और अभी डिप्लॉय कोड चलता रहे। फिर ऐसा कोड डिप्लॉय करें जो पुराने और नए दोनों में लिखे, मौजूदा rows को छोटे batches में backfill करें, reads को नए ढांचे पर स्विच करें, और पुराना column किसी बाद वाले release में ही गिराएं। हर migration को उससे पहले और उसके बाद चल रहे एप्लिकेशन वर्जन दोनों के साथ चलने लायक रखें।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर जानना चाहता है कि आपने लाइव ट्रैफिक के सामने schema बदलाव शिप किए हैं या सिर्फ development में। वे expand and contract सुनते हैं, लंबे locks और replication lag से बचने के लिए batches में backfill, और migration को deploy से अलग करना। खास lock खतरों का ज़िक्र, जैसे index बनाना, थ्योरी नहीं असली प्रोडक्शन तजुर्बा दिखाता है।
अपना जवाब कैसे स्ट्रक्चर करें
- पैटर्न का नाम और नियम बताएं: हर कदम पीछे से मेल खाता हो।
- चरण क्रम से बताएं: expand, dual write, backfill, switch, contract।
- lock और replication के खतरे और उनसे बचाव कवर करें।
- बताएं कि हर चरण पर आप जांच कैसे करते हैं और rollback कैसे।
उदाहरण जवाब
मेरा नियम यह है कि कोई भी डिप्लॉय किया गया schema कोड के पिछले और अगले दोनों वर्जन के साथ चलना चाहिए, क्योंकि rolling deploy के दौरान दोनों एक साथ चल रहे होते हैं। तो मैं कभी column का नाम नहीं बदलता, मैं expand और contract करता हूं। मान लीजिए हम name फील्ड को बांट रहे हैं। पहली migration नए nullable columns जोड़ती है, जो सस्ता है और किसी मौजूदा row को नहीं छूता। फिर एक release जिसमें एप्लिकेशन पुराने और नए दोनों ढांचे में लिखता है लेकिन पढ़ता अब भी पुराना है, तो यूज़र को दिखने वाली कोई चीज़ अभी नए डेटा पर निर्भर नहीं। फिर backfill, कुछ हज़ार के batches में और बीच में ठहराव के साथ, ताकि न मैं लंबा transaction पकड़ूं और न replicas पर replication lag बढ़ाऊं। फिर एक release जो नए columns पढ़ता है, और पुराने अब भी लिखे जा रहे हैं ताकि निकलने का रास्ता खुला रहे। जब यह एक दो release तक स्थिर रह जाए, तभी मैं dual writing रोकता हूं और पुराने columns गिराता हूं। मैं migrations को deploy के रास्ते से भी बाहर रखता हूं, और जो चीज़ भारी lock लेती है, जैसे index बनाना, वह concurrently और कम ट्रैफिक वाले वक्त चलती है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- backfill पूरा और सही हुआ, यह कैसे जांचते हैं?
- read switch गलत निकले तो आपका rollback प्लान क्या है?
- table में पचास करोड़ rows हों तो यह कैसे करेंगे?
DevOps इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें