metrics समय के साथ जोड़े गए आंकड़े हैं, स्टोर करने में सस्ते, और alert इन्हीं पर लगते हैं। logs अलग अलग घटनाएं हैं जिनमें ब्यौरा होता है, वे तब पढ़े जाते हैं जब आपको मोटा मोटी पता हो कि कहां देखना है। traces एक request का कई सर्विसेज तक पीछा करते हैं और बताते हैं कि वक्त कहां गया। किसी incident में आम तौर पर आप पता लगाने के लिए metrics, जगह ढूंढने के लिए traces और समझने के लिए logs इस्तेमाल करते हैं, तो जिस सिस्टम में तीन में से कोई एक नहीं है वहां डिबग करना जरूरत से ज्यादा धीमा हो जाता है।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर यह देखने के लिए पूछते हैं कि आपने जो बनाया उसे चलाया भी है या नहीं। वे metrics पर alert और logs तथा traces से डिबग वाला फर्क चाहते हैं, लागत के फर्क की समझ चाहते हैं क्योंकि ज्यादा मात्रा में logs महंगे पड़ते हैं, और आदर्श रूप से यह बात कि correlation id ले जाने वाले structured logs ही तीनों को साथ में काम लायक बनाते हैं। धुंधले जवाब बताते हैं कि सामने वाले को कभी pager नहीं बजा।
अपना जवाब कैसे स्ट्रक्चर करें
- हर एक को शक्ल और लागत के हिसाब से एक लाइन में परिभाषित कीजिए।
- उन्हें incident के तरीके पर बिठाइए।
- उस correlation id पर जोर दीजिए जो तीनों को जोड़ती है।
- cardinality और लागत की सीमाओं का जिक्र कीजिए।
उदाहरण जवाब
metrics समय के साथ जोड़े गए counters और histograms हैं। वे सस्ते हैं, alert मैं उन्हीं पर लगाता हूं, और वे बताते हैं कि कुछ गलत है लेकिन कभी नहीं बताते कि क्यों। logs संदर्भ के साथ अलग अलग घटनाएं हैं, ज्यादा मात्रा में महंगे, और उन्हें मैं तब पढ़ता हूं जब पता हो कि कहां देखना है। traces एक request को हर उस सर्विस के आर पार सिल देते हैं जिसे उसने छुआ और हर span का वक्त दिखाते हैं, जो यह जानने का सबसे तेज तरीका है कि दिक्कत हमारी है या किसी dependency की। incident में तरीका मोटे तौर पर यही है: पता लगाने के लिए metrics, जगह ढूंढने के लिए traces, समझने के लिए logs। इन्हें साथ काम करने लायक जो चीज बनाती है वह है हर कॉल में आगे बढ़ने वाली और हर structured log line में शामिल correlation id, जिससे किसी धीमे trace से मैं सीधे ठीक उन्हीं log entries पर कूद सकता हूं। जो गलती मैंने की है वह cardinality की है: मैंने एक बार user id को metric label बना दिया और time series की गिनती फट पड़ी, जो जल्दी ही महंगी पड़ गई। ज्यादा cardinality traces और logs में रहनी चाहिए, metric labels में नहीं।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- किसी आम API सर्विस के लिए आप किन चीजों पर alert लगाएंगे?
- ज्यादा मात्रा पर logging की लागत आप कैसे काबू में रखते हैं?
- sampling इस बात पर क्या असर डालती है कि traces से आप क्या सीख सकते हैं?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें