निरंतर एकीकरण बनाम सतत वितरण बनाम निरंतर तैनाती


366

इन तीन शब्दों में क्या अंतर है? मेरा विश्वविद्यालय निम्नलिखित परिभाषा प्रदान करता है:

निरंतर एकीकरण मूल रूप से सिर्फ इसका मतलब है कि डेवलपर की कार्य प्रतियां एक साझा मेनलाइन के साथ दिन में कई बार सिंक्रनाइज़ की जाती हैं।

निरंतर वितरण को निरंतर एकीकरण के तार्किक विकास के रूप में वर्णित किया जाता है: हमेशा एक उत्पाद को उत्पादन में रखने में सक्षम होना चाहिए!

सतत तैनाती निरंतर वितरण के बाद तार्किक अगले कदम के रूप में वर्णित है: स्वचालित रूप से उत्पादन में उत्पाद की तैनाती जब भी यह क्यूए गुजरता है!

वे एक चेतावनी भी प्रदान करते हैं: कभी-कभी "निरंतर तैनाती" शब्द का उपयोग भी किया जाता है यदि आप परीक्षण प्रणाली में लगातार तैनात करने में सक्षम हैं।

यह सब मुझे भ्रमित करता है। कोई भी स्पष्टीकरण जो थोड़ा अधिक विस्तृत है (या एक उदाहरण के साथ आता है) की सराहना की जाती है!


1
मुझे लगता है कि व्यावसायिक कारणों से, कुछ व्यावसायिक डोमेन में, किसी कंपनी को निरंतर परिनियोजन मॉडल लेने से रोक सकते हैं। इस तरह यह एक "तार्किक अगला कदम" नहीं है।
जॉर्डन स्टीवर्ट

2
@ लंबोदरोकी - सबसे अच्छा स्पष्टीकरण कभी !!! इस बिंदु पर लघु:
AlikElzin-kilaka


मेरा नवीनतम स्रोत katalon.com/resources-center/blog/ci-cd-introduction
Chris Smith

जवाबों:


353

लगातार मेल जोल

मैं आपके विश्वविद्यालय की परिभाषा से सहमत हूं। निरंतर एकीकरण एक रणनीति है कि कैसे एक डेवलपर लगातार मेनलाइन पर कोड को एकीकृत कर सकता है - जैसा कि अक्सर विरोध किया जाता है।

आप यह दावा कर सकते हैं कि यह आपके संस्करण नियंत्रण प्रणाली में केवल एक शाखा है।

यह उन कार्यों के आकार के साथ करना है जिन्हें आप किसी डेवलपर को सौंपते हैं; यदि किसी कार्य में 4-5 मानव-दिन लगने का अनुमान है, तो डेवलपर के पास अगले 4-5 दिनों के लिए कुछ भी देने के लिए कोई उकसावा नहीं होगा, क्योंकि उसने कुछ भी नहीं किया है - फिर भी।

इसलिए आकार मायने रखता है:

small task = continuous integration
big task   = frequent integration

आदर्श कार्य का आकार एक दिन के काम से बड़ा नहीं है। इस तरह एक डेवलपर स्वाभाविक रूप से प्रति दिन कम से कम एक एकीकरण होगा।

सतत वितरण

सतत वितरण के भीतर मूल रूप से तीन स्कूल हैं:

कंटीन्यूअस डिलेवरी, कंटीन्यूअस इंटीग्रेशन का एक स्वाभाविक विस्तार है

यह स्कूल, एडिसन-वेस्ले "मार्टिन फॉवलर" की हस्ताक्षर श्रृंखला को देखता है और यह धारणा बनाता है कि 2007 की रिलीज़ को "कंटीन्यूअस इंटीग्रेशन" कहा गया था और 2011 में जिसको "कंटीन्यूअस डिलीवरी" कहा गया था, वे संभवतः वॉल्यूम + 2 हैं उसी वैचारिक विचार के साथ जो निरंतर कुछ करना है

