मैन्युअल रूप से फ़ाइल द्वारा सर्वर फ़ाइल के लिए एक परियोजना को तैनात करना सबसे अच्छा अभ्यास है?


26

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


12
इस कार्य के लिए दूरस्थ रूप से "सभी स्थितियों के लिए एक अभ्यास" भी नहीं है।
whatsisname

26
आम तौर पर मैं "सबसे अच्छा अभ्यास" एक बुरी बात पर सवाल क्यों पूछ रहा हूं ? मुझे लगता है कि हम सभी सहमत हो सकते हैं कि यह सबसे खराब अभ्यास है। यह "सर्वर में आग लगाने" से थोड़ा ऊपर है।


9
मुझे संदेह है कि ओपी यह सवाल पूछ रहा है क्योंकि वह पहले से ही जवाब जानता है, और उसका कार्यस्थल डूइंग इट गलत (tm) है, और ओपी उन चीजों को बदलने के लिए एक मामला बनाने के लिए सबूत जुटाने की कोशिश कर रहा है।
user1936

2
हमने इसे दूसरी सहस्राब्दी में इस तरह से किया। ठीक होना चाहिए! ;)
डॉन ब्रैनसन

जवाबों:


103

सबसे अच्छा अभ्यास कौन सा है? मैन्युअल रूप से प्रत्येक परिनियोजन को एक प्रोजेक्ट परिनियोजित करने के लिए या फ़ाइल परिनियोजन द्वारा फ़ाइल को करते रहें?

न तो।

सर्वश्रेष्ठ अभ्यास पूरी तरह से और विशेष रूप से अपनी तैनाती को स्वचालित करना है। इसका मतलब है कि किसी को भी सर्वर पर कुछ भी डालने की जरूरत नहीं है

"सारांश के सारांश का सारांश: लोग एक समस्या हैं।" (डगलस एडम्स)

लोग गलती करते हैं। यदि आप जिन फ़ाइलों को कॉपी करना भूल जाते हैं उनमें से एक साझा "लाइब्रेरी" है जिसे बड़े पैमाने पर बदल दिया गया है, तो आप पूरे प्रोडक्शन साइट को क्रैश कर सकते हैं।


17
@ जोहान हैमिल्टन यदि संकलन को स्वचालित करना एक कठिन काम है, तो यह लंबे समय में हल करने के लिए कुछ है। आपके पास पूरी तरह से स्वचालित तैनाती के साथ विकास, परीक्षण, प्रीप्रोडक्शन वातावरण नहीं है, लेकिन एक मानक तैनाती पैकेज का निर्माण मानक अभ्यास होना चाहिए।
नील

20
एर, कंपनी का आकार वास्तव में मुद्दा (एक डिग्री तक) नहीं है। लागत इस हद तक संबंधित होने जा रही है कि तैनाती स्वचालित है और उत्पादन वातावरण की जटिलता से भी संबंधित है। लेकिन ऑटोमेशन की एक ढाल और "कॉस्ट" (समय / पैसा) की ढाल होती है, जो सामान्य चीजों से शुरू होती है जैसे कि प्रोडक्शन पर निर्माण को कॉपी करने के लिए स्क्रिप्ट (तत्काल मूर्त लागत बचत के साथ छोटा निवेश), और वहां से रैंपिंग, और यह अधिक निर्भर है कंपनी के आकार की तुलना में प्रबंधन खरीद बंद।
बर्न्सबा

39
@ जोहान हैमिल्टन: एक छोटी सी कंपनी जो कि बुरी तरह से प्रबंधित है वह खुद को यह सोचकर भ्रम में डाल सकती है कि, निश्चित रूप से। नकल करने वाली फ़ाइलों को स्वचालित करना बिल्कुल मुश्किल काम नहीं है, और किसी भी नियोजित व्यक्ति के पास नियमित रूप से ऐसा करने की लागत बहुत अधिक तुच्छ स्क्रिप्ट लिखने की लागत को बढ़ा-चढ़ाकर बताएगी।
GManNickG

8
@ जॉन हैमिल्टन: ऑटोमेशन की लागत को मैनुअल तैनाती के दौरान की गई गलतियों के जोखिम के खिलाफ तौलना होगा।
रॉबर्ट हार्वे

7
तुम भी जरूरी जेनकिंस की जरूरत नहीं है। बस एक चेक-इन स्क्रिप्ट के साथ scp कमांड का एक गुच्छा (या जो भी आप मैन्युअल रूप से अपलोड करते समय उपयोग करते हैं) एक सुधार होगा।
2225

14

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

यहां तक ​​कि सरलतम स्वचालन कदम के बड़े लाभ हो सकते हैं, क्योंकि तैनाती तुच्छ हो जाती है। एक स्क्रिप्ट जो (S) FTP या Rsync या किसी अन्य तकनीक के माध्यम से फ़ाइलों या कलाकृतियों को कॉपी करती है, एक महान पहला कदम है। आप बाद में उस स्क्रिप्ट का विस्तार कर सकते हैं, सर्वर पर पूर्व-परिनियोजन और पोस्ट-परिनियोजन चरणों को स्वचालित रूप से करने के लिए, जैसे सेवाओं को पुनरारंभ करना।


