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