सतत वितरण को एजाइल सॉफ्टवेयर विकास के साथ करना है

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

एजाइल मैनिफेस्टो में पहले सिद्धांत में ऑफसेट करना जहां शब्द "निरंतर वितरण" वास्तव में पहली बार उपयोग किया जाता है:

हमारी सर्वोच्च प्राथमिकता मूल्यवान सॉफ़्टवेयर के शुरुआती और निरंतर वितरण के माध्यम से ग्राहक को संतुष्ट करना है।

यह स्कूल दावा करता है कि "कंटीन्यूअस डिलीवरी" एक प्रतिमान है जो आपके "किए गए परिभाषा" के स्वचालित सत्यापन को लागू करने के लिए आवश्यक सभी चीजों को गले लगाता है ।

यह स्कूल स्वीकार करता है कि "कंटीन्यूअस डिलीवरी" और बज़ शब्द या मेगाट्रेन्ड "देवऑप्स" एक ही सिक्के के फ्लिप पक्ष हैं, इस अर्थ में कि वे दोनों इस नए प्रतिमान या दृष्टिकोण को गले लगाने या अतिक्रमण करने की कोशिश करते हैं और केवल एक तकनीक नहीं है।

सतत वितरण निरंतर तैनाती का एक पर्याय है

तीसरे स्कूल की वकालत करते हैं कि निरंतर तैनाती और सतत वितरण का एक ही अर्थ करने के लिए परस्पर उपयोग किया जा सकता है।

जब डेवलपर्स के हाथों में कुछ तैयार होता है, तो इसे तुरंत अंतिम उपयोगकर्ताओं तक पहुंचाया जाता है, जो कि ज्यादातर मामलों में इसका मतलब यह होगा कि इसे उत्पादन वातावरण में तैनात किया जाना चाहिए। 4. "परिनियोजित" और "उद्धार" का अर्थ समान है।

किस स्कूल में शामिल होना है

आपका विश्वविद्यालय स्पष्ट रूप से पहले स्कूल में शामिल हो गया और दावा किया कि हम समान प्रकाशन श्रृंखला के वॉल्यूम 1 + 2 का उल्लेख कर रहे हैं। मेरी राय है कि यह कंटीन्यूअस डिलीवरी शब्द का दुरुपयोग है।

मैं व्यक्तिगत रूप से इस समझ की वकालत करता हूं कि कंटीन्यूअस डिलीवरी चपल आंदोलन द्वारा बताए गए विचारों और अवधारणाओं के लिए एक वास्तविक जीवन समर्थन को लागू करने से संबंधित है। इसलिए मैं उस स्कूल में शामिल हो गया जो कहता है कि यह शब्द पूरे प्रतिमान को स्वीकार करता है - जैसे "DevOps"।

तैनाती के पर्याय के रूप में वितरण का उपयोग करने वाले स्कूल को ज्यादातर उपकरण विक्रेताओं द्वारा वकालत की जाती है जो तैनाती कंसोल बनाते हैं, निरंतर वितरण शब्द के अधिक व्यापक उपयोग से थोड़ा प्रचार करने की कोशिश कर रहे हैं ।

निरंतर तैनाती

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

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

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

आपके विश्वविद्यालय की परिभाषा जो निरंतर तैनाती है, निरंतर वितरण का एक स्वाभाविक अगला चरण है, यह माना जाता है कि QA'ed को जाने वाली प्रत्येक डिलीवरी तुरंत अंतिम उपयोगकर्ताओं के लिए उपलब्ध हो जानी चाहिए, इस परिभाषा के करीब है कि मेरा जनजाति शब्द का वर्णन करने के लिए उपयोग करता है - निरंतर रिलीज़ ", जो, बदले में, एक और अवधारणा है जो उदारतापूर्वक हर किसी के लिए समझ में नहीं आता है।

