कैओस इंजीनियरिंग क्या है?

टेक हर जगह है। आपका उद्योग कितना ऊंचा दांव पर है, इस पर निर्भर करते हुए, तकनीकी उत्पाद या सिस्टम की विफलता पूरी तरह से नगण्य से लेकर जीवन के अंत तक कहीं भी गिर सकती है जैसा कि आप जानते हैं।

अस्पताल मेनफ्रेम? महत्वपूर्ण प्रकार। आपके सेल फोन पर कैंडी क्रश ऐप का लचीलापन? प्राथमिकताओं की समग्र सूची में शायद थोड़ा कम।

नेटवर्क की एक वितरित प्रणाली में, विफलता अपरिहार्य है। तबाही को रोकना एक ठोस, निर्विवाद सुरक्षा डिजाइन के साथ शुरू होता है। लेकिन इसके अलावा और क्या किया जा सकता है?

नेटफ्लिक्स कैओस इंजीनियरिंग क्या है?

20 सितंबर 2015।

पश्चिमी मोर्चे पर सब कुछ शांत है, जब अचानक, कई महत्वपूर्ण कॉर्पोरेट अमेज़ॅन वेब सर्विसेज सर्वर बिना एक शब्द के नीचे जाते हैं।

कई बड़ी कंपनियां अपने ग्राहकों को कई घंटों तक मुहैया नहीं करा पा रही थीं। हालाँकि, नेटफ्लिक्स कुछ ही मिनटों में अपने पैरों पर वापस आ गया था। कैसे? नेटफ्लिक्स की आंतरिक कंपनी संस्कृति आपदा आने पर सिस्टम और इंजीनियरों दोनों को समान रूप से तैयार करने के लिए वास्तविक समय में लागू कई "विफलता-प्रेरक" प्रथाओं को शामिल करने के लिए विकसित हुई थी।

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

इन जानबूझकर "अराजकता इंजीनियरिंग" अभ्यासों ने अपने इंजीनियरों को असफलता के माध्यम से खुद को देखने के लिए पर्याप्त प्रतिस्पर्धात्मक बढ़त दी, जो कि इस तरह के प्रलय के दिन की घटना को ध्यान में रखते हुए बनाए गए निवारक बुनियादी ढांचे के लिए धन्यवाद।

जब बड़ी लहर आई तो कोई और तैयार नहीं था। नेटफ्लिक्स सिस्टम खुद के लिए काफी मजबूत था। निष्कर्ष? ये अराजक मास्टरमाइंड यहां किसी चीज पर हो सकते हैं।

जानबूझकर उन लोगों का सफाया करना जो आपसे प्यार करते हैं

"कैओस इंजीनियरिंग उत्पादन में अशांत परिस्थितियों का सामना करने के लिए सिस्टम की क्षमता में विश्वास पैदा करने के लिए एक सिस्टम पर प्रयोग करने का अनुशासन है।"

अराजकता घोषणापत्र के सिद्धांत

यह अराजकता इंजीनियरिंग का दिल है – संक्षेप में, एक "फायर ड्रिल" जो काम के घंटों के दौरान सिस्टम पर लगाया जाता है जब प्रस्तुत चुनौती का समाधान करने के लिए आंखें और हाथ उपलब्ध होते हैं। किसी दी गई प्रणाली की विफलता को सहन करने की क्षमता का परीक्षण किया जाता है क्योंकि कोई भी कमजोरियां उजागर हो जाती हैं।

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

वास्तविक विफलता? यह नरक के रूप में महंगा हो सकता है, और यह मौद्रिक प्रभाव से परे है । यहां तक ​​कि डाउनटाइम की अवधि, सुरक्षा में कोई वास्तविक चूक नहीं होने के कारण, राजस्व अर्जित करने के बहुत सारे छूटे हुए अवसर होने की संभावना है। आपको अंधा करने के लिए किसी आपात स्थिति का इंतजार क्यों करें?

पागलपन के पीछे बंदर

कुछ कंपनियां एक "रेड टीम" मॉडल अपनाएंगी जो डेवलपर्स की टीमों को उनके भाइयों के खिलाफ विभागीय लाइनों में खड़ा करती है। हालांकि, नेटफ्लिक्स द्वारा स्थापित क्लासिक उदाहरण "सिमियन आर्मी" का उपयोग करता है। ये बॉट उनके लिए निष्पक्ष और पूरी तरह से बेतरतीब ढंग से गंदा काम करते हैं।

पागल? आम आदमी के लिए, शायद। "कैओस मंकीज़" लेखक एंटोनियो गार्सिया मार्टिनेज के शब्दों में:

