अराजकता इंजीनियरिंग के सिद्धांत
अंतिम अपडेट: 2018 मई
अराजकता इंजीनियरिंग एक प्रणाली पर प्रयोग करने की विधि है उसमें आत्मविश्वास पैदा करने के लिए एक सिस्टम की क्षमता उत्पादन प्रक्रिया के दौरान अशांत परिस्थितियों का सामना करने के लिए परीक्षण किया जाता है.
बड़े पैमाने पर वितरित सॉफ्टवेयर सिस्टम में अग्रिम दुनिया सॉफ्टवेयर इंजीनियरिंग में बदल रहे हैं। एक उद्योग के रूप में, हम उन प्रथाओं को अपनाने के लिए तत्पर हैं जो विकास के लचीलेपन और तैनाती के वेग को बढ़ाते हैं। इन लाभों की ऊँची एड़ी के जूते पर एक तत्काल प्रश्न इस प्रकार है: हम उन जटिल प्रणालियों में कितना विश्वास कर सकते हैं जो हम उत्पादन में डालते हैं?
यहां तक कि जब एक वितरित प्रणाली में सभी व्यक्तिगत सेवाएं ठीक से काम कर रही हैं, तो उन सेवाओं के बीच बातचीत अप्रत्याशित परिणाम पैदा कर सकती है। अप्रत्याशित परिणाम, जो दुर्लभ लेकिन विघटनकारी वास्तविक दुनिया की घटनाओं से प्रभावित होते हैं, जो उत्पादन वातावरण को प्रभावित करते हैं, इन वितरित प्रणालियों को स्थायी रूप से अव्यवस्थित बनाते हैं.
हमें सिस्टम-व्यापी, असभ्य व्यवहारों में प्रकट होने से पहले कमजोरियों की पहचान करने की आवश्यकता है। प्रणालीगत कमजोरियां इसका रूप ले सकती हैं: जब कोई सेवा अनुपलब्ध हो तो अनुचित फ़ॉलबैक सेटिंग्स; अनुचित रूप से ट्यून किए गए टाइमआउट से रिट्रीट स्टॉर्म; जब डाउनस्ट्रीम निर्भरता बहुत अधिक ट्रैफ़िक प्राप्त करती है; जब असफलता का एक भी बिंदु क्रैश हो जाता है तो कैस्केडिंग विफल हो जाती है; आदि हमें उत्पादन में हमारे ग्राहकों को प्रभावित करने से पहले, सबसे महत्वपूर्ण कमजोरियों को नियमित रूप से संबोधित करना चाहिए। हमें इन प्रणालियों में निहित अराजकता को प्रबंधित करने, लचीलेपन और वेग में वृद्धि करने का लाभ उठाने की आवश्यकता है, और वे जिस जटिलता का प्रतिनिधित्व करते हैं, उसके बावजूद हमारी उत्पादन तैनाती में विश्वास है।
एक अनुभवजन्य, सिस्टम-आधारित दृष्टिकोण वितरित सिस्टम में अराजकता को बड़े पैमाने पर संबोधित करता है और यथार्थवादी परिस्थितियों का सामना करने के लिए उन प्रणालियों की क्षमता में विश्वास बनाता है। हम एक नियंत्रित प्रयोग के दौरान एक वितरित प्रणाली के व्यवहार के बारे में सीखते हैं। हम इसे कैओस इंजीनियरिंग कहते हैं।
उपयोग में अराजकता
पैमाने पर वितरित प्रणालियों की अनिश्चितता को विशेष रूप से संबोधित करने के लिए, अराजक इंजीनियरिंग को प्रणालीगत कमजोरियों को उजागर करने के लिए प्रयोगों की सुविधा के रूप में सोचा जा सकता है। ये प्रयोग चार चरणों का पालन करते हैं::
- सामान्य प्रणाली को इंगित करने वाली प्रणाली के कुछ औसत दर्जे का आउटपुट के रूप में ‘स्थिर स्थिति’ को परिभाषित करके शुरू करें।.
- परिकल्पना है कि यह स्थिर अवस्था नियंत्रण समूह और प्रयोगात्मक समूह दोनों में जारी रहेगी.
- उन चरों का परिचय दें जो वास्तविक विश्व की घटनाओं को दर्शाते हैं जैसे सर्वर जो दुर्घटनाग्रस्त होते हैं, हार्ड ड्राइव जो खराबी, नेटवर्क कनेक्शन जो गंभीर हैं, आदि।.
- नियंत्रण समूह और प्रयोगात्मक समूह के बीच स्थिर स्थिति में अंतर की तलाश करके परिकल्पना को नापसंद करने का प्रयास करें।
स्थिर अवस्था को बाधित करना जितना कठिन होता है, उतना ही अधिक विश्वास हमें सिस्टम के व्यवहार में होता है। यदि एक कमजोरी को उजागर किया जाता है, तो हमारे पास अब सुधार के लिए एक लक्ष्य है, इससे पहले कि व्यवहार बड़े पैमाने पर सिस्टम में प्रकट हो।.
उन्नत सिद्धांतों
निम्नलिखित सिद्धांत कैओस इंजीनियरिंग के एक आदर्श अनुप्रयोग का वर्णन करते हैं, जो ऊपर वर्णित प्रयोगों की प्रक्रियाओं पर लागू होता है। जिस हद तक इन सिद्धांतों का पालन किया जाता है, वह दृढ़ता से उस विश्वास से संबंधित होता है जो हमारे पास वितरित प्रणाली में हो सकता है।
स्थिर राज्य व्यवहार के चारों ओर एक परिकल्पना बनाएँ
सिस्टम की आंतरिक विशेषताओं के बजाय, सिस्टम के औसत दर्जे के आउटपुट पर ध्यान दें। थोड़े समय में उस आउटपुट की माप प्रणाली की स्थिर स्थिति के लिए एक प्रॉक्सी का गठन करती है। समग्र प्रणाली के थ्रूपुट, त्रुटि दर, विलंबता प्रतिशत, आदि सभी स्थिर राज्य व्यवहार का प्रतिनिधित्व करने वाले ब्याज के मीट्रिक हो सकते हैं। प्रयोगों के दौरान प्रणालीगत व्यवहार के पैटर्न पर ध्यान केंद्रित करके, अराजकता यह सत्यापित करती है कि सिस्टम कैसे काम करता है, यह मान्य करने के बजाय कि यह कैसे काम करता है।
वास्तविक दुनिया में घटनाओं को बदलें
अराजकता चर वास्तविक दुनिया की घटनाओं को दर्शाते हैं। संभावित प्रभाव या अनुमानित आवृत्ति द्वारा घटनाओं को प्राथमिकता दें। ऐसी घटनाओं पर विचार करें जो सर्वरों की विफलता, जैसे सर्वर के मरने, विकृत प्रतिक्रियाओं जैसी सॉफ़्टवेयर विफलताओं और ट्रैफ़िक में स्पाइक जैसी गैर-विफलता की घटनाओं या स्केलिंग ईवेंट पर विचार करें। स्थिर स्थिति को बाधित करने में सक्षम कोई भी घटना कैओस प्रयोग में एक संभावित चर है।
उत्पादन में प्रयोग चलाएं
सिस्टम पर्यावरण और यातायात पैटर्न के आधार पर अलग-अलग व्यवहार करते हैं। चूंकि उपयोग का व्यवहार किसी भी समय बदल सकता है, इसलिए वास्तविक ट्रैफ़िक का नमूनाकरण केवल अनुरोध पथ को मज़बूती से पकड़ने का एकमात्र तरीका है। जिस तरह से सिस्टम की मौजूदा तैनाती प्रणाली के लिए प्रयोग किया जाता है और प्रासंगिकता है, उसकी प्रामाणिकता की गारंटी करने के लिए, कैओस उत्पादन ट्रैफिक पर सीधे प्रयोग करने के लिए जोरदार पसंद करता है।.
लगातार चलने के लिए प्रयोगों को स्वचालित करें
मैन्युअल रूप से चल रहे प्रयोग श्रम-गहन और अंततः अस्थिर हैं। प्रयोगों को स्वचालित करें और उन्हें लगातार चलाएं। अराजकता इंजीनियरिंग ऑर्केस्ट्रेशन और विश्लेषण दोनों को चलाने के लिए सिस्टम में स्वचालन बनाता है।.
ब्लास्ट रेडियस को कम से कम करें
उत्पादन में प्रयोग से अनावश्यक ग्राहक दर्द का कारण बनता है। जबकि कुछ अल्पकालिक नकारात्मक प्रभाव के लिए एक भत्ता होना चाहिए, यह अराजकता अभियंता की जिम्मेदारी और दायित्व है कि प्रयोगों से नतीजे को कम से कम और निहित किया जाए।
कैओस इंजीनियरिंग एक शक्तिशाली अभ्यास है जो पहले से ही बदल रहा है कि कैसे सॉफ्टवेयर को दुनिया के कुछ सबसे बड़े पैमाने पर संचालन के लिए डिज़ाइन और इंजीनियर किया गया है। जहां अन्य प्रथाएं वेग और लचीलेपन को संबोधित करती हैं, अराजकता विशेष रूप से इन वितरित प्रणालियों में प्रणालीगत अनिश्चितता से निपटती है। अराजकता के सिद्धांत बड़े पैमाने पर शीघ्रता से नवाचार करने और ग्राहकों को उच्च गुणवत्ता वाले अनुभव देने के लिए आत्मविश्वास प्रदान करते हैं।.
अराजकता के सिद्धांतों और चल समुदाय समुदाय Google समूह में उनके आवेदन की चल रही चर्चा में शामिल हों। Chaos Community.