एक रिलीज एक बहुत ही रणनीतिक या राजनीतिक चीज हो सकती है और यह मानने का कोई कारण नहीं है कि हर कोई हर समय ऐसा करना चाहेगा (जब तक कि वे ऑनलाइन बुकस्टोर एक स्ट्रीमिंग सेवा कंपनी का प्रकार नहीं हैं)। फिर भी, जो कंपनियां हर समय आँख बंद करके सबकुछ जारी नहीं करती हैं उनके पास किसी भी कारण से कोई भी कारण हो सकता है कि वे वैसे भी तैनाती के स्वामी बनना चाहते हैं, इसलिए वे भी निरंतर तैनाती करते हैं । उत्पादन के लिए रिलीज की नहीं, लेकिन रिलीज-उम्मीदवारों के उत्पादन-जैसे वातावरणों के लिए।

फिर से मुझे विश्वास है कि आपका विश्वविद्यालय गलत हो गया। वे "निरंतर रिलीज" के लिए "निरंतर तैनाती" को गलत कर रहे हैं।

निरंतर तैनाती बस एक अनुशासन प्रक्रिया है जो विकास प्रक्रिया के परिणाम को उत्पादन-जैसे वातावरण में ले जाने में सक्षम है जहां कार्यात्मक परीक्षण को पूर्ण पैमाने पर निष्पादित किया जा सकता है।

निरंतर वितरण कहानी

चित्र में यह सब जीवंत है:

यहां छवि विवरण दर्ज करें

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


3
यदि कोई व्यक्ति सही मायने में समझता है कि सॉफ़्टवेयर परीक्षण क्या है, तो निरंतर एकीकरण / वितरण / तैनाती / रिलीज़ के बीच सभी "आभासी" अंतर अब समझ में नहीं आते हैं।
CuongHuyTo

6
तस्वीर टूटी है, क्या आपके पास यह कहीं और है?
पश्चिम बंगाल

क्या यह लापता छवि है? मुझे यह उसी फ़ाइल नाम के साथ कहीं और मिला।
c24w

4
मुझे समझ में नहीं आता है कि इतने लोगों ने इस जवाब को क्यों वोट दिया कि "मैं आपकी यूनिवर्सिटी की परिभाषा से सहमत हूं" और फिर "मुझे विश्वास है कि आपका विश्वविद्यालय इसे गलत मिला"। मुझे यह उत्तर बहुत लंबा और विस्तृत उलझा हुआ और अतिरंजित लगता है। बस अमेज़ॅन परिभाषाएं देखें और नीचे दिए गए इस धागे पर NoIce क्या कह रहा है। कृपया "आदर्श" जैसे शब्दों के साथ प्रतिमानों या रणनीतियों को परिभाषित करना बंद कर दें, जैसे "आदर्श रूप से प्रत्येक देव कार्य 1 दिन लंबा होना चाहिए", यह कई बार व्यवहार में नहीं होता है, तो क्या बात है? आइए रणनीतियों और प्रतिमानों को परिभाषित करें जो वास्तविक जीवन में काम करते हैं।
ओवी

3
@ Ovi-WanKenobi जिस भाग के बारे में वह कहता है कि वह इस विश्वविद्यालय से सहमत है कि वह निरंतर एकीकरण की परिभाषा के बारे में बात कर रहा है, और वह कहता है कि विश्वविद्यालय को यह गलत लगा कि वह निरंतर तैनाती के बारे में कह रहा है, इसलिए एक बात दूसरे को अमान्य नहीं करती, वे परस्पर अनन्य नहीं। इसके अलावा, नोलस का उत्तर काफी भ्रामक है, और उत्तर का प्रारूप लोगों को इसे पढ़ने के लिए आकर्षित नहीं करता है, भले ही इसमें जानकारी का अच्छा हिस्सा हो सकता है (यहां के लोग अक्सर उन्हें पढ़ने से पहले अपने प्रारूप द्वारा उत्तरों का न्याय करते हैं)।
एलिसन

84

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

