paint-brush
परिनियोजनहरू: तिनीहरूको तर्कहीन डरद्वारा@aviator

परिनियोजनहरू: तिनीहरूको तर्कहीन डर

द्वारा Aviator7m2024/09/30
Read on Terminal Reader

धेरै लामो; पढ्नकाे लागि

परिनियोजनको चिन्ता वास्तविक हो। डिप्लोइमेन्टसँग सम्बन्धित मानवीय भावनाहरू बुझ्न र डरलाई कम गर्नका लागि उत्तम अभ्यासहरू सिक्ने प्रयास गरौं।
featured image - परिनियोजनहरू: तिनीहरूको तर्कहीन डर
Aviator HackerNoon profile picture



परिनियोजनको चिन्ता वास्तविक हो। डिप्लोइमेन्टसँग सम्बन्धित मानवीय भावनाहरू बुझ्न र डरलाई कम गर्नका लागि उत्तम अभ्यासहरू सिक्ने प्रयास गरौं।


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


जे होस्, एक सफ्टवेयर इन्जिनियरको रूपमा, मलाई लाग्छ कि हामीले डिप्लोइमेन्टसँग सम्बन्धित मानव भावनाहरूको पक्षलाई हराइरहेका छौं, विशेष गरी उत्पादन तोड्ने डर। त्यो हामी यस लेखमा डुब्न प्रयास गर्नेछौं। हामी कभर गर्नेछौं:


  • रिलीज ईन्जिनियरिङ् को कार्य बुझ्दै।
  • के सफ्टवेयर इन्जिनियरहरूले के हेरचाह गर्छन् र के गर्दैनन्।
  • निरन्तर वितरणको प्रभाव (CD)।
  • म्यानुअल डिप्लोइमेन्टहरूमा एक नजर।
  • म्यानुअल डिप्लोइमेन्टको साथ समस्या र यी समस्याहरूको समाधान।

ईन्जिनियरिङ् जारी गर्नुहोस्

सफ्टवेयर इन्जिनियरको परिप्रेक्ष्यबाट डिप्लोइमेन्टको डरमा जान अघि, पहिले रिलीज इन्जिनियरको भूमिका बुझौं। रिलिज इन्जिनियरिङ हालका वर्षहरूमा धेरै विकसित भएको छ, आधुनिक CI र CD उपकरणहरू र Kubernetes को मानकीकरणको लागि धन्यवाद। यी प्रगतिहरूको बावजुद, प्राथमिक जिम्मेवारीहरू उस्तै छन्:


  • लगातार र दोहोर्याउन मिल्ने डिप्लोइमेन्टहरू: रिलीज प्रक्रियाहरूको मानकीकरण, उत्पादनमा खराब तैनातीको जोखिम कम गर्दछ।


  • सेवा अवरोधहरू कम गर्दै : मानकीकृत प्रक्रियाहरूले हानिकारक उत्पादन वातावरण घटनाहरू सामना गर्न टोलीहरू सुसज्जित छन् भनेर पनि सुनिश्चित गर्दछ - उदाहरणका लागि, परिदृश्यहरूको लागि रोलब्याक रणनीति जहाँ रिलीजले समस्या निम्त्याउँछ।


  • अनुगमन गर्नुहोस् र प्रदर्शन अनुकूलन गर्नुहोस्: छिटो र अधिक भरपर्दो तैनातीहरूको लागि प्रदर्शन सुधारहरू हेर्नुहोस्।


  • इन्जिनियरिङसँग सहकार्य गर्नुहोस्: सबै नयाँ र अवस्थित सेवाहरूमा राम्रोसँग परिभाषित डिप्लोय प्रक्रिया भएको सुनिश्चित गर्न विकासकर्ताहरू, QA र DevOps टोलीहरूसँग नजिकबाट काम गर्नुहोस्।

सफ्टवेयर इन्जिनियरहरूले के हेरचाह गर्छन्

