प्रीप्रोड और प्रोडक्ट का माहौल कितना सहज होना चाहिए?


10

मैं अभी हाल ही में एक प्रोजेक्ट पर आया हूं और रिलीज के दौरान, हमने महसूस किया कि यह प्रोडक्शन में काम नहीं आया। यह अन्य सभी वातावरणों में काम करता है, लेकिन क्योंकि हमारे पास एक अलग रिलीज़ टीम है, और हम सर्वर और वातावरण स्वयं सेट नहीं कर सकते हैं, हमारे पास उन पर कॉन्फ़िगरेशन की कोई दृश्यता नहीं है।

हमें संदेह है कि प्रोडक्ट के खाते में कुछ उपयोगकर्ता अनुमतियाँ हैं या IIS सेटिंग्स अलग हैं, इसलिए हम अभी काम कर रहे हैं।

इसलिए मुझे लगता है कि यह पूरी बात मेरे लिए एक सीखने का अनुभव रहा है और मैं नहीं चाहता कि एक ही चीज फिर से दोहराई जाए। मैं पूछना चाहता हूं कि ये माहौल कितना अलग होना चाहिए? मैंने हमेशा सोचा था कि प्रीप्रोड एक ही डेटाबेस की प्रति का उपयोग करके प्रोडयूसर वातावरण के लिए एक समान कॉपी होनी चाहिए, उसी उपयोगकर्ता खाते की एक कॉपी का उपयोग करके, उसी सर्वर आदि पर स्थापित किया जाना चाहिए।

लेकिन मुझे इसे कितनी दूर ले जाना चाहिए? यदि वेब साइट बाहरी रूप से सामना कर रही है, तो क्या प्रीप्रोड बाहरी रूप से सामना करना चाहिए? क्या होगा यदि वेबसाइट में ऐसे घटक हैं जिन्हें नेविगेट करने के लिए उपयोगकर्ता खाते या पासवर्ड की आवश्यकता नहीं है? क्या बाहरी दुनिया के लिए इसे उजागर करना अभी भी ठीक है?


हर जगह मैंने काम किया है प्री-प्रोडक्शन प्रोडक्शन की एक सीधी कॉपी थी, डेटाबेस (एस) को छोड़कर, एक हफ्ते का होगा।
Nickz

@ निक: मेरा मतलब सिर्फ कोड आधार नहीं है, मेरा मतलब है कि पूरे वातावरण का पूरा सेट।
रोबोशॉप

जवाबों:


6

आपको निश्चित रूप से ऐसे वातावरण पर परीक्षण करना चाहिए जो आपके उत्पादन सेवर के समान है जहां तक ​​व्यावहारिक है। यदि आप नहीं करते हैं, तो आप परीक्षण नहीं कर रहे हैं कि आपके ग्राहक क्या उपयोग कर रहे हैं। यदि किसी भी बग रिपोर्ट का परीक्षण करने के लिए आपको इस तरह के वातावरण की आवश्यकता नहीं है।

जाहिर है कि ऐसी चीजें होंगी जो आप समान नहीं चाहेंगे - भुगतान प्रणालियों के लिंक मन में वसंत हो, लेकिन इनका मजाक उड़ाया जाना चाहिए जैसे कि वे असली चीज थे । ऐसी चीजें भी हैं जिन्हें आप दोहरा नहीं सकते - सिस्टम का पैमाना।

आप बाहरी URL के माध्यम से परीक्षण करना चाह सकते हैं - फिर से आप परीक्षण कर रहे हैं कि आपके उपयोगकर्ता क्या देख रहे हैं। बाहरी URL के माध्यम से परीक्षण भी सिस्टम के आंतरिक उपयोग के लिए एक अलग तरीके से नेटवर्क का उपयोग करेगा। अनुमतियाँ (उदाहरण के लिए) उपलब्ध बैंडविड्थ, फ़ायरवॉल आदि के रूप में एक भूमिका निभाएंगी, जिनमें से सभी का सामना उपयोगकर्ताओं को करना होगा, लेकिन यदि आप सिस्टम को सीधे एक्सेस करते हैं तो आप छोड़ देंगे।

मुझे उन घटकों के साथ कोई समस्या नहीं दिखती, जिनके लिए किसी खाते और पासवर्ड की आवश्यकता नहीं है। यदि इसे पासवर्ड की आवश्यकता नहीं है, तो यह महत्वपूर्ण / संवेदनशील नहीं है, यदि यह संवेदनशील है तो इसे पासवर्ड क्यों नहीं मिला है?


वाह, यह एक मूर्खतापूर्ण जवाब है। तो आपके परीक्षण के माहौल में, यदि आप खरीदारी करते हैं, तो उसे आपके द्वारा खरीदे गए क्रेडिट कार्ड और जहाज को चार्ज करना चाहिए? यदि ठेस के वातावरण में 150 सर्वर होते हैं, तो परीक्षण env भी होना चाहिए? मैंने कहा होगा "स्पष्ट रूप से" ठेस और परीक्षण के बीच अंतर होना चाहिए, लेकिन यह क्रिसएफ के लिए स्पष्ट नहीं था।
मालवियो