मूल रूप से मैं एक प्रसूति की तरह निरंतर प्रसव के चुस्त अभ्यास के बारे में सोचता हूं:

निरंतर नहीं (सब कुछ मैनुअल) 0% ----> 100% निरंतर वितरण मूल्य (सब कुछ स्वचालित)

सतत वितरण की दिशा में कदम:

शून्य। कुछ भी स्वचालित नहीं है जब देवता कोड में जांच करते हैं ... आप भाग्यशाली हैं यदि उन्होंने चेक-इन से पहले किसी भी परीक्षण को संकलित किया, चलाया या किया।

  1. निरंतर निर्माण: प्रत्येक चेक-इन पर स्वचालित बिल्ड, जो पहला कदम है, लेकिन नए कोड के कार्यात्मक एकीकरण को साबित करने के लिए कुछ भी नहीं करता है।

  2. निरंतर एकीकरण (CI): मौजूदा कोड के साथ नए कोड के एकीकरण को साबित करने के लिए कम से कम इकाई परीक्षणों का स्वचालित निर्माण और निष्पादन, लेकिन अधिमानतः एकीकरण परीक्षण (एंड-टू-एंड)।

  3. निरंतर तैनाती (सीडी): स्वचालित परिनियोजन जब कोड CI को कम से कम एक परीक्षण वातावरण में पारित करता है, तो अधिमानतः उच्च वातावरण में जब गुणवत्ता CI के माध्यम से या मैन्युअल परीक्षण के बाद PASSED के रूप में कम वातावरण को चिह्नित करके सिद्ध किया जाता है। IE, परीक्षण कुछ मामलों में मैनुअल हो सकता है, लेकिन अगले वातावरण में प्रचार स्वचालित है।

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