रिलिज इन्जिनियरहरूको विपरीत, उत्पादन टोलीमा काम गर्ने सफ्टवेयर इन्जिनियरको रूपमा हामीले परिनियोजनका केही पक्षहरूको मात्र ख्याल गर्न सक्छौं:


  • द्रुत कोड मर्जहरू: द्रुत रूपमा मर्ज गर्नाले उनीहरूलाई आफ्नो काम प्रमाणित गर्न र नयाँ कार्यहरूमा जान वा निर्भर कार्यहरू अनब्लक गर्न अनुमति दिन्छ।


  • उत्पादन घटनाहरू : यद्यपि ईन्जिनियरहरूले सबै उत्पादन घटनाहरूको ख्याल नगर्न सक्छन्, तिनीहरू निश्चित रूपमा तिनीहरूको कोड परिवर्तनहरूको ख्याल राख्छन् जुन कुनै उत्पादन आउटेजको कारण हो।


  • डिप्लोइमेन्ट समयतालिका : इन्जिनियरहरू पनि उनीहरूको परिवर्तनहरू लाइभ हुँदा वा लाइभ भएको ट्र्याक गर्न चाहन्छन् ताकि तिनीहरूले तिनीहरूका परिवर्तनहरूमा वास्तविक-समय प्रतिक्रियामा पहुँच गर्न सकून्।

के सफ्टवेयर ईन्जिनियरहरूले वास्ता गर्दैनन्

यद्यपि त्यहाँ हामीले ख्याल गर्ने चीजहरू छन्, त्यहाँ ती पनि छन् जुन हामीले गर्दैनौं:


  • डिप्लोयमेण्ट मेथडोलोजी : यद्यपि हामीलाई कुशल र भरपर्दो डिप्लोइमेन्ट प्रक्रियाको आवश्यकता थाहा छ, तिनीहरूले यसलाई कसरी प्रदर्शन गरिन्छ भन्ने वास्ता गर्दैनन्।


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


  • डिप्लोयमेन्ट म्यानेजमेन्ट : एक इन्जिनियरले सफ्टवेयर टोलीमा डिप्लोइमेन्ट प्रबन्ध गर्ने बारे उदासीन हुन्छ। उदाहरणका लागि, हामीले डिप्लोइमेन्ट प्रबन्ध गर्ने कुरामा मात्र ध्यान दिनेछौं यदि त्यसो गर्ने जिम्मेवारी दिइएको छ।

निरन्तर परिनियोजनको प्रभाव (CD)

त्यसोभए डरले निरन्तर तैनातीसँग के गर्नु पर्छ?


धेरै।