@ मालवोलियो - नहीं। मेरा मतलब यह नहीं था। मैं अंकों की अधिक सोच रहा था की अनुमति, कनेक्शन आदि के साथ सवाल में उठाया
ChrisF

11

मुझे लगता है कि इस के लिए सबसे अच्छा अभ्यास ब्लू ग्रीन परिनियोजन दृष्टिकोण है, जिसे जेज़ हम्बले और डेविड फार्ले ने अपनी पुस्तक कॉन्टिन्युअस डिलीवरी में लिखा है और मार्टिन फोवलर ने अपने ब्लॉग पोस्ट ब्लू ग्रीन तैनाती में वर्णित किया है ।

आधार बहुत सरल है। मार्टिन फाउलर की पोस्ट से:

ब्लू ग्रीन तैनाती

नीला-हरा परिनियोजन दृष्टिकोण ... [सुनिश्चित करता है] आपके पास दो उत्पादन वातावरण हैं, जितना संभव हो उतना समान। किसी भी समय उनमें से एक को उदाहरण के लिए नीला कहते हैं, लाइव है। जैसा कि आप अपने सॉफ़्टवेयर की एक नई रिलीज़ तैयार करते हैं, आप अपने अंतिम चरण का परीक्षण हरे वातावरण में करते हैं। एक बार जब सॉफ़्टवेयर ग्रीन वातावरण में काम कर रहा होता है, तो आप राउटर को स्विच करते हैं ताकि आने वाले सभी अनुरोध हरे वातावरण में जाएं - नीला अब निष्क्रिय है।

ब्लू-ग्रीन परिनियोजन आपको रोलबैक करने का एक तेज़ तरीका भी देता है - अगर कुछ भी गलत होता है तो आप राउटर को वापस अपने नीले वातावरण में बदल देते हैं।

यह दृष्टिकोण समान उत्पादन-पूर्व और उत्पादन वातावरण न होने की आपकी समस्या को हल करेगा, साथ ही आपकी तैनाती की रणनीति का अनुकूलन भी करेगा।


कूल डायग्राम के लिए 1+
Nickz

एमएमएम डेटाबेस को सिंक में रखने के बारे में निश्चित नहीं है। यह मुश्किल होगा। क्या होगा यदि लेन-देन आपके प्रीप्रोड सर्वर के माध्यम से आया है? क्या यह उत्पादन db में परिलक्षित होगा?
रोबोशॉप

लिखा है, यह बहुत महंगा है। आपको केवल परीक्षण के लिए लाइव उत्पादन के लिए आवश्यक सभी हार्डवेयर को डुप्लिकेट करना होगा। लेकिन हां, शांत आरेख।
मालवियो

1
तकनीकी, एन। अंग्रेजी अदालत में होम नाम के एक व्यक्ति पर अपने पड़ोसी पर हत्या का आरोप लगाने के लिए निंदा करने की कोशिश की गई थी। उनके सटीक शब्द थे: "सर थॉमस होल्ट ने एक क्लीवर लिया और अपने रसोइए को सिर पर मारा, जिससे सिर का एक हिस्सा एक कंधे पर और दूसरा हिस्सा दूसरे कंधे पर गिर गया।" अदालत के निर्देश से प्रतिवादी को बरी कर दिया गया, सीखा न्यायाधीशों ने कहा कि शब्दों ने हत्या का आरोप नहीं लगाया था, क्योंकि उन्होंने रसोइए की मृत्यु की पुष्टि नहीं की थी, जो केवल एक आक्षेप था। - एम्ब्रोस बिएरेस
मालवोलियो

1
हां, तकनीकी रूप से, मुझे हार्डवेयर की नकल करने की आवश्यकता नहीं है, लेकिन फिर भी यदि आप वर्चुअलाइजेशन के साथ चारों ओर बेवकूफ बनाकर उस आवश्यकता को चकमा देते हैं और इस तरह, आप या तो (ए) हार्ड आवंटन संसाधनों, जैसे बैंडविड्थ और सीपीयू, प्रत्येक वातावरण में, जो होगा हार्डवेयर या डुप्लिकेट शेयर संसाधनों की नकल के रूप में एक ही लागत , जिसका अर्थ है कि आपके परीक्षण मुद्दे आपके उत्पादन प्रणाली को नीचे ला सकते हैं।
मालवोलियो

3

हमारे अंतिम प्री-प्रोडक्शन का माहौल लोड बैलेंसर से निकाले गए लाइव सर्वरों में से एक है। हम अपने प्रीप्रोडक्शन बिल्ड (जो मूल रूप से डेटाबेस कनेक्शन स्ट्रिंग्स और कुछ अन्य कॉन्फ़िगरेशन परिवर्तनों के एक जोड़े के अलावा लाइव बिल्ड के समान है) को तैनात करते हैं और परीक्षण करते हैं। अगर यह ठीक हो जाता है तो हम लाइव कोड को तैनात करते हैं, और अंत में अगर यह ठीक साबित होता है तो हम सर्वर को लोड बैलेंसर पर लौटाते हैं और उत्पादन बिल्ड को एक-एक करके शेष सर्वर पर तैनात करते हैं।


