रासायनिक और रासायनिक इंजीनियरिंग
कैसे क्रिटिकल इंजीनियरिंग सॉफ्टवेयर सिस्टम में डाउनटाइम को कम करने के लिए रिफैक्टरिंग का उपयोग करें
Table of Contents
क्रिटिकल सिस्टम में डाउनटाइम की उच्च लागत
एयरोस्पेस, ऊर्जा, परिवहन और स्वास्थ्य देखभाल जैसे क्षेत्रों में, सॉफ्टवेयर विफलता केवल असुविधा नहीं होती है - वे उत्प्रेरक परिणाम का कारण बन सकते हैं। उदाहरण के लिए, न्यूयॉर्क स्टॉक एक्सचेंज के 2015 आउटेज में लाखों लोग खो गए व्यापार में खर्च होते हैं, जबकि एक अस्पताल के जलसेक पंप में सॉफ्टवेयर की चमक रोगी के जीवन को खतरे में डाल सकती है। यहां तक कि गंभीर इंजीनियरिंग प्रणालियों में संक्षिप्त डाउनटाइम सुरक्षा खतरों, नियामक दंडों और प्रतिष्ठात्मक क्षति में शामिल हो सकता है। अपने बाहरी व्यवहार को बदलने के बिना रिफैक्टरिंग-रिस्ट्रक्चरिंग कोड - तकनीकी ऋण को कम करने और सिस्टम लचीलापन में सुधार के लिए एक अनुशासित दृष्टिकोण है, लेकिन इसे नए जोखिमों से बचने के लिए परिशुद्धता के साथ निष्पादित किया जाना चाहिए।
डाउनटाइम को कम करने के लिए कोर रिफैक्टरिंग सिद्धांत
मिशन-क्रिटिकल वातावरण में प्रभावी रिफैक्टरिंग तीन स्तंभों पर आराम करता है: व्यवहार संरक्षण , ]incremental change, और defensive testing ]]]. Behavior संरक्षण सुनिश्चित करता है कि हर रिफैक्टरिंग कदम प्रणाली के समान अवलोकनीय आउटपुट को छोड़ देता है। इन बदलावों के बाद किसी भी संशोधन के विस्फोट त्रिज्या को सीमित नहीं किया गया है। रक्षात्मक परीक्षण सत्यापित करता है कि प्रत्येक चरण में कोई रिगेशन नहीं हुई है।
सुरक्षित रिफैक्टरिंग के लिए कुंजी रणनीति
समानांतर रन और छाया मोड
छाया मोड में, पुनर्निर्मित घटक मूल प्रणाली के साथ चलता है, उसी इनपुट को संसाधित करता है लेकिन चुपचाप इसके आउटपुट को त्याग देता है। इंजीनियर लाइव ऑपरेशन को प्रभावित किए बिना मतभेदों का पता लगाने के परिणाम की तुलना करते हैं। एक बार आत्मविश्वास अधिक होता है, छाया घटक को प्राथमिक स्थिति में बढ़ावा दिया जा सकता है। यह तकनीक कोर एल्गोरिदम या डेटा प्रोसेसिंग पाइपलाइनों के लिए विशेष रूप से उपयोगी होती है जहां शुद्धता पैरामाउंट होती है।
फ़ीचर टोगल
फ़ीचर टॉगल (या झंडे) आपको कॉन्फ़िगरेशन स्विच के पीछे रिफैक्टोर्ड कोड लपेटने की अनुमति देता है। फिर से तैयार पथ स्पष्ट रूप से चालू होने तक निष्क्रिय रहता है, जिससे टीमों को धीरे-धीरे इसे सक्षम करने की क्षमता मिलती है या मुद्दों के बढ़ने पर तुरंत रोल करने की क्षमता होती है। महत्वपूर्ण प्रणालियों में, टॉगल्स को स्थिर होना चाहिए (नियोजन समय पर सेट) बजाय गतिशील रनटाइम परिवर्तनों से अप्रत्याशित व्यवहार से बचने के लिए।
कैनरी रिलीज
एक कैनरी रिलीज ने रिफैक्टर्ड सिस्टम में यातायात का एक छोटा प्रतिशत निर्देशित किया है जबकि बहुमत स्थिर संस्करण पर जारी है। यह दृष्टिकोण उत्पादन लोड के तहत वास्तविक दुनिया को मान्य करने की अनुमति देता है। यदि कैनरी ने त्रुटि दरों या विलंबता को ऊंचा दिखाया है, तो यातायात तुरंत वापस ले जाया जा सकता है। इंजीनियरिंग सॉफ्टवेयर के लिए जो भौतिक उपकरणों को नियंत्रित करता है, कैनरी रिलीज को समर्पित परीक्षण वातावरण की आवश्यकता हो सकती है जो दर्पण उत्पादन लेकिन लाइव ऑपरेशन से अलग हो जाती है।
ब्लू-ग्रीन तैनाती
ब्लू-ग्रीन तैनाती दो समान वातावरण बनाए रखता है: "नीले" (वर्तमान स्थिर) और "हरी" (रिफैक्टर)। हरे वातावरण के संपूर्ण सत्यापन के बाद, एक परमाणु ऑपरेशन में ब्लू से हरे रंग तक यातायात को स्विच किया जाता है।
नियोजित रखरखाव विंडोज
सर्वोत्तम प्रयासों के बावजूद, कुछ पुन: निर्माण पारदर्शी रूप से पेश नहीं किया जा सकता है। ऐसे मामलों में, परिभाषित रखरखाव खिड़कियों के दौरान अनुसूची परिवर्तन - संभवतः जब सिस्टम लोड कम हो जाता है। खिड़की को स्पष्ट रूप से हितधारकों के लिए जोड़ दें, और यह सुनिश्चित करें कि रोलबैक प्रक्रियाएं फिर से जारी और दस्तावेजित हैं। कभी भी शिखर परिचालन अवधि के दौरान या तुरंत महत्वपूर्ण समय सीमा से पहले परिवर्तन को तैनात नहीं किया जाता है।
एक मजबूत परीक्षण पाइपलाइन का निर्माण
यूनिट और एकीकरण टेस्ट
एक व्यापक परीक्षण सूट महत्वपूर्ण प्रणालियों के लिए गैर-नकली है। यूनिट परीक्षण व्यक्तिगत कार्यों को सत्यापित करते हैं, जबकि एकीकरण परीक्षण पुष्टि करते हैं कि पुनर्निर्मित मॉड्यूल मौजूदा घटकों के साथ सही ढंग से बातचीत करते हैं। का उपयोग करें टेस्ट कवरेज टूल ताकि अनटेस्ट कोड पथ की पहचान की जा सके। सुरक्षा-क्रिटिकल सॉफ्टवेयर के लिए, ]formal सत्यापन] या मॉडल आधारित परीक्षण ] को गणितीय रूप से साबित करने के लिए कि व्यवहार अपरिवर्तित रहता है। का समर्थन किया जाना चाहिए।
प्रतिगमन परीक्षण और सतत एकीकरण
स्वचालित प्रतिगमन परीक्षण हर बातचीत की त्रुटियों को जल्दी पर चलाते हैं। सतत एकीकरण (सीआई) पाइपलाइनों को मिनटों में पूर्ण प्रतिगमन सूट को निष्पादित करना चाहिए। महत्वपूर्ण प्रणालियों के लिए, यह भी चला जाता है प्रदर्शन रिग्रेक्शन परीक्षण यह सुनिश्चित करने के लिए कि रिफैक्टरिंग समय या संसाधन के उपयोग को कम नहीं करता है। ]Regression test suite]] रखरखाव आवश्यक है-जब आप एक बग को ठीक करते हैं, तो एक परीक्षण जोड़ें जो इसे ठीक करने से पहले पुन: उत्पन्न करता है।
लचीलापन सत्यापन के लिए अराजकता इंजीनियरिंग
Chaos Engineering जानबूझकर यह देखने के लिए प्रणाली में विफलताओं को इंजेक्ट करता है कि यह तनाव के तहत कैसे व्यवहार करता है। पुनर्निर्माण घटकों के लिए लागू, यह उन धारणाओं को प्रकट कर सकता है जो बदल गए हैं या नए असफलता मोड को पुनर्गठन द्वारा पेश किया गया है। Chaos Engineering नेटवर्क विभाजन, संसाधन थकावट, या यातायात के अचानक फटने का अनुकरण कर सकते हैं। इस अनुशासन को नेटफ्लिक्स और अमेज़ॅन जैसे संगठनों द्वारा अपनाया गया है ताकि सिस्टम में लचीलापन सुनिश्चित किया जा सके जो डाउनटाइम को बर्दाश्त नहीं कर सके।
क्रिटिकल सिस्टम रिफैक्टरिंग के लिए कार्यान्वयन चरण
आकलन और योजना
सिस्टम आर्किटेक्चर के गहन विश्लेषण के साथ शुरू करें। उन मॉड्यूल की पहचान करें जो अच्छी तरह से परिभाषित हैं, उच्च परीक्षण कवरेज है, और सुरक्षा-क्रिटिकल पथ से अलग हैं। प्रभाव को समझने के लिए स्वतंत्रता ग्राफ का उपयोग करें। जोखिम और व्यापार मूल्य के अनुसार रैंक रिफैक्टरिंग उम्मीदवार। इंजीनियरिंग डोमेन विशेषज्ञों -इंजर्स जो हार्डवेयर बाधाओं, संचालन की स्थिति और नियामक आवश्यकताओं को जानते हैं - योजना को मान्य करने के लिए।
संस्करण नियंत्रण और रोलबैक
प्रत्येक रिफैक्टरिंग परिवर्तन को एक अलग शाखा के लिए एक स्पष्ट प्रतिबद्ध संदेश के साथ परिवर्तन का वर्णन करना चाहिए। काम शुरू करने से पहले स्थिर रिलीज को टैग करें। रोलबैक योजना को न केवल कोड रिवर्ट बल्कि किसी भी डेटाबेस माइग्रेशन या कॉन्फ़िगरेशन परिवर्तन को भी विस्तार करना चाहिए, जिसे एक मंचन वातावरण में रोलबैक प्रक्रिया का अभ्यास करना चाहिए ताकि यह घटना के दौरान दूसरी प्रकृति बन जाए।
पर्यावरण
एक मंचन वातावरण जो हार्डवेयर, नेटवर्क टोपोलॉजी में उत्पादन को प्रतिबिंबित करता है, और डेटा वॉल्यूम सुरक्षित रिफैक्टरिंग के लिए आवश्यक है। यहां पूर्ण परीक्षण सूट और प्रदर्शन बेंचमार्क चलाएं। सॉफ्टवेयर के लिए जो भौतिक मशीनरी (जैसे रोबोटिक नियंत्रक, पावर ग्रिड मॉनिटर) के साथ इंटरफेस करता है, स्टेजिंग में सिमुलेशन लूप शामिल होना चाहिए जो वास्तविक दुनिया के इनपुट और आउटपुट को दोहराते हैं। केवल स्टेजिंग के बाद सभी मानदंडों को उत्पादन में बदलाव करना चाहिए।
निगरानी और निरीक्षण
पोस्ट रिफैक्टरिंग मॉनिटरिंग को कार्यात्मक शुद्धता और परिचालन स्वास्थ्य दोनों को ट्रैक करना चाहिए। त्रुटि दर स्पाइक्स, विलंबता बढ़ जाती है और संसाधन उपभोग में परिवर्तन के लिए alerting] सेट करें। रिफैक्टर्ड कोड पथ के माध्यम से अनुरोधों का पालन करने के लिए वितरित ट्रेसिंग का उपयोग करें। महत्वपूर्ण प्रणालियों में, न केवल सॉफ्टवेयर बल्कि anomalies के लिए कोई भी जुड़े हार्डवेयर की निगरानी करें। एक डैशबोर्ड को बनाए रखें जो सामान्य ऑपरेशन के कम से कम एक चक्र के लिए पूर्व और बाद में रिफैक्टरिंग मीट्रिक की तुलना करता है।
क्रिटिकल कोड के लिए कॉमन रिफैक्टरिंग तकनीक
सभी पुन: निर्माण तकनीक समान रूप से सुरक्षित नहीं हैं। उन लोगों का पक्ष लें जो यांत्रिक और प्रतिवर्ती हैं:
- Extract Method – पठनीयता में सुधार के लिए एक नए तरीके से कोड का एक ब्लॉक ले जाएँ। सुनिश्चित करें कि निकाले गए विधि साइड इफेक्ट नहीं जोड़ती है।
- ]Rename Variable or Function – निष्पादन को बदलने के बिना स्पष्टता में सुधार. सभी संदर्भों को पकड़ने के लिए IDE-समर्थित नाम पुनर्निर्माण का उपयोग करें.
- ]]]विन्यास मैजिक नंबर प्रतीकात्मक कॉन्स्टेंट के साथ - हार्ड-कोडित साक्षर को हटा दें जो रखरखाव के दौरान भ्रम पैदा कर सकती हैं।
- ]]Simplify Conditional Expressions – Decompose complex if-else cascades in guard क्लॉज or स्विच स्टेटमेंट, लेकिन केवल सभी शाखाओं के थकाऊ परीक्षण के बाद.
- ]Introduce पैरामीटर ऑब्जेक्ट - विधि हस्ताक्षर जटिलता को कम करने के लिए एक एकल वस्तु में समूह से संबंधित पैरामीटर।
प्रत्येक तकनीक को अलगाव, परीक्षण और अगले पहले प्रतिबद्ध में लागू किया जाना चाहिए। सॉफ्टवेयर इम्प्रूवमेंट ग्रुप का श्वेत पत्र (FLT:1] उच्च विश्वसनीयता वातावरण के लिए सही दृष्टिकोण का चयन करने के लिए व्यावहारिक मार्गदर्शन प्रदान करता है।
जोखिम शमन और शासन
कोड समीक्षा और जोड़ी प्रोग्रामिंग
प्रत्येक रिफैक्टरिंग प्रतिबद्धता की समीक्षा कम से कम दो इंजीनियरों द्वारा की जानी चाहिए जो सिस्टम से परिचित हैं। रिफैक्टरिंग सत्र के दौरान जोड़ी प्रोग्रामिंग से त्रियल गलतियों और ज्ञान हस्तांतरण को रोकने में मदद मिलती है। समीक्षा को व्यवहार संरक्षण, परीक्षण कवरेज और रिफैक्टरिंग योजना का पालन करने पर ध्यान देना चाहिए।
विशेषज्ञ सत्यापन
महत्वपूर्ण डोमेन में, विषय-माटर विशेषज्ञों (SME) शामिल हैं जो भौतिकी, रसायन विज्ञान, या परिचालन तर्क को समझते हैं कि सॉफ्टवेयर एन्कोडिंग। एक SME स्पॉट हो सकता है कि एक नाम बदली हुई चर अब क्षेत्र में व्यापक रूप से इस्तेमाल किया संक्षिप्तीकरण के साथ संघर्ष करता है, या एक निकाली गई विधि अनजाने में एक समय-संवेदनशील अनुक्रम में संचालन को फिर से व्यवस्थित करती है।
सलाहकार बोर्ड बदलें
सॉफ्टवेयर के लिए जो एक बड़े प्रमाणित प्रणाली (जैसे, एवियोनिक्स, परमाणु रिएक्टर नियंत्रण) का हिस्सा है, किसी भी कोड परिवर्तन को परिवर्तन नियंत्रण बोर्ड से अनुमोदन की आवश्यकता हो सकती है। बोर्ड रिफैक्टरिंग योजना, जोखिम मूल्यांकन, रोलबैक रणनीति और सत्यापन के सबूत की समीक्षा करता है। उद्योग मानकों के अनुरूप एक प्रारूप में तर्क और परीक्षण परिणाम (जैसे, DO-178C, IEC 61508) को लेखा परीक्षा की योग्यता सुनिश्चित करता है।
निष्कर्ष
रिफैक्टरिंग स्वयं में एक अंत नहीं है - यह एक महत्वपूर्ण इंजीनियरिंग सॉफ्टवेयर को सुरक्षित, रखरखाव और लचीला रखने का एक साधन है। वृद्धिशील परिवर्तन, कठोर परीक्षण और तैनाती रणनीतियों को लागू करके जो जोखिम को कम करते हैं, इंजीनियर डाउनटाइम के कारण तकनीकी ऋण को कम कर सकते हैं। कुंजी सुरक्षा-क्रिटिकल वातावरण में किसी अन्य बदलाव के रूप में उसी अनुशासन के साथ पुनः निर्माण करने का है: पूरी तरह से योजना बनाएं, जुनूनी ढंग से परीक्षण करें और हमेशा एक रोलबैक तैयार रहें। जब सही ढंग से किया जाता है, तो रिफैक्टरिंग उन प्रणालियों को बाधित किए बिना ब्रेटल कोड को मजबूत कर देता है जो समाज पर निर्भर करता है।