संपादित करें: मैं इंगित करना चाहूंगा कि "सतत वितरण" की अवधारणा में एक अंतर है, जैसा कि एजाइल मैनिफेस्टो के पहले सिद्धांत ( http://agilemanifesto.org/principles.html ) और कंटीन्यूअस डिलीवरी के अभ्यास में संदर्भित है। जैसा कि प्रश्न के संदर्भ द्वारा संदर्भित किया जा रहा है। निरंतर वितरण का सिद्धांत यह है कि लीन सोच ( http://www.miconleansixsigma.com/8-waste.html ) में वर्णित इन्वेंटरी कचरे को कम करने का प्रयास किया जाता है । चंचल टीमों द्वारा निरंतर वितरण (सीडी) का अभ्यास कई वर्षों में उभरा है जब से एजाइल मेनिफेस्टो 2001 में लिखा गया था। यह चुस्त अभ्यास सीधे सिद्धांत को संबोधित करता है, हालांकि वे अलग-अलग चीजें हैं और जाहिरा तौर पर आसानी से भ्रमित होते हैं।


5
महान सलाहकार-उत्तर। मैं आपके समान नाव में हूं और मैं सहमत हूं कि अधिक वास्तविक दुनिया का जवाब होना चाहिए; सामान्य कॉलेज या कॉर्पोरेट विशलिस्ट के बजाय।
सुमेरे

62

मुझे लगता है कि अमेज़ॅन की परिभाषा सीधी और समझने में सरल है।

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

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

कृपया http://docs.aws.amazon.com/codepipeline/latest/userguide/congets.html देखें


3
मुझे लगता है कि इस प्रश्न के सही उत्तर के रूप में इस उत्तर को स्वीकार किया जाना चाहिए!
वी। कोवपैक

1
हाँ, यह जवाब समझना सबसे सरल है।
अमन गुप्ता - ShooTeR

46

एटलसियन ने निरंतर एकीकरण बनाम निरंतर वितरण बनाम निरंतर तैनाती के बारे में एक अच्छी व्याख्या पोस्ट की ।

ci-बनाम-ci-बनाम-सीडी

संक्षेप में:

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

कंटीन्यूअस डिलीवरी - कंटीन्यूअस इंटीग्रेशन + "एक बटन पर क्लिक करके" उत्पादन के लिए एप्लिकेशन को तैनात करें (ग्राहकों को रिलीज़ अक्सर होता है, लेकिन मांग के आधार पर)।

निरंतर तैनाती - निरंतर वितरण है लेकिन मानव हस्तक्षेप के बिना (ग्राहकों के लिए जारी है)।


35

निरंतर एकीकरण मूल रूप से सिर्फ इसका मतलब है कि डेवलपर की कार्य प्रतियां एक साझा मेनलाइन के साथ दिन में कई बार सिंक्रनाइज़ की जाती हैं।

या प्रति दिन कई बार से अधिक। जैसा कि अक्सर किसी भी असतत कार्य को पूरा किया जाता है, मूल रूप से। उदाहरण के लिए एक एकल व्यावसायिक अनुप्रयोग पर काम करने वाले डेवलपर्स की एक टीम पर विचार करें। कई वातावरणों में, निम्नलिखित हो सकते हैं:

  • एक या दो डेवलपर्स कुछ दिनों के लिए स्थानीय परिवर्तन रखते हैं क्योंकि "यह अभी तक तैयार नहीं है"।
  • एक या दो डेवलपर्स स्रोत नियंत्रण में शाखाएं बनाते हैं, ताकि वे अन्य लोगों के परिवर्तनों से परेशान हुए बिना "सुविधा" पर काम कर सकें।

इनसे समस्याएं हो सकती हैं। गरीब कोड / कार्य संगठन शाखा की ओर जाता है, शाखाओं में बँधता है, विलय होता है, विलय होता है ... दुख होता है। अभ्यास के रूप में निरंतर एकीकरण हर किसी को एक ही साझा स्रोत से काम करने के लिए प्रोत्साहित करके संबोधित करता है। अलग-अलग काम की वस्तुओं को कम समय (घंटों में अधिकतम) में पूरा करने के लिए पर्याप्त असतत होना चाहिए।

मूल रूप से सामान्य विचार यह है कि काम की थोड़ी मात्रा में एक छोटे से परिवर्तन को एकीकृत करना। एक बड़े परिवर्तन को एकीकृत करना काम की एक बड़ी मात्रा है। एकीकरण कार्य का समुच्चय छोटा होता है यदि निरंतर छोटे चरणों में किया जाता है। यह डेवलपर्स को विकास प्रक्रिया के बजाय व्यापार-दृश्य सुविधाओं पर काम करने में अधिक समय बिताने की अनुमति देता है।

निरंतर वितरण को निरंतर एकीकरण के तार्किक विकास के रूप में वर्णित किया जाता है: हमेशा एक उत्पाद को उत्पादन में रखने में सक्षम होना चाहिए!

यह असतत, अच्छी तरह से परिभाषित कार्य वस्तुओं के समान विचार का अनुसरण करता है। यदि कोई एकल मास्टर कोडबेस है, जिसे कभी-कभी पूर्ण, परीक्षण, ज्ञात कार्य सुविधाओं द्वारा छोटे वेतन वृद्धि में समायोजित किया जाता है, तो वह कोडबेस हमेशा स्थिर होता है। स्वचालित परीक्षण एक बटन के धक्का पर उस स्थिरता को साबित करने में सक्षम होने के लिए महत्वपूर्ण है।

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

निरंतर वितरण को निरंतर वितरण के बाद तार्किक अगले चरण के रूप में वर्णित किया जाता है: जब भी यह QA पास होता है, तब उत्पाद को उत्पादन में स्वचालित रूप से तैनात करता है!

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

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

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

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

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


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


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

22

एक ग्राफ कई शब्दों को बदल सकता है:

यहां छवि विवरण दर्ज करें

का आनंद लें! :-)

# मैंने सही छवि अपडेट की है ...