अध्ययनहरूले [धेरै फाइदाहरू](https://dora.dev/capabilities/continuous-delivery/#:~:text=DevOps%20Research%20and%20Assessment%20(DORA,as%20higher%20levels%20of%20availability) प्रमाणित गरेको छ। निरन्तर तैनाती (CD) को, र आश्चर्यजनक रूपमा, जसमध्ये धेरै मनोवैज्ञानिक छन् निरन्तर तैनातीहरूले "ह्युमन-इन-द-लूप" हटाउँछ, त्यसैले, यसलाई परीक्षण पूर्वाधारमा बलियो विश्वास चाहिन्छ।


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


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


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

म्यानुअल डिप्लोइमेन्टहरू

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

पर्यवेक्षण

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

समर्पित रिलीज टोलीहरू

केही टोलीहरूसँग एक समर्पित रिलिज इन्जिनियरिङ टोली छ, जसले रिलीजहरू सहज रूपमा जान सुनिश्चित गर्दछ। यसको अर्थ उच्च स्तरको विशेषज्ञता भएको हुनाले, तैनाती प्रक्रिया अझ प्रभावकारी र भरपर्दो हुन सक्छ।

स्प्रेडसिटहरू

केही कम्पनीहरूले कुनै पनि परिवर्तनहरू प्रमाणित गर्न स्प्रेडसिट राख्छन्। यसले कम्पनीहरूलाई यी परिवर्तनहरू व्यवस्थित रूपमा समीक्षा गर्न र अनुमोदन गर्न अनुमति दिन्छ, उनीहरूले पूर्वनिर्धारित गुणस्तर मापदण्डहरू पूरा गर्ने सुनिश्चित गर्दै।

म्यानुअल QA

स्प्रेडसिटको अतिरिक्त, म्यानुअल QA अर्को तह कम्पनीहरूले थप्छ। म्यानुअल QA ले स्टेजिङ वातावरणमा नयाँ रिलीजहरूलाई उत्पादनमा डिप्लोय गर्नु अघि परीक्षण गर्छ। यद्यपि, एक परीक्षण वातावरण मूर्ख छैन, त्यसैले केहि वास्तविक-जीवन परिदृश्यहरूको लागि हिसाब गरिने छैन।

म्यानुअल डिप्लोइमेन्टको साथ चीजहरू कहाँ गलत हुन्छन्?

कुनै पनि सफ्टवेयर विकास टोलीको लागि म्यानुअल डिप्लोयमेन्टमा मात्र भर पर्दा धेरै चीजहरू गलत हुन सक्छन्:

सानो समूहमा निर्भरता

यसले बाधाहरू सिर्जना गर्न सक्छ, जसले विमोचन ढिलाइ र केही अवस्थाहरूमा मानव त्रुटि निम्त्याउँछ। साथै, यो विशिष्ट व्यक्ति छोड्दा वा आवश्यक कार्यहरूमा डेलिभर गर्न नसक्दा टोलीलाई समस्या हुन सक्छ।

कुनै जोखिम न्यूनीकरण रणनीति छैन

प्रतिकूल उत्पादन घटनामा पछ्याउने कुनै रणनीति छैन। जब कुनै घटना हुन्छ, विज्ञप्ति टोलीले समाधान गर्न र निर्णयहरू गर्न मद्दत गर्न सम्बन्धित सरोकारवालाहरू खोज्नको लागि हात हाल्नु पर्छ।

मानवीय त्रुटिको प्रवण

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

उच्च प्रयास

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

संचार ब्रेकडाउन

उत्पादन टोलीहरूबाट रिलीजको अवस्था र तिनीहरूको परिवर्तनहरू उत्पादनमा कहिले आउँछन् भन्ने कुरा स्पष्ट छैन।


यी चुनौतिहरूलाई हेर्दा, इन्जिनियरहरू किन डिप्लोइमेन्टसँग डराउँछन् भनेर बुझ्न सजिलो छ। तैनाती विफलताको जोखिम, उच्च दांव, र डाउनटाइम कम राख्नको लागि दबाबले पनि यो डरलाई योगदान गर्दछ।


यी असफलताहरूलाई परीक्षण स्वचालन बढाएर कम गर्न सकिन्छ। तैपनि, यी परीक्षणहरू परीक्षण वातावरणमा गरिन्छ, तपाईंले प्रत्येक सम्भावित त्रुटि समात्ने स्वचालित परीक्षणको अपेक्षा गर्नु हुँदैन। असफलताहरू अपेक्षा गर्न सकिन्छ तर कम दरमा।

हामी यसको बारेमा के गर्न सक्छौं?

केवल निरन्तर परिनियोजनहरू सेटअप गर्नुहोस्? भन्नु भन्दा सजिलो भयो । कमजोरीहरूको बावजुद, म्यानुअल डिप्लोइमेन्टहरू अझै पनि ठीक छन् यदि राम्रोसँग व्यवस्थित गरियो। लक्ष्यहरू हुनुपर्छ:


  • उत्पादन घटनाहरूबाट बच्न गार्डेलहरू प्रदान गर्नुहोस्
  • मानवीय त्रुटिहरू कम गर्नुहोस्
  • डिप्लोइहरू ट्रिगर गर्न कसैलाई सक्षम गर्नुहोस्
  • तैनाती बारम्बार हुने सुनिश्चित गर्नुहोस्

गार्डरेलहरू - क्यानरी र रोलब्याकहरू

क्यानरी र रोलब्याक रणनीतिहरूले आउटेजको प्रभावलाई कम गर्न र धेरै अवस्थामा स्वतः संकटबाट बच्न मद्दत गर्न सक्छ।


क्यानरी रिलीजले तपाईंको नयाँ रिलीजलाई उत्पादन वातावरण ट्राफिकको सानो भागमा उजागर गर्दछ। यसले टोलीहरूलाई परीक्षणको क्रममा नआएको हुनसक्ने समस्याहरूमा अन्तरदृष्टि दिन्छ।


अर्कोतर्फ, रोलब्याक रणनीतिले ईन्जिनियरहरूलाई यसको अघिल्लो स्थिर संस्करण स्थितिमा रिलिज फर्काउन मद्दत गर्दछ। यो गरिन्छ जब उत्पादन वातावरणमा तैनाती पछि नयाँ समस्याहरू उत्पन्न हुन्छन्।

मानव त्रुटिहरू कम गर्नुहोस् - मानकीकरण

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

परिनियोजन प्रक्रिया प्रजातान्त्रिकीकरण गर्नुहोस्

तैनाती प्रक्रियालाई लोकतान्त्रिकीकरणले विशिष्ट व्यक्तिहरूमाथिको निर्भरता हटाउँछ। यदि हामीले कुनै पनि सफ्टवेयर इन्जिनियरलाई तैनाथ गर्न सशक्त बनायौं भने, यसले बिस्तारै डर कम गर्छ। "यदि "कसैले तैनात गर्न सक्छ, यो धेरै गाह्रो हुनु हुँदैन।" आफ्नो लेगो साझा गर्नुहोस्!

बारम्बार तैनाती

डिप्लोइमेन्ट चिन्ता कम गर्न, हामीले धेरै पटक प्रयोग गर्न आवश्यक छ, कम होइन। DORA रिपोर्टले यो पनि हाइलाइट गर्दछ कि सानो ब्याच डिप्लोइमेन्टले समस्याहरू निम्त्याउने सम्भावना कम हुन्छ र विकासकर्ताहरूको लागि मनोवैज्ञानिक अवरोध कम गर्न मद्दत गर्दछ।

विकासकर्ता अनुभव सुधार गर्नुहोस्

के प्रयोग गरिँदैछ भन्ने कुरा स्पष्ट गर्नाले विकासकर्ताको अनुभव बढाउँछ। विकासकर्ताहरूलाई डिप्लोयमेन्ट कहिले हुन्छ र कुन परिवर्तनहरू समावेश हुन्छन् भनेर जान्न सजिलो बनाउनुहोस्। यो पारदर्शिताले विकासकर्ताहरूलाई उनीहरूको परिवर्तनहरू लाइभ हुँदा ट्र्याक गर्न मद्दत गर्दछ र घटना अनुसन्धानलाई सरल बनाउँछ।

परिभाषित जोखिम न्यूनीकरण रणनीतिहरू

रोलब्याक र हटफिक्सहरूको लागि पछ्याउनको लागि परिभाषित चरणहरू हुनुपर्छ, किनकि यसले उत्पादन घटनाहरूसँग कुनै पनि अनिर्णय हटाउन मद्दत गर्दछ। उदाहरण को लागी, टीमहरु को लागी सजिलो रोलब्याक को लागी पछ्याउन को लागी अलग बिल्ड र डिप्लोय चरणहरु हुनुपर्दछ।


त्यसै गरी, हटफिक्सहरू र चेरी-पिक्सहरूसँग कसरी व्यवहार गर्ने मानकीकरणले दांव उच्च हुँदा सञ्चालन गर्न सजिलो बनाउन सक्छ।

विशेषता झण्डा

फिचर फ्ल्यागहरू किल-स्विचहरू जस्तै हुन् जसले उत्पादनमा घटना निम्त्याउने नयाँ सुविधालाई बन्द गर्न सक्छ। यसले इन्जिनियरहरूलाई उत्पादन घटनाहरू चाँडै समाधान गर्न सक्षम गर्न सक्छ।

निष्कर्ष

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


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


Aviator मा, हामी विकासकर्ताहरूलाई छिटो र राम्रो निर्माण गर्न सशक्त बनाउन पहिलो सिद्धान्तहरूबाट विकासकर्ता उत्पादकता उपकरणहरू निर्माण गर्दैछौं। डिप्लोयमेन्टहरू व्यवस्थापन गर्ने आधुनिक तरिकाको लागि, एभिएटर रिलीजहरू हेर्नुहोस्।