"नित्य" वितरण प्राप्त करने के लिए युक्तियाँ


14

एक टीम सॉफ्टवेयर को लगातार आधार पर जारी करने में कठिनाई का अनुभव कर रही है (हर सप्ताह एक बार)। एक विशिष्ट रिलीज़ टाइमलाइन क्या है:

पुनरावृति के दौरान:

  • डेवलपर्स, लघु शाखा पर बैकलॉग पर कहानियों पर काम करते हैं (यह उत्साहपूर्वक लागू होता है) मास्टर शाखा पर आधारित सुविधा शाखाएं हैं।
  • डेवलपर्स अक्सर अपनी सुविधा शाखाओं को एकीकरण शाखा में खींचते हैं, जो लगातार बनाया जाता है और परीक्षण किया जाता है (जहां तक ​​कि परीक्षण कवरेज जाता है) स्वचालित रूप से।
  • परीक्षकों के पास एक मचान के वातावरण में ऑटो-परिनियोजन करने की क्षमता होती है और यह प्रति सप्ताह कई बार होती है, जिससे उनके निरंतर सुइट्स चल रहे हैं।

प्रत्येक सोमवार:

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

हर मंगलवार:

  • परीक्षकों ने एकीकरण शाखा का परीक्षण किया है क्योंकि वे संभवतः उपलब्ध समय दे सकते हैं और कोई ज्ञात कीड़े नहीं हैं इसलिए एक रिलीज काट दिया जाता है और धीरे-धीरे उत्पादन नोड्स को धकेल दिया जाता है।

यह व्यवहार में ठीक लगता है, लेकिन हमने पाया है कि इसे प्राप्त करना अविश्वसनीय रूप से कठिन है। टीम निम्नलिखित लक्षणों को देखती है

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

मुझे लगता है कि टेस्ट कवरेज, कोड की गुणवत्ता, जल्दी से प्रतिगमन परीक्षण की क्षमता, अंतिम मिनट में परिवर्तन और पर्यावरणीय अंतर यहां खेलने में हैं। क्या कोई भी सलाह दे सकता है कि "नित्य" वितरण कैसे प्राप्त किया जाए?


1
इसके अलावा पुस्तक के बारे में @ emddudley के जवाब देने के लिए सतत प्रसव मैं देखने के लिए प्रोत्साहित करते हैं infoq.com/presentations/Continuous-Deployment-50-Times-a-Day वास्तविक लाइव में सही मायने में कई बार-प्रति-दिन तैनाती के बारे में वास्तव में एक दिलचस्प प्रस्तुति उत्पादन।
sdg

जवाबों:


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

  • उत्पादन पर्यावरण पर समस्याओं के लिए रोल-बैक की आवश्यकता होती है - अगर ये अक्सर होते हैं तो आपकी साप्ताहिक रिलीज़ वास्तव में नकली होती हैं - वास्तव में काम करने वाली स्तर की आवृत्ति को समायोजित करने पर विचार करें। द्वारा नकली मेरा मतलब है कि दो अपने साप्ताहिक विज्ञप्ति के कहते हैं एक रोल-बैक इसका मतलब है कि अगर है कि उपयोगकर्ताओं को दो सप्ताह में नई (काम) एक बार रिहाई का सामना - जो कि मायने रखता है, न समय की संख्या आप को तैनात है।

  • उत्साह से लागू की गई सुविधा शाखाएँ - इसका मतलब यह है कि कुछ समय पहले, आपने एकल शाखा पर भी काम करने की कोशिश की और इसे हीन पाया? यदि हाँ तो बाकी को छोड़ दें। अन्यथा, एकल शाखा पर काम करने की कोशिश करें (यदि आवश्यक हो, तो ब्रांचिंग रणनीति "विकास शाखा" या विवरण के लिए "अस्थिर ट्रंक" ब्रांचिंग रणनीति)। या, यदि आप पेरफोर्स का उपयोग करते हैं, तो ब्रांच और विलय पर Microsoft दिशानिर्देशों के लिए वेब खोजें। मैंने कहा कि कोशिश करो ? क्षमा करें उपयुक्त शब्द का परीक्षण होना चाहिए : मेरा मतलब है कि, 1) कब और कैसे मापना है कि क्या एक शाखा बेहतर है या नहीं जो आपके पास है और 2) की योजना कब और कैसे आप इस मामले में फीचर शाखाओं में वापस आ जाएगी। परीक्षण विफल रहता है