5
चित्र थोड़ा गलत है ... निरंतर वितरण उत्पादन के लिए मैन्युअल ट्रिगर के साथ एक है। कंटिन्यूअस डिप्लॉयमेंट, प्रोडक्शन के लिए ऑटोमैटिक ट्रिगर के साथ एक है
15

1
@amirouche हाँ, मैंने किया :)
simhumileco

2
ठीक है, मैं तस्वीर को गलत पढ़ रहा था। दरअसल कंटीन्यूअस डिलेवरी और कंटीन्यू डेप्लॉयमेंट के बीच का अंतर केवल एरो कलर का है ... IMO यह दोनों के बीच अलग-अलग होगा अगर प्रोडक्शन सर्कल कॉन्टीन्यूअस डिलीवरी में आयत के बाहर था।
अमिरोच

1
इन छवियों में एक स्वीकृति परीक्षण और एक एकीकरण परीक्षण के बीच अंतर क्या है?
योना


4

मुझे लगता है कि हम विश्लेषण कर रहे हैं और शायद शब्दों के "निरंतर" सूट को थोड़ा जटिल कर रहे हैं। इस संदर्भ में निरंतर स्वचालन का मतलब है। "निरंतर" से जुड़े अन्य शब्दों के लिए अंग्रेजी भाषा को अपने अनुवाद मार्गदर्शक के रूप में उपयोग करें और कृपया चीजों को जटिल करने की कोशिश न करें! "निरंतर निर्माण" में हम स्वचालित रूप से एक विशिष्ट प्लेटफ़ॉर्म / कंटेनर / रनटाइम / आदि के लिए निष्पादन योग्य चीज़ में हमारे एप्लिकेशन (लिखते / संकलित / लिंक / आदि) का निर्माण करते हैं। "निरंतर एकीकरण" का अर्थ है कि आपकी नई कार्यक्षमता परीक्षण और किसी अन्य संस्था के साथ बातचीत करते समय इच्छित प्रदर्शन करती है। जाहिर है, एकीकरण होने से पहले, बिल्ड होना चाहिए और एकीकरण को मान्य करने के लिए पूरी तरह से परीक्षण का भी उपयोग किया जाएगा। तो, "निरंतर एकीकरण" में कार्यक्षमता के मौजूदा बकेट में वैल्यू जोड़ने के लिए ऑटोमेशन का उपयोग एक तरह से किया जाता है जो मौजूदा कार्यक्षमता को नकारात्मक रूप से बाधित नहीं करता है, बल्कि इसके साथ अच्छी तरह से एकीकृत करता है, जो पूरे मूल्य को कथित रूप से जोड़ता है। एकता का अर्थ है, इसकी मात्र अंग्रेजी परिभाषा से, कि चीजें सद्भावपूर्वक रहती हैं इसलिए कोड-टॉक में मेरा संकलन, लिंक, परीक्षण और पूरी तरह से पूरी तरह से चलता है। आप कुछ को एकीकृत नहीं कहेंगे यदि यह अंतिम उत्पाद विफल हो गया, तो क्या आप करेंगे ?! हमारे संदर्भ में "निरंतर तैनाती" हमारे ग्राहकों को कार्यक्षमता प्रदान करने वाले दिन के अंत में "निरंतर वितरण" का पर्याय है। हालाँकि, इस पर विश्लेषण करने से, मैं यह तर्क दे सकता था कि तैनाती एक उप-वितरण है क्योंकि कुछ को तैनात करने का मतलब यह नहीं है कि हमने वितरित किया है। हमने कोड तैनात किया था लेकिन क्योंकि हमने ' टी ने प्रभावी ढंग से हमारे हितधारकों को सूचित किया, हम एक व्यावसायिक दृष्टिकोण से देने में विफल रहे! हमने सैनिकों को तैनात किया लेकिन हमने पास के शहर में वादा किया पानी और भोजन नहीं पहुंचाया। क्या होगा अगर मैं "निरंतर संक्रमण" शब्द जोड़ना चाहता हूं, तो क्या इसकी अपनी योग्यता होगी? आखिरकार, शायद यह पर्यावरण के माध्यम से कोड के आंदोलन का वर्णन करने के लिए बेहतर है क्योंकि इसमें "से / के लिए" की तैनाती या वितरण की तुलना में अधिक है जो कि केवल एक स्थान का अर्थ है, सदा में! यदि हम सामान्य ज्ञान को लागू नहीं करते हैं तो यह हमें मिलता है। क्या इसकी अपनी योग्यता होगी? आखिरकार, शायद यह पर्यावरण के माध्यम से कोड के आंदोलन का वर्णन करने के लिए बेहतर है क्योंकि इसमें "से / के लिए" की तैनाती या वितरण की तुलना में अधिक है जो कि केवल एक स्थान का अर्थ है, सदा में! यदि हम सामान्य ज्ञान को लागू नहीं करते हैं तो यह हमें मिलता है। क्या इसकी अपनी योग्यता होगी? आखिरकार, शायद यह पर्यावरण के माध्यम से कोड के आंदोलन का वर्णन करने के लिए बेहतर है क्योंकि इसमें "से / के लिए" की तैनाती या वितरण की तुलना में अधिक है जो कि केवल एक स्थान का अर्थ है, सदा में! यदि हम सामान्य ज्ञान को लागू नहीं करते हैं तो यह हमें मिलता है।