1

वे यथासंभव समान होना चाहिए, ताकि आप सिस्टम के भीतर किसी भी बिंदु पर समस्याओं की पहचान कर सकें, पैमाने पर असमर्थता के संभावित अपवाद के साथ। यदि संभव हो तो, आपके उत्पादन पर्यावरण और पूर्व-उत्पादन / स्टेजिंग / परीक्षण वातावरण के बीच एकमात्र अंतर आकार का होगा - मैं बड़े पैमाने के वातावरण में कई और मशीनों से मिलकर उत्पादन वातावरण की उम्मीद करूंगा। आपको अपने पास मौजूद मशीनों, जैसे डेटाबेस सर्वर, वेब सर्वर आदि के समर्पण को भी आइना दिखाना चाहिए।

हालाँकि, आपके वर्तमान बजट के तहत एक सटीक प्रतिकृति संभव नहीं हो सकती है। यह करीब है, अधिक प्रभावी परीक्षण होगा और उत्पादन के लिए एक धक्का के दौरान कम होने की संभावना कम हो जाएगी।

मैं क्रिसफ की तुलना में एक अलग रुख अपनाता हूं, अगर यह माहौल सार्वजनिक होना चाहिए। मैं कहता हूं यह नहीं होना चाहिए। मैं वास्तविक डेटाबेस की एक प्रति पर चलने का विकल्प चुनूंगा, या कम से कम वास्तविक लाइव डेटाबेस और इनवर्ड-फेसिंग वातावरण के सबसेट की एक प्रति। इस तरह, आप वास्तविक और यथार्थवादी डेटा के विरुद्ध परीक्षण कर सकते हैं और सुरक्षा रिसाव के बारे में चिंता नहीं कर सकते हैं। आप निश्चित रूप से डेटा को पवित्र कर सकते हैं, लेकिन यह पर्यावरण से कुछ "गंदे डेटा" को हटा सकता है जो एक जीवित प्रणाली में दोष की खोज को जन्म दे सकता है।


1
यदि आप सुरक्षा परीक्षण कर रहे हैं, तो मैं मानता हूं कि इसे सार्वजनिक रूप से सामना नहीं करना चाहिए, लेकिन आप चाहते हैं कि यह अंतिम स्वीकृति परीक्षण (उदाहरण के लिए) हो।
ChrisF

यह एक मान्य बिंदु है, साथ ही। मैं आमतौर पर प्रयोज्य-केंद्रित की तुलना में अधिक सुरक्षा-केंद्रित हूं, लेकिन यदि आपने स्वीकृति परीक्षण के लिए अपने सिस्टम के एक नए संस्करण को उजागर करना चाहते हैं (शायद ग्राहकों द्वारा, या सार्वजनिक बीटा के हिस्से के रूप में), तो हाँ, एक सार्वजनिक-सामना पर्यावरण की आवश्यकता होगी।
थॉमस ओवेन्स

हाँ, हमारे पास एक प्रतियोगी होता था जो लाइव होने से पहले एक या एक सप्ताह के लिए सार्वजनिक सामना करने वाले कंप्यूटर पर अपने सभी सामान का परीक्षण करता था। उन्होंने कभी भी यह नहीं सोचा कि कैसे हम हमेशा सुविधाओं से ठीक पहले बाहर निकले ...
माल्वोलियो

1

हर जगह मैंने काम किया है बैंक, दूरसंचार और आदि-पूर्व उत्पादन उत्पादन की एक सीधी प्रति थी, सिवाय इसके कि डेटाबेस एक सप्ताह पुराना होगा। यह पूर्व-ठिकानों पर डेटा बनाए रखने के लिए बड़े पैमाने पर प्रक्रिया थी, लेकिन इसे उन कंपनियों के लिए आवश्यक माना गया था, जिनके लिए मैंने काम किया था, जो पूर्व-ठेस लागू करती थीं।

एयू बैंकिंग सेक्शन में, सरकार बैंकों की सेवा की विफलता के लिए जुर्माना लगाती है जैसे वेबसाइट एटीएम और हर मिनट, आदि। एक घटना पर एक विकास / परीक्षण टीम को निकाल दिया गया है, यह सुनना असामान्य नहीं है। पूर्व-ठेस हर कंपनी या विकास प्रक्रिया के लिए नहीं है, लेकिन कुछ के लिए आवश्यक है।


3
"यह एक घटना पर निकाल दिया गया एक विकास / परीक्षण टीम के बारे में सुनने के लिए असामान्य नहीं है" - हाँ, यह मदद करेगा। मनोबल सुधरने तक सजा जारी रहेगी।
मालवियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.