"कल्पना कीजिए कि एक बंदर 'डेटा सेंटर' में प्रवेश कर रहा है, सर्वर के ये 'फ़ार्म' जो हमारी ऑनलाइन गतिविधियों के सभी महत्वपूर्ण कार्यों को होस्ट करते हैं। बंदर बेतरतीब ढंग से केबलों को चीरता है और उपकरणों को नष्ट कर देता है। चुनौती सूचना प्रणाली को डिजाइन करने की है जिसके लिए वे जिम्मेदार हैं। यह इन बंदरों के बावजूद काम कर सकता है, जो कोई नहीं जानता कि वे कब आएंगे और क्या नष्ट कर देंगे।"

एक रंगीन सादृश्य। हालांकि, सभी सिमियन क्रूर नहीं हैं: डॉक्टर बंदर सिस्टम के प्रदर्शन की निगरानी करते हैं, उदाहरण के लिए। जब कैओस कोंग एक यात्रा के लिए रुकता है, हालांकि, सभी दांव बंद हो जाते हैं; यह वर्ण संपूर्ण AWS उपलब्धता क्षेत्र को नीचे ले जाएगा।

संबंधित: सुरक्षा कमजोरियों का आकलन कैसे किया जाता है?

कैओस इंजीनियरिंग और वैज्ञानिक विधि

कैओस इंजीनियरिंग प्रयोगों का संचालन करने वालों के लिए प्रणालीगत अंतर्दृष्टि के एक मूल्यवान स्रोत के रूप में कार्य करती है। यह केवल डेवलपर्स ही नहीं हैं जिन्हें यहां परीक्षण के लिए रखा जा रहा है; यह प्रणाली है क्योंकि यह स्वायत्त रूप से भी मौजूद है।

मेज पर बंदरों के बैरल को डंप करने से पहले, अराजकता इंजीनियरिंग के लिए थोड़ी सी जमीनी कार्य की आवश्यकता होती है।

  1. आपको सबसे पहले यह पहचानने की आवश्यकता है कि आप अपने सिस्टम के लिए "स्थिर", स्वस्थ, कार्यात्मक स्थिति क्या मानते हैं। यह "नियंत्रण" होगा जिसके खिलाफ आप किसी भी ठोस परिणाम को मापते हैं।
  2. इस बारे में सोचना शुरू करें कि ऑर्केस्ट्रेटेड विफलता की घुसपैठ से यह राज्य कैसे असंतुलित हो जाएगा। अपने जांच मालवेयर की योजना केवल आपके सिस्टम के नियंत्रित, नियंत्रित क्षेत्र को प्रभावित करने के लिए बनाएं।
  3. "घुसपैठिए" का परिचय दें और सिस्टम को जवाब देने की अनुमति दें।
  4. सिस्टम के बीच किसी भी अंतर को देखें और व्याख्या करें क्योंकि यह अभी मौजूद है और यह पहले कैसे व्यवहार कर रहा था, जबकि होमोस्टैसिस में। अपने प्रभाव के "विस्फोट त्रिज्या" को तब तक बढ़ाएं जब तक कि आप या तो एक भेद्यता का पता नहीं लगा लेते या पूर्ण पैमाने तक नहीं पहुंच जाते, जो भी पहले आए।

विचार यह है कि एक कार्यात्मक प्रणाली को बाधित करना जितना कठिन होता है, उतना ही अधिक विश्वास होता है कि आप में परिवर्तन और बमबारी के प्रति इसकी लचीलापन हो सकती है। यह दृष्टिकोण दिखाता है कि कैसे एक आउटेज की स्थिति में सिस्टम के विभिन्न पहलू एक-दूसरे की विफलताओं की भरपाई करेंगे।

"चूंकि कोई भी घटक 100% अपटाइम की गारंटी नहीं दे सकता (और यहां तक ​​कि सबसे महंगा हार्डवेयर अंततः विफल हो जाता है), हमें एक क्लाउड आर्किटेक्चर डिजाइन करना होगा जहां व्यक्तिगत घटक पूरे सिस्टम की उपलब्धता को प्रभावित किए बिना विफल हो सकते हैं।"

नेटफ्लिक्स ब्लॉग

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

संबंधित: शून्य-दिवस शोषण क्या है?

क्या कैओस इंजीनियरिंग इसके लायक है?

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

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

सिलिकॉन वैली: जहां सपने मरने के लिए जाते हैं

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

कार्यस्थल के अनुभव को गेम-इफाइंग इस डोमेन में सफलता की संभावना को रोमांचक बनाता है; जब अंतिम परिणाम गुणवत्ता में से एक होता है, तो हर कोई स्तर पर पहुंच जाता है। मेरा नेटफ्लिक्स ठीक चलता है, और इसके लिए धन्यवाद देने के लिए हमारे पास केवल पागल लोग हैं।

अब जब आप अराजकता इंजीनियरिंग पर दृढ़ समझ रखते हैं, तो क्यों न आप अपने ज्ञान को किसी अन्य सॉफ्टवेयर विकास पद्धति के साथ विस्तारित करें? Agile एक उत्कृष्ट प्रणाली है जिसे आप एक कार्यबल को एकीकृत करने और स्वच्छ, कुशल कोड तैयार करने के लिए शामिल कर सकते हैं।