डिप्लॉयमेंट के समय अचानक बढ़ने वाली API Latency को हल करना - Django + Gunicorn केस
- Backend सिस्टम Django + Gunicorn से बना था
- हर बार डिप्लॉयमेंट के दौरान API Latency के तेजी से बढ़ने की समस्या सामने आई
- Gunicorn के सिद्धांत को देखने पर पता चला कि कुछ हिस्सों में Cold Start होता है
- Django के आंतरिक कोड का विश्लेषण करने पर पता चला कि master worker process में fork करते समय, preload option देने के बावजूद कुछ तत्व पहले से लोड नहीं हो रहे थे, और इसी से समस्या का समाधान किया गया
सीखी गई बातें
- Django जैसे बहुत से उपयोगकर्ताओं द्वारा इस्तेमाल किए जाने वाले web framework में अधिकांश व्यवहार काफी विश्वसनीय होते हैं, इसलिए अक्सर यह मान लेने की प्रवृत्ति होती है कि वास्तविक उपयोगकर्ताओं के लिए भी सब वैसा ही होगा
- लेकिन वास्तविक कोड देखने पर समस्या पैदा करने वाला कोड मिला, और यह सीख मिली कि इस्तेमाल किए जा रहे framework पर अंधविश्वास नहीं करना चाहिए
- API Latency समस्या को हल करने की प्रक्रिया को समझना आसान नहीं था, क्योंकि उपयुक्त दस्तावेज़ों की कमी थी, आंतरिक संरचना और व्यवहार की गहरी समझ सीमित थी, और open source project के codebase में गहराई तक जाने से झिझक भी थी
- इस प्रक्रिया में कई जटिल समस्याएँ एक-दूसरे में उलझी हुई थीं, इसलिए इसे जल्दी समझ पाना मुश्किल था
- अंततः Django के आंतरिक कोड को देखकर समस्या हल की जा सकी
- इस प्रक्रिया में न सिर्फ इस्तेमाल किए जा रहे Django टूल्स की समझ बढ़ी, बल्कि यह भी सीखा कि आंतरिक कोड को देखना कुछ कठिन समस्याओं के समाधान खोजने में मदद कर सकता है
- समस्या के मूल कारण की पहचान करना महत्वपूर्ण है
- Health Check की सफलता की शर्तों को अधिक बार या अधिक समय के लिए समायोजित करके API Latency की आवृत्ति कम की जा सकती थी, लेकिन इससे मूल समस्या हल नहीं होती
- सामूहिक बुद्धिमत्ता का उपयोग करने से किन बिंदुओं पर जल्दी फोकस करना है और किस तरह का ज्ञान चाहिए, यह अधिक तेजी से समझा जा सकता है
- API Latency से जुड़ी समस्या को संगठन के साथ जल्दी साझा किया गया, और विभिन्न इंजीनियरों ने संभावित कारणों पर अपनी राय दी
- इन रायों को जल्दी एकत्र करके यह समझने में मदद मिली कि किस जगह पर ध्यान देना बेहतर होगा, और आवश्यक ज्ञान भी जल्दी मिल सका
- समस्या को हल करने के लिए उसके लक्षणों को दोहराने वाला environment तैयार करना महत्वपूर्ण है
- लोकल में उसी समस्या को दोहराने में सफलता मिली, और इसके जरिए यह सत्यापित किया जा सका कि समस्या वास्तव में ठीक हुई या नहीं
- इससे समस्या-लक्षण पुनरुत्पादन के महत्व को स्पष्ट रूप से समझा जा सका
1 टिप्पणियां
लिंक पर जाकर देखा तो पोस्ट की सामग्री काफ़ी अच्छी है।