निरंतर एकीकरण क्या है?
निरंतर एकीकरण एक सॉफ्टवेयर विकास विधि है जहां टीम के सदस्य दिन में कम से कम एक बार अपने काम को एकीकृत कर सकते हैं। इस पद्धति में, त्रुटि को खोजने के लिए प्रत्येक एकीकरण को एक स्वचालित निर्माण द्वारा जांचा जाता है।
एक कोड कमिट के बाद निरंतर एकीकरण में, सॉफ्टवेयर का निर्माण और परीक्षण तुरंत होता है। कई डेवलपर्स के साथ एक बड़ी परियोजना में, दिन में कई बार कमिट किए जाते हैं। प्रत्येक प्रतिबद्ध कोड के साथ बनाया और परीक्षण किया जाता है। यदि परीक्षण पास हो जाता है, तो परिनियोजन के लिए बिल्ड का परीक्षण किया जाता है। यदि परिनियोजन सफल है, तो कोड को उत्पादन में धकेल दिया जाता है। यह प्रतिबद्ध, निर्माण, परीक्षण और तैनाती एक सतत प्रक्रिया है, और इसलिए नाम निरंतर एकीकरण / परिनियोजन।
निरंतर वितरण क्या है?
सतत वितरण एक सॉफ्टवेयर इंजीनियरिंग विधि है जिसमें एक टीम एक छोटे चक्र में सॉफ्टवेयर उत्पादों का विकास करती है। यह सुनिश्चित करता है कि सॉफ्टवेयर किसी भी समय आसानी से जारी किया जा सकता है।
निरंतर वितरण का मुख्य उद्देश्य अच्छी गति और आवृत्ति के साथ सॉफ्टवेयर का निर्माण, परीक्षण और रिलीज करना है। यह आपको उत्पादन में लगातार अपडेट की अनुमति देकर बदलावों की लागत समय और जोखिम को कम करने में मदद करता है।
निरंतर तैनाती क्या है
निरंतर तैनाती एक सॉफ्टवेयर इंजीनियरिंग प्रक्रिया है जिसमें उत्पाद की कार्यक्षमता को स्वचालित तैनाती का उपयोग करके वितरित किया जाता है। यह परीक्षकों को यह प्रमाणित करने में मदद करता है कि कोडबेस परिवर्तन सही और स्थिर हैं या नहीं।
टीम विभिन्न परीक्षण चरणों को स्वचालित करने वाले बुनियादी ढांचे पर भरोसा करके निरंतर तैनाती प्राप्त कर सकती है। एक बार जब प्रत्येक एकीकरण इस रिलीज़ मापदंड को पूरा करता है, तो एप्लिकेशन को एक नए कोड के साथ अपडेट किया जाता है।
प्रमुख स्रोत:
- CI प्रत्येक परिवर्तन को कोडबेस में स्वचालित रूप से जांचने का एक तरीका है, जबकि सतत वितरण नई सुविधाओं, कॉन्फ़िगरेशन और बग फिक्स के परिवर्तनों को प्राप्त करने के लिए एक दृष्टिकोण है। दूसरी ओर, निरंतर तैनाती एक छोटे चक्र में सॉफ्टवेयर विकसित करने के लिए एक दृष्टिकोण है।
- सीआई को डेवलपर चेक-इन के तुरंत बाद किया जाता है। कंटीन्यूअस डिलीवरी में, विकसित कोड को लगातार वितरित किया जाता है जब तक कि प्रोग्रामर यह विचार नहीं करता है कि यह जहाज के लिए तैयार है और कंटिन्यूअस डिप्लॉयमेंट में, डेवलपर्स कोड को प्रोडक्शन स्टेज पर सीधे तैनात करते हैं जब यह विकसित होता है।
- CI, कंटीन्यूअस डिलीवरी पर यूनिट टेस्ट का उपयोग करता है, बिजनेस लॉजिक टेस्ट का उपयोग करता है। सतत तैनाती में किसी भी परीक्षण रणनीति का उपयोग किया जाता है।
- CI स्रोत कोड के संस्करणकरण को संदर्भित करता है जबकि सतत वितरण सीआई के तार्किक विकास को संदर्भित करता है और निरंतर तैनाती स्रोत कोड के स्वचालित कार्यान्वयन को संदर्भित करता है।
सीडी बनाम सीडी बनाम सीडी के बीच अंतर
यहाँ CI बनाम CD बनाम CD के बीच एक महत्वपूर्ण अंतर है।
लगातार एकीकरण | सतत वितरण | निरंतर तैनाती |
---|---|---|
CI प्रत्येक बदलाव को कोडबेस में स्वचालित रूप से जांचने का एक तरीका है। | सीडी नई सुविधाओं, विन्यास और बग फिक्स के परिवर्तन प्राप्त करने के लिए एक दृष्टिकोण है। | सीडी एक छोटे चक्र में सॉफ्टवेयर विकसित करने के लिए एक दृष्टिकोण है। |
CI स्रोत कोड के संस्करण के लिए संदर्भित करता है। | सीडी सीआई के तार्किक विकास को संदर्भित करता है। | सीडी स्रोत कोड के स्वचालित कार्यान्वयन को संदर्भित करता है। |
CI यह निर्धारित करने के लिए स्वचालन परीक्षण पर केंद्रित है कि सॉफ़्टवेयर में कोई त्रुटि या बग नहीं है। | अपने ग्राहकों के लिए नए परिवर्तनों को ठीक से जारी करने पर ध्यान केंद्रित करता है। | आपके उत्पादन पाइपलाइन के सभी चरणों में परिवर्तन पर जोर। |
डेवलपर चेक-इन के तुरंत बाद CI का प्रदर्शन किया जाता है। | सीडी में, विकसित कोड लगातार वितरित किया जाता है जब तक कि प्रोग्रामर यह विचार नहीं करता कि यह जहाज के लिए तैयार है। | सीडी में, डेवलपर्स इसे विकसित होने पर कोड को सीधे उत्पादन स्तर पर तैनात करते हैं। |
यह आपको समस्याओं को जल्दी पहचानने और सुधारने में मदद करता है। | यह डेवलपर्स को सॉफ़्टवेयर अपडेट की जांच करने की अनुमति देता है। | यह आपको नई सुविधाओं और विचारों को तेजी से तैनात और मान्य करने में सक्षम बनाता है। |
यह इकाई परीक्षणों का उपयोग करता है। | यह व्यावसायिक तर्क परीक्षणों का उपयोग करता है। | किसी भी परीक्षण की रणनीति का प्रदर्शन किया जाता है। |
विकास टीम परीक्षण प्रक्रिया के चलने पर भी लगातार कोड विलय अनुरोध भेजती है। | आप समीक्षा के लिए कोड वितरित करते हैं जिसे रिलीज के लिए बैच किया जा सकता है। | एक स्वचालित प्रक्रिया का उपयोग कर कोड तैनात करें। |
मुख्य रिपॉजिटरी की निगरानी के लिए आपको निरंतर एकीकरण सर्वर की आवश्यकता होती है। | निरंतर एकीकरण में आपको एक मजबूत नींव की आवश्यकता होती है। | आपको एक अच्छी परीक्षण संस्कृति की आवश्यकता है। |
निरंतर एकीकरण के लाभ
यहां निरंतर एकीकरण के लाभ / लाभ हैं:
- बेहतर गुणवत्ता सॉफ्टवेयर बनाने में आपकी मदद करता है
- यह आपको पुनरावर्ती परीक्षण करने में सक्षम बनाता है।
- CI सॉफ्टवेयर डेवलपर्स को समानांतर में सुविधाओं पर स्वतंत्र रूप से काम करने की अनुमति देता है।
- यह दृश्यता बढ़ा सकता है और अधिक संचार सक्षम कर सकता है।
- CI प्रक्रिया इंजीनियरिंग टीमों के हेडकाउंट और डिलीवरी आउटपुट को स्केल करने में मदद करती है।
- निरंतर एकीकरण आपको पूरी तरह से स्वचालित निर्माण के लिए एक संभावित shippable उत्पाद विकसित करने में मदद करता है।
- तैनाती को तेज़ और अधिक अनुमानित करके जोखिमों को कम करने में आपकी सहायता करता है
- एक मुद्दा आने पर तत्काल प्रतिक्रिया।
- रिलीज की तारीख में अंतिम मिनट की उलझन से बचें, और टाइमिंग बिल्ड को स्वचालित करता है।
- यह जोखिमों को कम करता है और तैनाती प्रक्रिया को अधिक अनुमानित बनाता है।
- जब कोई समस्या होती है तो CI तुरंत प्रतिक्रिया प्रदान करता है।
- आप वास्तविक समय में एकीकरण प्रक्रिया देख सकते हैं।
- यह रिलीज की तारीखों में अंतिम मिनट की परेशानी से बच सकता है।
- वर्तमान बिल्ड लगातार उपलब्ध है।
- एक नियमित आधार पर shippable उत्पाद प्रदान करता है।
- सॉफ्टवेयर बिल्ड का इतिहास खोजना अपेक्षाकृत आसान है।
- CI कोड स्थिरता प्रदान करता है।
सतत वितरण के लाभ
यहां लगातार वितरण के लाभ / लाभ हैं:
- वितरण को अधिक कुशल, तीव्र और सुरक्षित बनाने के लिए सॉफ़्टवेयर रिलीज़ प्रक्रिया को स्वचालित करें।
- सीडी का अभ्यास डेवलपर्स को मैनुअल काम और जटिल निर्भरता से मुक्त करके उत्पादकता बढ़ाता है।
- यह आपको वितरण प्रक्रिया के शुरुआती सॉफ़्टवेयर बग्स की खोज करने में मदद करता है।
- CD आपकी व्यावसायिक टीम को ग्राहकों को तुरंत और बार-बार अपडेट देने में मदद करता है।
- यह सुनिश्चित करता है कि सॉफ्टवेयर उत्पादन के लिए हमेशा तैयार है।
- आप सॉफ़्टवेयर को अधिक बार जारी कर सकते हैं, जो आपको अपने ग्राहकों से तेजी से प्रतिक्रिया प्राप्त करने में मदद करता है।
- छोटे बदलावों के फैसले पर कम दबाव है।
निरंतर तैनाती के लाभ
यहां निरंतर तैनाती के लाभ / लाभ हैं:
- यह आपको दोहराए जाने वाले कार्यों को स्वचालित करने में मदद करता है।
- सीडी सुरक्षा से समझौता किए बिना आपकी तैनाती को निर्दोष बनाता है।
- आसानी से एक उद्यम आईटी पोर्टफोलियो के लिए एक सॉफ्टवेयर अनुप्रयोग से पैमाने।
- आप क्लाउड-देशी के साथ-साथ पारंपरिक एप्लिकेशन को भी शिप कर सकते हैं।
- यह सभी वातावरणों और अनुप्रयोगों में एकल दृश्य देता है।
- आप अपने मौजूदा DevOps टूल और स्क्रिप्ट को एक उचित वर्कफ़्लो में जोड़ सकते हैं।
- सीडी आपको समग्र उत्पादकता बढ़ाने में सक्षम बनाती है।
- आप एकीकृत पाइपलाइन के साथ प्रक्रियाओं और टीमों को एकीकृत कर सकते हैं।
निरंतर एकता का नुकसान
यहां निरंतर एकीकरण के विपक्ष / नुकसान हैं:
- प्रारंभिक सेटअप समय और प्रशिक्षण के लिए Cl सर्वर से परिचित होना आवश्यक है
- अच्छी तरह से विकसित परीक्षण-सूट को Cl सर्वर के लिए कई संसाधनों की आवश्यकता होती है।
- इसके लिए अतिरिक्त सर्वर और वातावरण की आवश्यकता होती है।
- आपको एक परियोजना में परिचित प्रक्रियाओं के रूपांतरण की आवश्यकता है।
- यह प्रतीक्षा करता है जब कई डेवलपर्स एक ही समय के आसपास अपने कोड को एकीकृत करते हैं।
- आपकी टीम को प्रत्येक नई सुविधा या बग फिक्स के लिए स्वचालित परीक्षण लिखना चाहिए।
- आपको एक सीआई सर्वर की आवश्यकता होती है जो मुख्य रिपॉजिटरी की निगरानी करता है और नए कोड के लिए परीक्षण चलाता है।
- डेवलपर्स को अपने परिवर्तनों को अधिक से अधिक बार मर्ज करना चाहिए।
- तैनाती के लिए इकाई परीक्षण प्रक्रिया पास होनी चाहिए।
निरंतर वितरण के नुकसान
यहां निरंतर वितरण के विपक्ष / नुकसान हैं:
- निरंतर वितरण के लिए जाने से पहले आपको निरंतर एकीकरण प्रथाओं को जानना चाहिए।
- तैनाती अभी भी मैनुअल हैं, और इसलिए सॉफ्टवेयर उत्पाद को वितरित करने में बहुत समय लगता है।
- स्वचालित परीक्षणों को ठीक से लिखा और कार्य करना चाहिए।
- गुणवत्ता परीक्षण करते समय दोषपूर्ण परीक्षणों से नुकसान हो सकता है।
- इसके लिए टीम के समन्वय की आवश्यकता होती है क्योंकि कोड परिवर्तनों को एक कुशल तरीके से नियमित रूप से एकत्र किया जाना चाहिए।
- लगातार वितरण के लिए स्वचालन परीक्षण के लिए एक विश्वसनीय और मजबूत एकीकरण सर्वर की आवश्यकता होती है जो महंगा है।
निरंतर तैनाती के नुकसान
यहां निरंतर तैनाती के विपक्ष / नुकसान हैं:
- आपकी परीक्षण संस्कृति अच्छी होनी चाहिए क्योंकि सूट की गुणवत्ता यह निर्धारित करती है कि सॉफ्टवेयर रिलीज़ कितना अच्छा है।
- प्रलेखन प्रक्रियाओं को तैनाती की गति के साथ बनाए रखने की आवश्यकता है।
- विपणन, सहायता और सहायता और अन्य विभागों द्वारा महत्वपूर्ण परिवर्तनों को जारी करने के लिए आश्वासन की आवश्यकता होती है।
निरंतर एकीकरण सर्वश्रेष्ठ अभ्यास
कंटीन्यूअस इंटीग्रेशन को लागू करते समय यहां कुछ महत्वपूर्ण सर्वोत्तम प्रथाएं हैं।
- अपने सॉफ़्टवेयर बिल्ड को स्वचालित करें।
- बिल्ड को यथासंभव तेज़ रखें।
- हर कमिट में बिल्ड होना चाहिए
- स्वचालित तैनाती
- जल्दी और अक्सर।
- आपको कभी भी टूटा हुआ कोड नहीं करना चाहिए
- फेल बिल्ड को तुरंत ठीक करें।
- बिल्ड-इन हर टारगेट वातावरण हर बिल्ड से कलाकृतियां बनाएं
- सॉफ्टवेयर के निर्माण को ढंग से पूरा करने की आवश्यकता है ताकि इसे स्वचालित किया जा सके
- आईडीई पर निर्भर न रहें
- परिवर्तन होने पर सब कुछ बनाएं और परीक्षण करें
- डेटाबेस स्कीमा सब कुछ के रूप में गिना जाता है
- आपको महत्वपूर्ण मैट्रिक्स का पता लगाने और उन्हें नेत्रहीन ट्रैक करने में मदद करता है
- चेक-इन अक्सर और जल्दी।
- मजबूत स्रोत कोड नियंत्रण।
- जब भी आप कोड करते हैं, तो निरंतर एकीकरण इकाई परीक्षण चला रहा है।
- निर्माण को स्वचालित करें और सभी का परीक्षण करें।
- स्वचालित परिनियोजन के साथ बिल्ड फास्ट रखें।
निरंतर वितरण सर्वश्रेष्ठ अभ्यास
निरंतर वितरण को लागू करते समय यहां कुछ महत्वपूर्ण सर्वोत्तम अभ्यास दिए गए हैं:
- प्रत्येक चेक-इन पर पहले चरण को चालू किया जाना चाहिए।
- प्रत्येक चरण को सफल समापन पर अगले एक को जल्दी से ट्रिगर करना चाहिए।
- स्रोत कोड का संस्करण बनाए रखें।
- स्वचालित बिल्ड और परिनियोजन निष्पादित करें।
- एक समय में एक आभासी मशीन के एक उदाहरण के लिए तैनात करें।
- इकाई और एकीकरण परीक्षण करें।
- आपको केवल एक बार अपनी लाइब्रेरी बनानी होगी।
- टीम को प्रत्येक और हर पर्यावरण के लिए एक ही स्वचालित रिलीज़ विधि का उपयोग करना चाहिए।
- यह विधि आपको संघर्षों और अंतिम-मिनट की समस्याओं को खत्म करने में सक्षम बनाती है।
- यदि कोई राज्य विफल हो जाता है, तो आपको स्वचालित रूप से प्रक्रिया को रोकना चाहिए और मुद्दों को ठीक करना चाहिए।
निरंतर तैनाती सर्वश्रेष्ठ अभ्यास
निरंतर तैनाती को लागू करते समय यहां कुछ महत्वपूर्ण सर्वोत्तम अभ्यास दिए गए हैं:
- आपको विकास कार्य के लिए एक समस्या ट्रैकर का उपयोग करना चाहिए।
- आपके संस्करण नियंत्रण प्रणाली में, आपको एक शाखा बनानी चाहिए जिसमें समस्या संख्या और आपके द्वारा किए गए किसी भी परिवर्तन का विवरण हो।
- जब सॉफ़्टवेयर परिनियोजन के लिए तैयार है, तो आप शाखा के लिए एक पुल अनुरोध बना सकते हैं।
- सर्वर के प्री-प्रोडक्शन में तैनाती का सॉफ्टवेयर।
- एक बार जब आप इसकी गुणवत्ता से खुश होते हैं तो अपने सॉफ़्टवेयर को बढ़ावा दें।
सतत एकीकरण की चुनौतियां
यहां निरंतर एकीकरण की चुनौतियां हैं:
- यह विकासशील प्रक्रिया को धीमा कर देता है।
- समस्याओं और मुद्दों को साझा करना।
- यह संस्करण नियंत्रण के रखरखाव की कमी का कारण हो सकता है।
- यह आपको समस्याओं से निपटने के लिए मजबूर कर सकता है।
- स्वचालित कोड भंडार के निर्माण में कठिनाई।
- अनटाइटेड या टूटा हुआ कोड प्रतिबद्ध नहीं होना चाहिए।
सतत वितरण की चुनौतियां
यहां निरंतर वितरण की चुनौतियां हैं:
- आपको समय की परवाह किए बिना निरंतर वितरण को कुशल बनाए रखने की आवश्यकता है।
- आपको तंग समय सीमा रिलीज योजना के साथ सामना करने की आवश्यकता है।
- टीमों के खराब उत्पाद-विशिष्ट संचार में संशोधन के साथ-साथ तैनाती में देरी हो सकती है।
- व्यवसाय टीम के पास अधिक प्रभावशाली सॉफ्टवेयर बनाने के लिए आवश्यक बुनियादी ढाँचे के लिए बजट होना चाहिए।
- निगरानी डेटा / सूचना का उपयोग अनुसंधान और विकास टीम द्वारा किया जाना चाहिए।
- संगठन को यह सुनिश्चित करना चाहिए कि कैसे खुला स्रोत सॉफ्टवेयर वर्तमान वर्कफ़्लो में फिट बैठता है।
सतत तैनाती की चुनौतियां
यहां निरंतर तैनाती की चुनौतियां हैं:
- सीडी को लगातार और तेजी से रिलीज प्राप्त करने के लिए निरंतर योजना की आवश्यकता होती है।
- व्यावसायिक संदर्भ और अनुप्रयोग विकास की आवश्यकता के बीच संरेखण सुनिश्चित करें।
- रैपिड डिलीवरी को अकेले सॉफ्टवेयर डेवलपमेंट प्रोसेस से अलग नहीं किया जाना चाहिए।
- प्रवाह को समग्र सॉफ्टवेयर विकास चक्र के साथ जाना चाहिए।
- प्रयोगात्मक परिणामों को सॉफ्टवेयर रोडमैप के साथ लगातार जोड़ा जाना चाहिए।