पुनश्च।

संभवतः आप इस तरह के और भी ट्रिक्स पा सकते हैं जैसे कि सॉफ्टवेयर प्रोजेक्ट जोखिम प्रबंधन जैसी किसी चीज़ के लिए वेब पर खोज करना


अपडेट करें

<टिप्पणियों से प्रतिलिपि>

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

</ टिप्पणियों से कॉपी करें>

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

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

तुम्हें पता है, ऊपर दिया गया मुझे लगता है कि आपका सबसे अच्छा दांव समर्पित शाखा (एकीकरण के अलावा) से मुक्त करने की कोशिश करना होगा । क्या यह शाखा लंबे समय तक एकीकरण की तरह रहेगी या छोटी आपकी फीचर शाखाओं की तरह रहती थी ("फीचर" होने के साथ, अच्छी तरह से, रिलीज़) - यह आपके ऊपर है, बस इसे अलग करना होगा।

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

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

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


Update2

<टिप्पणियों से प्रतिलिपि>

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

</ टिप्पणियों से कॉपी करें>

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

मेरे दृष्टिकोण से, आउट-ऑफ-इटरेशन परीक्षण दृष्टिकोण उस दौड़ में श्रेष्ठ था। हाँ, उनका प्रोजेक्ट ठीक चला और उनके परीक्षकों को हमारी तुलना में तेजी से कीड़े का पता चला लेकिन किसी तरह यह मदद नहीं की। हमारी परियोजना भी ठीक चली, और किसी तरह, हम उनसे कम पुनरावृत्तियों को बर्दाश्त कर सकते थे, और हमारे पास उनकी तुलना में कम (बहुत कम) स्लिप जारी थे, और हमारे पक्ष में देव और परीक्षकों के बीच तनाव कम था।

BTW उनके पक्ष में तेजी से पता लगाने के बावजूद, हम एक ही औसत बग जीवन काल (जीवन काल परिचय और फिक्स के बीच का समय है , परिचय और पता लगाने के बीच नहीं है) के बारे में कामयाब रहे । संभवतया हमारे यहां थोड़ी बढ़त भी थी क्योंकि कम पुनरावृत्तियों और कम स्लिप के साथ हम यह दावा कर सकते थे कि औसतन हमारे सुधार उपयोगकर्ताओं तक तेजी से पहुंचते हैं

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


एक और विचार पर ...

  • रिलीज़ कोडिनेशन के अलगाव की बेहतर संभावनाएँ हैं - पुनः पढ़ने पर मुझे लगता है कि इससे यह आभास हो सकता है कि मैं आपको पुनरावृति परीक्षण के प्रयास से हतोत्साहित करता हूँ । मैं इसे पूरी तरह से स्पष्ट करना चाहता हूं कि मैं नहीं।

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

बाधाओं के संबंध में BTW, उस मामले में ट्रैक रखने के लायक अतिरिक्त लोग बग को देव पक्ष में पुन: पेश करने में विफलता और परीक्षकों की ओर से सत्यापन को ठीक करने के लिए देर से / देर से खोजने जैसे मुद्दे होंगे । ये आपकी पाइपलाइन को भी रोक सकते हैं, जैसे कि अब यह हॉटफिक्स के साथ होता है।


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

1
@maple_shaft अच्छी तरह से पहली बार मैंने देखा है कि परीक्षण सूट के खिलाफ ट्रैकर में खोले गए 2002 या 2003 में थे। और ऐसा लग रहा था कि मैं जिस टीम में शामिल हुआ था, उसमें काफी प्रैक्टिस की थी। जैसे कि टार्गेटिंग में कीड़े ठेस और स्टेजिंग के बीच भिन्न होते हैं, ये वास्तव में मुझे उपन्यास लगते हैं क्योंकि पहली बार मैंने इसे देखा है (और वास्तव में आश्चर्यचकित था) 2 साल पहले की तुलना में कम था
gnat

1
@gnat, यह सामान्य ज्ञान की तरह लगता है यही कारण है कि मुझे आश्चर्य है कि मैंने पहले क्यों नहीं सुना। अब जब मैं इसके बारे में सोचता हूं, तो यह समझ में आता है क्योंकि हर क्यूए समूह जो मैंने कभी भी काम किया था, बग को बाहर करने के लिए पूरी तरह से खुश था, लेकिन दो साल के बच्चे बन गए जब भी बग उनके खिलाफ लाया जाएगा।
maple_shaft