अंत में, यह वर्णन करने के लिए सरल सामान है (ऐसा करना थोड़ा अधिक है ... जटिल!), बस सामान्य ज्ञान, अंग्रेजी भाषा का उपयोग करें और आप ठीक हो जाएंगे।


3
कृपया जवाब देने के लिए एक नज़र है ।
xenteros

3

लगातार मेल जोल: विकास कार्य को मुख्य शाखा के साथ लगातार विलय करने की प्रथा है ताकि मुद्दों को जल्दी पकड़ने के लिए कोड का यथासंभव परीक्षण किया गया हो।

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

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

निरंतर तैनाती: कोड की तैनाती या रिलीज होते ही तैयार हो जाती है। निरंतर तैनाती के लिए सतत एकीकरण और निरंतर वितरण की आवश्यकता होती है अन्यथा कोड गुणवत्ता एक रिलीज में गारंटी नहीं होगी।

निरंतर तैनाती ~~ निरंतर एकीकरण + सतत वितरण


2

सीआई / सीडी आरेख

लगातार मेल जोल

  • स्वचालित (चेक इन + यूनिट परीक्षण का निर्माण)

सतत वितरण

  • लगातार मेल जोल
  • स्वचालित (वातावरण परीक्षण करने के लिए परिनियोजन + लोड परीक्षण + एकीकरण परीक्षण)
  • मैनुअल (उत्पादन के लिए तैनाती)

निरंतर तैनाती

  • सतत वितरण लेकिन स्वचालित (उत्पादन के लिए तैनाती)

CI / CD एक यात्रा है। मंजिल नहीं।

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

पाद लेख :

AWS पर निरंतर एकीकरण और सतत वितरण का अभ्यास करना


2

स्रोत: https://thenucleargeeks.com/2020/01/21/continuous-integration-vs-continuous-delivery-vs-continuous-deployment/

कंटीन्यूअस इंटीग्रेशन कंटीन्यूअस इंटीग्रेशन एक प्रोसेस या ऑटोमेटेड बिल्ड और ऑटोमेटेड टेस्ट की डेवलपमेंट प्रैक्टिस है। एक डेवलपर को अपने कोड को कई बार एक साझा रिपॉजिटरी में करने की आवश्यकता होती है, जहां प्रत्येक इंटीग्रेशन ऑटोमेटेड बिल्ड और टेस्ट द्वारा सत्यापित होता है।

यदि बिल्ड विफल हो जाता है / सफल हो जाता है, तो इसे एक डेवलपर को सूचित किया जाता है और फिर वह प्रासंगिक कार्रवाई कर सकता है।

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

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

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

