2008-10-30 7 views
37

केंद्रीकृत विकास सर्वर की बजाय आपकी स्थानीय मशीन पर वेब विकास करने के समर्थक/विपक्ष क्या हैं? उन लोगों के लिए जो आपकी स्थानीय मशीन पर देव करते हैं, आप स्थानीय डेवलपमेंट के लिए एक अद्यतन डीबी आर्किटेक्चर कैसे रखते हैं जब एकाधिक डेवलपर्स शामिल होते हैं?वेब डेवलपर्स - क्या यह आपकी स्थानीय मशीन या रिमोट होस्ट पर विकास करना बेहतर है?

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

स्थानीय विकास केवल अकेले काम करते समय व्यावहारिक है?

+0

क्या आप परीक्षण, या विकास के बारे में पूछ रहे हैं? आपका प्रश्न शीर्षक और दो अलग-अलग चीजों की बॉडी टॉक। –

+0

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

+0

धन्यवाद। अपने प्रयासों के लिए एक उत्थान है :) –

उत्तर

54
  • हमेशा, हमेशा स्थानीय सेटअप पर विकसित होते हैं।
  • हमेशा स्रोत नियंत्रण का उपयोग करें।
  • डेटाबेस स्कीमा समेत हमेशा स्रोत नियंत्रण के तहत सब कुछ डालें।

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

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

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

स्थिर और सौभाग्य! मैं नहीं देखता कि विकास सर्वर मुक्त होने पर आप इसे किसी अन्य तरीके से क्यों करेंगे!

+0

हालांकि, वास्तव में * परीक्षण * के बारे में सवाल का जवाब नहीं दे रहा है। –

+1

शीर्षक शीर्षक का उल्लेख करता है, लेकिन सवाल विवरण विकास के बारे में बात करता है। मुझे स्टीवर्ट को डाउनवोट करने का कोई कारण नहीं दिखता है क्योंकि सवाल उलझन में है –

+0

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

0

आमतौर पर आपके पास एक स्थानीय विकास सर्वर होगा जो हर कोई साझा करता है।

+0

क्यों नहीं? आप बहुत राय लगते हैं; क्या आप स्पष्ट कर सकते हैं कि लोगों को ऐसा क्यों नहीं करना चाहिए? –

+0

क्योंकि यदि आपके पास सर्वर साझा करने वाले लोगों का समूह है, तो आप प्रत्येक के पैर की अंगुली पर कदम उठाने वाले सभी के साथ समाप्त होते हैं - आप सर्वर को पुनरारंभ नहीं कर सकते हैं, बड़े बदलाव कर सकते हैं आदि। प्रत्येक डेवलपर के लिए यह स्थानीय और आसान है सर्वर मैं नहीं देखता कि आप ऐसा क्यों नहीं करेंगे। –

+0

आपको सर्वर को पुनरारंभ करने की आवश्यकता क्यों है (मुझे लगता है कि आप हार्डवेयर का मतलब है)? आप क्या 'बड़े बदलाव' नहीं कर सकते हैं? –

0

ऐसी स्थिति के लिए मैंने हमेशा इसे विकास सर्वर पर किया है। चूंकि कोई पुनर्मूल्यांकन नहीं है। आप हमेशा रोज़ाना एक नया डीबी स्नैपशॉट प्राप्त कर सकते हैं और इसे अपनी मशीन पर ले जा सकते हैं। या बस वेब सर्वर स्थानीय है और डीबी को dev बॉक्स पर इंगित करें।

6

मुझे पता चला है कि एक स्थानीय वेब सर्वर चला रहा है, दूरस्थ डीबी सर्वोत्तम काम करता है। डीबी प्रतिकृति/सिंक्रनाइज़ेशन एक दर्द है, इसलिए मैं केवल स्थानीय डीबी के साथ काम करता हूं अगर मैं वास्तव में करना था।

स्थानीय वेब सर्वर के साथ काम करना हालांकि परिवर्तनों के बीच पृष्ठों/कोड अपलोड करने की सभी परेशानियों और धीमेपन को हटा देता है।

6

पेशेवरों स्थानीय करने के लिए:

  • काम करता है, भले ही नेटवर्क नीचे चला जाता है
  • आप स्थानीय को

विपक्ष मशीन पर हर उपकरण पता:

  • सिंक्रनाइज़ करने के लिए है तैनाती सर्वर के लिए सब कुछ
  • बिना ver सायन नियंत्रण आप दूसरे के काम

पेशेवरों केंद्रीय करने के लिए मार कर सकते हैं:

:

  • हर किसी को समान उपकरण
  • हमेशा केंद्रीय करने के लिए 'असली' सामग्री पर

विपक्ष काम कर रहा है

  • नेटवर्क डाउन होने पर काम नहीं कर सकता
  • अपने "पसंदीदा" उपकरण (रों)

मुझे यकीन है कि वहाँ और अधिक कर रहे हैं रहा हूँ गायब हो सकता है, लेकिन इन मन में सही बंद आते हैं।

+0

"तैनाती सर्वर पर सिंक करें" - क्या यह आपके उत्पाद के लेबल किए गए संस्करण से स्रोत नियंत्रण से रिलीज़ नहीं होना चाहिए, भले ही आप स्थानीय विकासशील हो या केंद्रीय विकास कर रहे हों? (यानी कोई फर्क नहीं पड़ता)। –

+0

यह होना चाहिए, हां; इसलिए यदि आप स्रोत नियंत्रण का उपयोग नहीं कर रहे हैं तो इस बारे में टिप्पणी में आपको – warren

+0

प्रमुख समस्याएं हैं, तो फिर यह वास्तव में केवल "स्थानीय लोगों के लिए विपक्ष" नहीं है - आपकी सूची थोड़ा भ्रामक है। –

