परिनियोजनको चिन्ता वास्तविक हो। डिप्लोइमेन्टसँग सम्बन्धित मानवीय भावनाहरू बुझ्न र डरलाई कम गर्नका लागि उत्तम अभ्यासहरू सिक्ने प्रयास गरौं।
CrowdStrike समावेश गरिएको हालैको आउटेजले 8.5 मिलियन विन्डोज अपरेटिङ सिस्टमलाई असर गर्यो, जसले एयरलाइन्स र अस्पतालहरू सहित विभिन्न विश्वव्यापी सेवाहरूमा अवरोधहरू निम्त्यायो। बहुविध विश्लेषणहरूले यो घटनाको मूल कारण आफैं जाँच गरेको छ।
जे होस्, एक सफ्टवेयर इन्जिनियरको रूपमा, मलाई लाग्छ कि हामीले डिप्लोइमेन्टसँग सम्बन्धित मानव भावनाहरूको पक्षलाई हराइरहेका छौं, विशेष गरी उत्पादन तोड्ने डर। त्यो हामी यस लेखमा डुब्न प्रयास गर्नेछौं। हामी कभर गर्नेछौं:
सफ्टवेयर इन्जिनियरको परिप्रेक्ष्यबाट डिप्लोइमेन्टको डरमा जान अघि, पहिले रिलीज इन्जिनियरको भूमिका बुझौं। रिलिज इन्जिनियरिङ हालका वर्षहरूमा धेरै विकसित भएको छ, आधुनिक CI र CD उपकरणहरू र Kubernetes को मानकीकरणको लागि धन्यवाद। यी प्रगतिहरूको बावजुद, प्राथमिक जिम्मेवारीहरू उस्तै छन्:
रिलिज इन्जिनियरहरूको विपरीत, उत्पादन टोलीमा काम गर्ने सफ्टवेयर इन्जिनियरको रूपमा हामीले परिनियोजनका केही पक्षहरूको मात्र ख्याल गर्न सक्छौं:
यद्यपि त्यहाँ हामीले ख्याल गर्ने चीजहरू छन्, त्यहाँ ती पनि छन् जुन हामीले गर्दैनौं:
त्यसोभए डरले निरन्तर तैनातीसँग के गर्नु पर्छ?
धेरै।
अध्ययनहरूले [धेरै फाइदाहरू](https://dora.dev/capabilities/continuous-delivery/#:~:text=DevOps%20Research%20and%20Assessment%20(DORA,as%20higher%20levels%20of%20availability) प्रमाणित गरेको छ। निरन्तर तैनाती (CD) को, र आश्चर्यजनक रूपमा, जसमध्ये धेरै मनोवैज्ञानिक छन् निरन्तर तैनातीहरूले "ह्युमन-इन-द-लूप" हटाउँछ, त्यसैले, यसलाई परीक्षण पूर्वाधारमा बलियो विश्वास चाहिन्छ।
अर्को शब्दमा, स्वचालित परीक्षणहरूले उत्पादनको विश्वसनीयता मात्र सुनिश्चित गर्दैन तर मनोवैज्ञानिक सुरक्षा पनि प्रदान गर्दछ, कहिलेकाहीं तर्कहीन रूपमा, तैनातीहरूको डर कम गर्दै। एक विकासकर्ताको रूपमा, यदि मलाई म्यानुअल रूपमा परिवर्तनहरू प्रमाणित गर्न भनियो भने CD प्रक्रियामा परिवर्तनहरू गर्न म अझ सहज छु।
यद्यपि, यी सीडी रणनीतिहरूको लोकप्रियताको बावजुद, धेरै कम्पनीहरूले अझै पनि डिप्लोइमेन्टहरू म्यानुअल रूपमा ट्रिगर गर्छन् (ह्युमन-इन-द-लूप छ), सीडी कार्यान्वयनमा सतर्क दृष्टिकोणलाई संकेत गर्दछ। यो व्यवहारले सुझाव दिन्छ कि टोलीहरूले रिलीज प्रक्रियाको पर्यवेक्षण कायम राख्न र आवश्यक भएमा हस्तक्षेप गर्न रुचाउँछन्।
यो एक मनोवैज्ञानिक सुरक्षा परिप्रेक्ष्यबाट बुझ्न महत्त्वपूर्ण छ। म्यानुअल डिप्लोयमेन्टले कसैले प्रक्रियाको निरीक्षण गरिरहेको छ र चीजहरू गलत हुँदा समस्याहरू ह्यान्डल गरिरहेको छ भन्ने संकेत गर्दछ। जहाँ यसले सुरक्षाको भावना प्रदान गर्दछ, यसले तैनाथ गर्ने व्यक्तिमा डर पनि उत्प्रेरित गर्न सक्छ र मानव त्रुटिको खतरा हुन्छ।
कमजोरीहरूको बावजुद, अधिकांश टोलीहरूले म्यानुअल रूपमा तैनातीहरू व्यवस्थापन गर्छन्। एक सामान्य म्यानुअल परिनियोजनले केहि चरणहरू समावेश गर्न सक्छ:
रिलिज बाहिर जानु अघि कसैले सम्पूर्ण डिप्लोयमेन्ट प्रक्रियालाई बेबीसिट गर्दछ। यो व्यक्तिलाई जब र यदि समस्याको संकेतहरू छन् भने हस्तक्षेप गर्ने जिम्मेवारी दिइएको छ। टोलीहरूले एक अन-कल व्यक्तिलाई कायम राख्छन् जसले तिनीहरूको डिप्लोयमेन्ट प्रबन्ध गर्दछ र समस्याहरू उत्पन्न हुँदा त्यसलाई ह्यान्डल गर्दछ।
केही टोलीहरूसँग एक समर्पित रिलिज इन्जिनियरिङ टोली छ, जसले रिलीजहरू सहज रूपमा जान सुनिश्चित गर्दछ। यसको अर्थ उच्च स्तरको विशेषज्ञता भएको हुनाले, तैनाती प्रक्रिया अझ प्रभावकारी र भरपर्दो हुन सक्छ।
केही कम्पनीहरूले कुनै पनि परिवर्तनहरू प्रमाणित गर्न स्प्रेडसिट राख्छन्। यसले कम्पनीहरूलाई यी परिवर्तनहरू व्यवस्थित रूपमा समीक्षा गर्न र अनुमोदन गर्न अनुमति दिन्छ, उनीहरूले पूर्वनिर्धारित गुणस्तर मापदण्डहरू पूरा गर्ने सुनिश्चित गर्दै।
स्प्रेडसिटको अतिरिक्त, म्यानुअल QA अर्को तह कम्पनीहरूले थप्छ। म्यानुअल QA ले स्टेजिङ वातावरणमा नयाँ रिलीजहरूलाई उत्पादनमा डिप्लोय गर्नु अघि परीक्षण गर्छ। यद्यपि, एक परीक्षण वातावरण मूर्ख छैन, त्यसैले केहि वास्तविक-जीवन परिदृश्यहरूको लागि हिसाब गरिने छैन।
कुनै पनि सफ्टवेयर विकास टोलीको लागि म्यानुअल डिप्लोयमेन्टमा मात्र भर पर्दा धेरै चीजहरू गलत हुन सक्छन्:
यसले बाधाहरू सिर्जना गर्न सक्छ, जसले विमोचन ढिलाइ र केही अवस्थाहरूमा मानव त्रुटि निम्त्याउँछ। साथै, यो विशिष्ट व्यक्ति छोड्दा वा आवश्यक कार्यहरूमा डेलिभर गर्न नसक्दा टोलीलाई समस्या हुन सक्छ।
प्रतिकूल उत्पादन घटनामा पछ्याउने कुनै रणनीति छैन। जब कुनै घटना हुन्छ, विज्ञप्ति टोलीले समाधान गर्न र निर्णयहरू गर्न मद्दत गर्न सम्बन्धित सरोकारवालाहरू खोज्नको लागि हात हाल्नु पर्छ।
आदेश वा स्क्रिप्टहरूमा टाइपोग्राफिकल त्रुटिहरू, वा पूर्व-नियोजन वा पोस्ट-डिप्लोइमेन्ट चरणहरू चलाउन बिर्सनुभयो।
डिप्लोयमेन्टहरूले प्रक्रियालाई बच्चा सम्हाल्न आवश्यक भएकोले, यो समय-उपभोग गर्ने प्रयास हुन्छ। साथै डिप्लोइमेन्टको फ्रिक्वेन्सीमा उल्लेखनीय गिरावट आएको छ। उदाहरणका लागि, यदि सम्पूर्ण डिप्लोइमेन्ट अनुगमन गर्न एक घण्टा चाहिन्छ भने, रिलिज टोलीले त्यो समय बचत गर्न साना परिवर्तनहरूका साथ दिनहरूमा डिप्लोयमेन्टहरू छोड्ने निर्णय गर्न सक्छ।
उत्पादन टोलीहरूबाट रिलीजको अवस्था र तिनीहरूको परिवर्तनहरू उत्पादनमा कहिले आउँछन् भन्ने कुरा स्पष्ट छैन।
यी चुनौतिहरूलाई हेर्दा, इन्जिनियरहरू किन डिप्लोइमेन्टसँग डराउँछन् भनेर बुझ्न सजिलो छ। तैनाती विफलताको जोखिम, उच्च दांव, र डाउनटाइम कम राख्नको लागि दबाबले पनि यो डरलाई योगदान गर्दछ।
यी असफलताहरूलाई परीक्षण स्वचालन बढाएर कम गर्न सकिन्छ। तैपनि, यी परीक्षणहरू परीक्षण वातावरणमा गरिन्छ, तपाईंले प्रत्येक सम्भावित त्रुटि समात्ने स्वचालित परीक्षणको अपेक्षा गर्नु हुँदैन। असफलताहरू अपेक्षा गर्न सकिन्छ तर कम दरमा।
केवल निरन्तर परिनियोजनहरू सेटअप गर्नुहोस्? भन्नु भन्दा सजिलो भयो । कमजोरीहरूको बावजुद, म्यानुअल डिप्लोइमेन्टहरू अझै पनि ठीक छन् यदि राम्रोसँग व्यवस्थित गरियो। लक्ष्यहरू हुनुपर्छ:
क्यानरी र रोलब्याक रणनीतिहरूले आउटेजको प्रभावलाई कम गर्न र धेरै अवस्थामा स्वतः संकटबाट बच्न मद्दत गर्न सक्छ।
क्यानरी रिलीजले तपाईंको नयाँ रिलीजलाई उत्पादन वातावरण ट्राफिकको सानो भागमा उजागर गर्दछ। यसले टोलीहरूलाई परीक्षणको क्रममा नआएको हुनसक्ने समस्याहरूमा अन्तरदृष्टि दिन्छ।
अर्कोतर्फ, रोलब्याक रणनीतिले ईन्जिनियरहरूलाई यसको अघिल्लो स्थिर संस्करण स्थितिमा रिलिज फर्काउन मद्दत गर्दछ। यो गरिन्छ जब उत्पादन वातावरणमा तैनाती पछि नयाँ समस्याहरू उत्पन्न हुन्छन्।
दक्षता, स्थिरता, विश्वसनीयता, र उच्च सफ्टवेयर गुणस्तरमा परिणाम दिने मानक परिनियोजन विधिहरू परिभाषित गर्नुहोस्। तिनीहरूको राज्यको DevOps रिपोर्टमा , DORA ले देखाउँछ कि विश्वसनीयताले राम्रो परिचालन कार्यसम्पादनको भविष्यवाणी गर्छ। यसबाहेक, एक मानकीकृत प्रक्रिया भएकोले रिलीज प्रक्रियाहरूमा पुनरावृत्तिलाई अनुमति दिन्छ, जुन स्वचालित हुन सक्छ। यस प्रक्रियालाई स्वचालित गर्नाले टोलीलाई उत्पादन लागत कम राख्न मद्दत गर्दछ।
तैनाती प्रक्रियालाई लोकतान्त्रिकीकरणले विशिष्ट व्यक्तिहरूमाथिको निर्भरता हटाउँछ। यदि हामीले कुनै पनि सफ्टवेयर इन्जिनियरलाई तैनाथ गर्न सशक्त बनायौं भने, यसले बिस्तारै डर कम गर्छ। "यदि "कसैले तैनात गर्न सक्छ, यो धेरै गाह्रो हुनु हुँदैन।" आफ्नो लेगो साझा गर्नुहोस्!
डिप्लोइमेन्ट चिन्ता कम गर्न, हामीले धेरै पटक प्रयोग गर्न आवश्यक छ, कम होइन। DORA रिपोर्टले यो पनि हाइलाइट गर्दछ कि सानो ब्याच डिप्लोइमेन्टले समस्याहरू निम्त्याउने सम्भावना कम हुन्छ र विकासकर्ताहरूको लागि मनोवैज्ञानिक अवरोध कम गर्न मद्दत गर्दछ।
के प्रयोग गरिँदैछ भन्ने कुरा स्पष्ट गर्नाले विकासकर्ताको अनुभव बढाउँछ। विकासकर्ताहरूलाई डिप्लोयमेन्ट कहिले हुन्छ र कुन परिवर्तनहरू समावेश हुन्छन् भनेर जान्न सजिलो बनाउनुहोस्। यो पारदर्शिताले विकासकर्ताहरूलाई उनीहरूको परिवर्तनहरू लाइभ हुँदा ट्र्याक गर्न मद्दत गर्दछ र घटना अनुसन्धानलाई सरल बनाउँछ।
रोलब्याक र हटफिक्सहरूको लागि पछ्याउनको लागि परिभाषित चरणहरू हुनुपर्छ, किनकि यसले उत्पादन घटनाहरूसँग कुनै पनि अनिर्णय हटाउन मद्दत गर्दछ। उदाहरण को लागी, टीमहरु को लागी सजिलो रोलब्याक को लागी पछ्याउन को लागी अलग बिल्ड र डिप्लोय चरणहरु हुनुपर्दछ।
त्यसै गरी, हटफिक्सहरू र चेरी-पिक्सहरूसँग कसरी व्यवहार गर्ने मानकीकरणले दांव उच्च हुँदा सञ्चालन गर्न सजिलो बनाउन सक्छ।
फिचर फ्ल्यागहरू किल-स्विचहरू जस्तै हुन् जसले उत्पादनमा घटना निम्त्याउने नयाँ सुविधालाई बन्द गर्न सक्छ। यसले इन्जिनियरहरूलाई उत्पादन घटनाहरू चाँडै समाधान गर्न सक्षम गर्न सक्छ।
सफ्टवेयर टोलीहरूले महँगो गल्तीहरूबाट बच्न उत्पादन विकासको सुरुदेखि नै रिलीज इन्जिनियरिङलाई प्राथमिकताको रूपमा व्यवहार गर्नुपर्छ। र हामीले क्राउडस्ट्राइक आउटेज जस्ता घटनाहरूलाई हाम्रो विकास अभ्यासहरू अपांग पार्न दिनु हुँदैन। परिनियोजनको डरलाई सम्बोधन गर्न र उत्पादन घटनाहरू रोक्न धेरै मुख्य रणनीतिहरू समावेश छन्:
Aviator मा, हामी विकासकर्ताहरूलाई छिटो र राम्रो निर्माण गर्न सशक्त बनाउन पहिलो सिद्धान्तहरूबाट विकासकर्ता उत्पादकता उपकरणहरू निर्माण गर्दैछौं। डिप्लोयमेन्टहरू व्यवस्थापन गर्ने आधुनिक तरिकाको लागि, एभिएटर रिलीजहरू हेर्नुहोस्।