निरंतर तैनाती विन्यास प्रबंधन और कंटेनरीकरण का एक संयोजन है।

कॉन्फ़िगरेशन प्रबंधन: सीएम सर्वर के कॉन्फ़िगरेशन को बनाए रखने के बारे में है जो आवेदन की आवश्यकता के अनुकूल होगा।

कंटेनरीकरण : कंटेनरीकरण टोलों का एक समूह है जो पूरे पर्यावरण में स्थिरता बनाए रखेगा।

Img स्रोत: https://www.atlassian.com/

Img स्रोत: https://www.atlassian.com/


1

DevOps 3C का एक संयोजन है - निरंतर , संचार , सहयोग और यह विभिन्न उद्योगों में प्रमुख ध्यान केंद्रित करता है।

IoT से जुड़े उपकरणों की दुनिया में, उत्पाद के मालिक, वेब, मोबाइल और QA जैसे कई स्क्रैम फीचर्स ग्राहक को समाप्त करने के लिए एक उत्पाद प्रदान करने के लिए एक शानदार तरीके से स्क्रेम चक्र में काम करते हैं।

निरंतर एकीकरण: मल्टीपल स्क्रू फ़ीचर एक साथ कई एंडपॉइंट्स में काम कर रहा है

सतत वितरण: एकीकरण और परिनियोजन के साथ, एक ही समय में कई ग्राहकों को दिए जाने वाले उत्पाद की डिलीवरी।

निरंतर तैनाती: कई उत्पादों को कई ग्राहकों के लिए कई मंच पर तैनात किया गया।

यह जानने के लिए यह देखें कि IoT कनेक्टेड दुनिया को सक्षम करने वाले DevOps कैसे: https://youtu.be/nAfZt2t4HHA


0

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

एलेक्स कोवान के उत्पाद पाइपलाइन, 2018

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

इसके बाद क्या होता है, जब हम कोड से आगे बढ़ते हैं, तो यह एक कंटीन्यूअस डिलीवरी क्षमता माना जाता है, जिसका उद्देश्य विचारों को निष्पादित करना है और ग्राहक को बहुत तेज़ी से जारी करना है (आप Jez Humble की पुस्तक कंटिन्यूअस डिलिवरी पढ़ सकते हैं : बिल्ड, टेस्ट के माध्यम से विश्वसनीय सॉफ़्टवेयर रिलीज़ और अधिक विवरण के लिए परिनियोजन स्वचालन )। निम्नलिखित पाइपलाइन बताती है कि निरंतर एकीकरण (CI) और सतत वितरण (CD) किस चरण से मिलकर बनता है।

एलेक्स कोवान की सीआई / सीडी

सतत एकीकरण , के रूप में मैटिस पैटर जोहानसन बताते हैं ,

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

(आप सर्कलसीआई - सर्कलसीआई - सतत एकीकरण पी 2 और पुल अनुरोध पर रनिंग सर्कलसीआई के साथ शुरू करके अधिक व्यावहारिक अवलोकन के लिए निम्नलिखित दो वीडियो देख सकते हैं )।

निम्नलिखित के रूप में एक CI / CD पाइपलाइन निर्दिष्ट कर सकता है, जो नए कोड से एक जारी उत्पाद पर जाता है।

एलेक्स कोवान की सतत डिलीवरी पाइपलाइन, 2018

पहले तीन चरणों का परीक्षण के साथ क्या करना है, इसका परीक्षण किया जा रहा है।

दूसरी ओर, निरंतर परिनियोजन , परिनियोजन को स्वचालित रूप से हैंडल करना है। इसलिए, स्वचालित परीक्षण चरण को पारित करने वाला कोई भी कोड स्वचालित रूप से उत्पादन में जारी किया जाता है।

नोट : यह जरूरी नहीं है कि आपकी पाइपलाइनें कैसी दिखनी चाहिए, फिर भी वे संदर्भ के रूप में काम कर सकती हैं।

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