2009-06-01 19 views
5

वेब ऐप्स के लिए बहु-चरण परिनियोजन के कुछ सर्वोत्तम अभ्यास और सामान्य सिद्धांत क्या हैं?मल्टी-स्टेज परिनियोजन सलाह?

मैं विशेष रूप से रेल परिनियोजित करने में रुचि Git, Capistrano, और यात्री का उपयोग करके ऐप्स हूं, और मैं पदों कि नट और प्रक्रिया के बोल्ट पर चर्चा मिल गया है:

प्रत्येक चरण (परीक्षण, स्टेजिंग, उत्पादन) के संबंध में मुझे क्या विचार करना चाहिए? क्या चरणों को विभिन्न भौतिक सर्वरों पर तैनात किया जाना चाहिए? मल्टी-स्टेज परिनियोजन के बारे में कोई सुझाव या सलाह? मुझे कोई स्नैग देखना चाहिए?

सबसे अच्छा,

याकूब

+1

क्षमा करें, मुझे प्रश्न पोस्ट करने के लिए उन ब्लॉग पोस्टों में दो हाइपरलिंक्स को हटाना पड़ा। जो भी अधिक जानने में दिलचस्पी है, वह Google उन वस्तुओं को सीधे पोस्ट पर जाने के लिए कर सकता है। – trisignia

+0

आपको हाइपरलिंक्स को क्यों निकालना पड़ा? –

+1

मैं यहां एक नया उपयोगकर्ता हूं, और स्टैक ओवरफ्लो मुझे अभी तक मेरे प्रश्नों में हाइपरलिंक पोस्ट नहीं करने देगा। – trisignia

उत्तर

0

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

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

मेरे पास हमेशा एक कंसोल विंडो खुलती है जो कुछ गलत होने पर अंतिम तैनाती को वापस रोल करने के लिए तैयार होती है। उस प्रक्रिया की तुलना में वास्तव में बहुत कुछ नहीं है।

अपने आप को कुछ पैसे बचाएं और सबसे सस्ता स्टेजिंग सर्वर खरीदें जो आप कर सकते हैं। आप अकेले हैं जो इसका इस्तेमाल करेंगे, है ना? बस सुनिश्चित करें कि वे एक ही प्रदाता से हैं।

+0

परीक्षण वातावरण एक ऐसा वातावरण नहीं है जिसमें आपको सर्वर चलाना चाहिए। यह आपकी इकाई, कार्यात्मक और एकीकरण परीक्षणों के उपयोग के लिए सख्ती से इरादा है। अधिकांश लोग इसे अपने विकास बॉक्स पर "चलाते हैं", क्योंकि यदि आपको किसी भी नए कोड में जांच करने से पहले अपने परीक्षण चलाना चाहिए। –

1

मैं हमेशा बस प्रत्येक तैनाती लक्ष्य के लिए टोपी कार्यों बनाया है और कमांड लाइन पर उन्हें का उपयोग किया है:

# deploy.rb 
task :stage do 
    server 10.0.0.1 ... 
end 

> cap stage deploy 

तुम भी इस तरह के एक तैनाती कि में सफाई करता है, प्रत्येक लक्ष्य कार्य के अंदर कार्य को अनुकूलित परिभाषित कर सकते हैं स्टेजिंग, लेकिन उत्पादन में नहीं है।

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

मुझे लगता है कि उत्पादन आपके अन्य वातावरण से अलग होना चाहिए, अन्यथा ऐसा खतरा है कि स्टेजिंग या प्रक्रियाओं में गलत व्यवहार करने से उत्पादन प्रदर्शन प्रभावित हो सकता है।

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

यह आपके deploy.rb में बहुत से कस्टम व्यवहार को डालने के लिए मोहक है, लेकिन मुझे लगता है कि यह वापस काटने का प्रयास करता है और आपके पर्यावरण या टोपी एपीआई के बदलाव के रूप में बहुत से रखरखाव प्रयास की आवश्यकता होती है।

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

हरोकू वास्तव में इन चीजों को आसान बना रहा है, और ईवाई और अन्य बिल्कुल पीछे नहीं हैं।

0

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

संबंधित मुद्दे