7

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

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

4

स्थानीय मशीन पर विकास और 'परीक्षण' ठीक है, लेकिन गुणवत्ता परीक्षण को एक ऐसे सिस्टम पर किया जाना चाहिए जो लक्ष्य पर्यावरण को दर्शाता है, यानी सभी विकास उपकरण आदि स्थापित किए बिना।

इससे 'मेरी मशीन पर अच्छी तरह से काम करता है' से बचने में मदद मिलेगी।

+0

बेशक संशोधित शीर्षक के साथ यह अब सवाल का जवाब नहीं दे रहा है लेकिन परीक्षण के लिए यह अभी भी खड़ा है। – DilbertDave

1

दोनों। अपने विकास सर्वर पर कुछ एकीकरण और इकाई परीक्षण करें (जो, आदर्श रूप में, संभवतः आपके लाइव सर्वर के समान होना चाहिए, लेकिन स्थानीय), फिर एक क्यूए पर्यावरण में कुछ स्वीकृति परीक्षण करें, जो आपके लाइव के समान मशीन हो सर्वर, या बिल्कुल वही सेटअप (हार्डवेयर, सॉफ्टवेयर, आदि) और रिमोट होना चाहिए।

यह प्रश्न के डेटाबेस भाग की बात आती है, तो आप कर सकते थे या तो:

  • प्रत्येक डेटाबेस की अपनी स्वयं की प्रतिलिपि या
  • एक केंद्रीकृत स्क्रिप्ट शायद चल (द्वारा सिंक में डेटा/संरचना रख आपके निर्माण के हिस्से के रूप में)
1

लोकलहोस्ट पर परीक्षण के साथ एक समस्या यह है कि आप उन चीजों को याद कर सकते हैं जो ब्राउज़र के माध्यम से सुलभ होने के बजाय स्थानीय फ़ाइलों के लिंक हैं। मेरे पिता हमेशा अपने कैमरे क्लब वेबसाइट पर लिंक डाल रहे थे जो 'a href = "सी: \ माय डॉक्यूमेंट्स \ कैमरा क्लब \ तस्वीरें ..." जैसी चीजें थीं, और जब मैं उसे बताउंगा कि वह इसे फिक्र करेगा , वह कहेंगे "यह मेरे लिए काम करता है"। इसी प्रकार एक पेशेवर वातावरण में, आपके पास ऐसी चीजें हो सकती हैं जिन्हें आप स्रोत कोड नियंत्रण में देखना भूल गए हैं, और इसलिए वे वास्तविक सर्वर पर तैनात नहीं होंगे।

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

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

3

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

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

1

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

7

जब तक अन्य लोग इसे संपादित कर रहे हों तो आपके डीबी को "सिंक में" रखें। इसके आसपास एक तरीका है कि आप अपने डीबी स्कीमा को संस्करण नियंत्रण में प्राप्त करें। यह आपके स्रोत कोड को संस्करण नियंत्रण के तहत डालने जितना आसान नहीं है, और इसे संभालने के विभिन्न तरीके हैं।

कोडिंग हॉरर पर इस पोस्ट को पढ़ें:

http://www.codinghorror.com/blog/archives/001050.html

नहीं इतना पद ही लेकिन छह लेख वह लालकृष्ण स्कॉट एलन द्वारा से जोड़ता है।

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

+0

+1 दृढ़ता से सहमत हैं - डीबी स्कीमा हमेशा स्रोत नियंत्रण में होना चाहिए। –

+0

लिंक अब केवल होम पेज पर रीडायरेक्ट करता है। – Isius

2

स्थानीय रूप से काम करने का एक अन्य कारण यह है कि सब कुछ तेजी से चलता है। यह तेजी से विकास में अनुवाद करता है। नेटवर्क अंतराल उत्पादकता हत्यारा हो सकता है!

1

मेरी वर्तमान स्थिति में, मैं अपनी मशीन पर विकसित होता हूं। छोटी परियोजनाओं के लिए मैं केवल हल्के वेब सर्वर का उपयोग करता हूं जो विजुअल स्टूडियो के साथ जहाजों का उपयोग करता है। मेरे पास विकास और प्रारंभिक परीक्षण उद्देश्यों के लिए अपनी मशीन पर SQL Server 2005 और 2008 भी स्थापित है।

इसने मेरे लिए पूरी तरह से काम किया है; एक मुद्दा जो मैंने चलाया है (जैसा कि अन्य ने ध्यान दिया है) डेटाबेस को सिंक में रखते हुए दर्द का प्रकार है। मैंने हाल ही में migrator dot net पर स्थानांतरित कर दिया है - मूल रूप से स्थानीय/स्टेजिंग/यूट/उत्पादन डेटाबेस को सिंक में रखने के लिए - रेलवे माइग्रेशन पर रूबी पर एक .NET लेते हैं, और यह मेरे जीवन को बहुत कम तनावपूर्ण बना रहा है। इस तरह का एक उपकरण भी एक टीम पर्यावरण में डेटाबेस पर काम करना आसान बनाता है, हालांकि आपको इसे लगातार उपयोग करने के लिए पर्याप्त अनुशासित होना चाहिए।

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

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

1

मैं एक व्यक्ति की दुकान हूं; मेरे पास रिमोट सर्वर और स्थानीय सर्वर दोनों हैं।

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

0

मुझे पता चला है कि केंद्रीकृत विकास डीबी तक पहुंचने के दौरान स्रोत नियंत्रण का उपयोग कर स्थानीय मशीनों पर कोड विकसित करना बहुत अच्छा काम करता है। सिंक में एकाधिक डीबी को रखना मुश्किल साबित हुआ।

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