हाल ही में मैंने एक परियोजना शुरू की जो बनाने में बहुत कठिन नहीं लगती थी, यह अवधारणा एक बहुत ही सरल अनुप्रयोग था जिसे अब हर दिन इनपुट स्वीकार करना पड़ता है (हो सकता है 10x एक दिन), और उन पर कुछ संचालन करने की कोशिश करें और सभी परिणाम एकत्र करें अतं मै। इस एप्लिकेशन को फिर एक फ्रंट-एंड वेब पोर्टल मिलेगा जिसका उपयोग ग्राहक परिणाम देखने के लिए कर सकते हैं, बिल्कुल रॉकेट साइंस नहीं।
इसके लिए मैंने शुरुआत में पायथन के बिल्ट-इन कॉनक्यूरिटी लाइब्रेरीज़ ( ThreadPoolExecutor
) का स्मार्ट उपयोग किया और फ्रंट-एंड के लिए एक आसान-टू-यूज़ लाइब्रेरी का उपयोग किया (मैंने फ्लास्क को चुना क्योंकि यह शुरुआती के लिए आसान है और इसे बनाए रखना और परीक्षण करना अपेक्षाकृत आसान है)।
एक बार जब हम परियोजना को आधा कर रहे थे, तो पीएम ने कहा कि हमें थ्रेड्स के बजाय थर्ड पार्टी मैसेज कतार क्षमताओं का उपयोग करना था और लोड बैलेंसिंग को लागू करना था, आखिरकार क्या हो रहा था कि हमने आखिरकार सेलेरी, रेडिस, रैबिटएमक्यू, नगनेक्स, uWSGI के साथ काम करना शुरू कर दिया। और अन्य बड़ी थर्ड पार्टी सेवाओं का एक समूह, जिसके पास कोई वास्तविक अनुभव नहीं था।
अंत में यह स्पेगेटी कोड का एक गुच्छा होता है, अप्रतिष्ठित कार्य (तीसरे पक्ष के पुस्तकालयों की जटिलता के कारण, कोड को पैच करने से भी काम नहीं होता) और सिरदर्द का एक गुच्छा क्योंकि किसी को भी नहीं पता था कि इन सेवाओं का अतिरिक्त मूल्य क्या था ।
इससे पहले कि आप "हाँ आपको उन सेवाओं का उपयोग करना चाहिए", ध्यान रखें कि कोई भी इनका उपयोग करना नहीं जानता है या यह भी जानता है कि वे दौड़-हालत से ग्रस्त कोड के अलावा क्या करते हैं।
इसके बारे में मुझे क्या करना चाहिए? इस बिंदु पर, हमारे पास जो कुछ भी था, उसे वापस करना बहुत महंगा पड़ेगा और पीएम इन सेवाओं का उपयोग करने पर मृत है, भले ही अंत-उत्पाद अब शुरुआत में खराब हो। क्या उसके साथ इस पर चर्चा करने में भी कोई फायदा है? क्या मैं और समय मांगता हूं? या कठोर जवाब, क्या मैं सिर्फ अपनी नौकरी के लिए मूर्ख हूं?