यदि सर्वरों की कुल संख्या 2 या उससे कम है, तो मैनुअल स्वचालित की तुलना में कम जोखिम भरा है। स्वचालित को व्यापक बग-चेकिंग की आवश्यकता होती है। मैंने कभी भी एक तुच्छ स्वचालित समाधान नहीं देखा है जो तुच्छ रहे।
जोशुआ

3
@ जोशुआ मुझे यकीन नहीं है कि सर्वर की संख्या यहां एक कारक होनी चाहिए। जब आप एक ही सर्वर पर कई बार तैनाती करते हैं तो ऑटोमेशन का भी मूल्य होता है। सवाल यह है कि आप किस पर अधिक भरोसा करते हैं: कंप्यूटर विश्वासपूर्वक एक स्क्रिप्ट पर अमल करता है जो एक बार काम करता है, या हर समय सभी आवश्यक चरणों को याद रखने की आपकी क्षमता? एक पतनशील और भुलक्कड़ मानव के रूप में, मुझे सामान न करने के लिए एक मजबूत प्राथमिकता है। कभी-कभी मैं एकतरफा कार्यों को भी स्क्रिप्ट करता हूं ताकि मैं उन्हें चलाने से पहले कमांड की समीक्षा कर सकूं। यह काम करने के लिए मैन्युअल रूप से यादृच्छिक सामान करने की तुलना में बहुत कम जोखिम भरा है!
अमोन

मुझे दोनों तरह से व्यापक अनुभव है। मैं जो सामान मैनुअल नियोजन के लिए बनाता हूं, वह xcopy स्थापित है, इसलिए वास्तव में कुछ को भूलने के लिए कदम नहीं हैं।
जोशुआ

9

सबसे अच्छा अभ्यास किसी प्रकार की स्वचालित प्रक्रिया को लागू करना होगा।

यह जाँचने के लिए सावधान रहें कि 'फाइल बाय फाइल' दृष्टिकोण का कोई विशेष कारण नहीं है जिसे आपको ध्यान में रखना होगा।


1
मैं यह सवाल पूछता हूं क्योंकि मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि यह पूरी तरह से दुनिया में सबसे अच्छा अभ्यास न हो। मुझे आश्चर्य है कि अभी भी कोई भी कंपनी / डेवलपर्स है जो अभी भी मैन्युअल रूप से अपने ऐप / प्रोजेक्ट को तैनात करते हैं, और विकास की प्रत्येक पुनरावृत्ति को फ़ाइल परिनियोजन द्वारा फ़ाइल को बदतर बनाते हैं।
जेक मुलर

4
सबसे अच्छा सवाल यह है कि "हम इसे इस तरह से क्यों करते हैं?" मैं एक कारण के बारे में नहीं सोच सकता, लेकिन मुझे पता है कि कुछ कंपनियां ट्रिगर पर एक मैनुअल हाथ रखना पसंद करती हैं
ईवान

8
@JakeMuller इस उत्तर की पंक्तियों के बीच आपको जो पढ़ना चाहिए, वह यह है कि निर्णय स्थिति के बारे में तर्क देकर किए जाने चाहिए, न कि किसी ऐसे व्यक्ति के बारे में जिसके बारे में कोई जानकारी नहीं है, हमेशा सही उत्तर देने की घोषणा करता है।
ब्लरफुल

फ़ाइल दृष्टिकोण द्वारा फ़ाइल का कारण यह हो सकता है कि फ़ाइलों के बीच निर्भरताएं हैं और इसलिए फ़ाइल अद्यतन उन फ़ाइलों पर निर्भर अन्य फ़ाइलों के परिवर्तन से पहले तैनात हैं। फ़ाइलों को गलत क्रम में अद्यतन करने से सिस्टम में थोड़ी देर के लिए ब्रेक लग सकता है।
bdsl

6

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

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

स्वचालित रूप से आप जो कर सकते हैं, एक बार में एक बार कदम। यह तथ्य कि आप पूरी तरह से स्वचालित सीडी पाइपलाइन नहीं खरीद सकते, आपको कुछ हिस्सों को स्वचालित करने से हतोत्साहित नहीं करना चाहिए।


1

सबसे अच्छा अभ्यास अपनी विशेष कंपनी के लिए अपनी विशेष तैनाती के लिए लागत / लाभ विश्लेषण करना होगा।

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

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


1

मैनुअल फाइल-बाय-फाइल कॉपी और निरंतर वितरण के बीच ग्रे के बहुत सारे शेड हैं।

परिनियोजन प्रक्रिया की जटिलता को कम करके शुरू करें, उदाहरण के लिए एक ज़िप फ़ाइल, एक आरपीएम शैली की पैकेजिंग, कोड प्रबंधन उपकरण (जैसे कठपुतली या रसोइया) के रूप में एक infrastruture का उपयोग करके या यहां तक ​​कि सिर्फ एक साधारण स्क्रिप्ट जो आपके लिए फ़ाइलों की प्रतिलिपि बनाती है एफ़टीपी सर्वर पर मंचन क्षेत्र।

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

आपको पूर्ण निरंतर वितरण (जो महंगा है, और समय के साथ प्रयास / निवेश / नवाचार करना पड़ता है) को लागू करने की आवश्यकता नहीं है - सरल शुरुआत करें, इसे काम करें, लाभ प्रदर्शित करें - और वहां से जाएं।


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.