1
@maple_shaft योग्य इस तरह से सहमत होना प्रतीत होता है कि अवांछनीय रूप से दुर्लभ है। क्या आप इस तरह से जानते हैं कि कोई न केवल परीक्षकों पर बल्कि डॉक / सट्टेबाजों पर भी कीड़े डाल सकता है? - बिल्ड 12 ऑफ देव गाइड पेज 34 लाइन 5 पर "ब्लैक" कहता है; "सफेद" होना चाहिए। - जॉन लेखक को सौंपा। - बिल्ड 67 में फिक्स्ड। - पॉल टेस्टर द्वारा 89 के निर्माण में सत्यापित फिक्स।
gnat

1
मेरी अंतिम प्रतिक्रिया के रूप में मैं एक चैट सत्र में बदलना नहीं चाहता, लेकिन अपने अंतिम ऑर्ग में मैंने एक कल्पना लेखक के खिलाफ एक बग लिखा और पूरे डिवीजन को डब्ल्यूटीएफ क्षण में पुन: संयोजित किया गया। मुझे तुरंत बताया गया कि मुझे "रवैया की समस्या" थी और मैं "टीम का खिलाड़ी" नहीं था और फिर से ऐसा करने के लिए नहीं।
maple_shaft

8

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

IMHO अनुसूची सिर्फ बहुत तंग है।

आप अधिक प्रभावी इकाई परीक्षण और पर्यावरण विशिष्ट एकीकरण परीक्षण लिखकर कोड कवरेज बढ़ा सकते हैं।

आप जोड़ी प्रोग्रामिंग और / या कोड समीक्षा शुरू करके कोड की गुणवत्ता बढ़ा सकते हैं, हालांकि यह और भी कीमती समय पर खाता है।

उपयोगकर्ता की कहानी के बिंदुओं का बेहतर अनुमान भी उन उपयोगकर्ता कहानियों को सीमित करने में मदद कर सकता है जो एक एकल रिलीज में जाती हैं जिससे आपके जोखिम अनुपात पर भाजक कम हो जाता है।

कुल मिलाकर, ऐसा लगता है कि आपके पास जगह में अच्छे अभ्यास हैं और आपके पास अपने चरम रिलीज चक्र को संभालने के लिए एक अच्छी प्रणाली है। आप सही रास्ते पर लग रहे हैं।


हाँ! संकलित भाषा की आवश्यकता वाले संकलित भाषा में एक बड़े उत्पाद के साथ एक सप्ताह निरंतर नहीं है, यह लुप्त हो रहा है । इसे बहुत अधिक रखें और आप नौकरी की मृत्यु दर का अनुभव करेंगे!
ZJR

+1; हम इस समय तीन सप्ताह की पुनरावृत्तियों को चला रहे हैं और यह अच्छी तरह से काम कर रहे हैं।
डंकन बेयेन

@ZJR, क्या आप इस संदर्भ में विस्तार करने से क्या मतलब निकाल सकते हैं?
५२ डी

@ डंकन, हमारे पुनरावृत्तियों 2-सप्ताह हैं, लेकिन हम एकल-सप्ताह की वृद्धि की कोशिश कर रहे हैं । यह संभव है या नहीं हो सकता है / एक बुरा विचार है। सोच यह है कि एक सप्ताह के वेतन वृद्धि में कम नए कोड होंगे और इसलिए कम समस्याएं होंगी।
५२ डी

1
@ बॉन एस्टन, कोड की मात्रा समस्याएं पैदा नहीं करती है, अवास्तविक समय सीमा, तनाव और उच्च उम्मीदें समस्याएं पैदा करती हैं।
maple_shaft

1

वास्तविक निरंतर तैनाती का उपयोग क्यों नहीं किया जाता है, जहां एक प्रतिबद्ध (या धक्का) परीक्षणों को चलाने का कारण बनता है, और यदि परीक्षण पास होते हैं, तो एक तैनाती होने वाली है?

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

मुझे लगता है कि वहाँ एक स्थिर ट्रंक / मास्टर को प्राप्त करने की कोशिश में अधिक तनाव है, जिसमें आप जानते हैं कि आप इसे स्थिर रखते हैं।

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