अराजकता इंजीनियरिंग
1) बुनियादी सिद्धांत
मूल परिकल्पना के रूप में स्थिर राज्य। मानक को स्पष्ट रूप से परिभाषित करें (उदाहरण के लिए: p95 <200 ms, त्रुटि दर <0। 3%, महत्वपूर्ण प्रवाह सफलता> 99। 5%).
पृथक चर। प्रभाव और सुधार को लिंक करने के लिए एक समय में जितना संभव हो उतना एक कारक बदलें।
डिग्री। हम एक सुरक्षित वातावरण में छोटे आयामों के साथ शुरू करते हैं → कवरेज और तीव्रता का विस्तार करते हैं।
रेलिंग। SLO/अलर्ट/त्रुटि बजट पर स्पष्ट रोक की स्थिति।
दोहराव। प्रयोग निर्धारित रूप से पुन: उत्पादन योग्य होना चाहिए (स्क्रिप्ट/मैनिफेस्ट/आईएसी)।
नैतिकता और सुरक्षा। जोखिम भरे प्रयोगों में कोई वास्तविक व्यक्तिगत डेटा और वित्तीय ले
2) "स्थिर अवस्था" क्या है
स्थिर राज्य अवलोकन योग्य मैट्रिक्स का एक सेट है जो उपयोगकर्ता मूल्य और व्यावसायिक आक्रमणकारियों का वर्णन करता
p50/p95/p99 प्रमुख समापन बिंदुओं की विलंबता।
सफलता दर और महत्वपूर्ण पथ रूपांतरण।
त्रुटि दर, समय समाप्ति, "शेड" अनुरोधों का प्रतिशत (संतृप्ति पर काट दिया गया).
स्व-उपचार दर (MTTR), पीछे हटने का प्रतिरोध (तूफान के बिना)।
डोमेन अपरिवर्तनीय: "शेष राशि में विपक्ष" की कमी, एक बार भुगतान निष्पादित करने, रिपोर्टिंग दिनों की स्थिरता, आदि।
3) इंजेक्शन कैटलॉग (हम क्या तोड़ ते हैं)
नेटवर्क: लेटेंसी, जिटर, लॉस/डुप्लिकेट्स, बैंडविड्थ लिमिटेशन, टीएलएस ब्रेक, डीएनएस फ्लैपिंग।
गणना: सीपीयू ओवरलोड, मेमोरी/जीसी दबाव, डिस्क्रिप्टर थकावट, घड़ी तिरछा।
भंडारण: उच्च p95 I/O, ENOSPC, नेता/प्रतिकृति विफलता, विभाजन-मस्तिष्क, सुस्त fsync।
निर्भरता: 5xx/429, "धीमी सफलता", बाहरी एपीआई का क्षरण, दर-सीमा।
डेटा: डुप्लिकेट/संदेशों की याद, आउट-ऑफ-ऑर्डर, गंदे रिकॉर्ड, संस्करण संघर्ष।
ऑपरेशंस: असफल रिलीज/कॉन्फिग, बग के साथ फ़ीचर फ्लैग, एक्सपायर्ड प्रमाणपत्र, कुंजी घुमाव.
लोग और प्रक्रियाएं: जिम्मेदार लोगों की अनुपलब्धता, मैनुअल अपडेट में देरी, गलत रनबुक।
4) प्रयोग डिजाइन (टेम्पलेट)
1. परिकल्पना: "मुख्य एपीआई की मुद्रा सेवा p99 पर + 300 एमएस <450 एमएस, एक ब्रेकर खुलता है, एक बासी प्रतिक्रिया ≤ 15 मिनट पहले दी जाती है।"
2. इंजेक्शन: असफलता प्रोफ़ाइल (प्रकार/आयाम/अवधि) और लक्ष्य समोच्च।
3. मेट्रिक्स/लॉग टैग: मार्किंग 'चोस। experiment_id', 'चरण = इंजेक्ट' रिकवर '।
4. रेल: 'error _ rate> 2%' या p99> SLA × 2 पर 1 मिनट से अधिक के लिए गर्भपात करें।
5. परिणाम/आउटपुट: टिप्पणियों, कीड़े, सुधार, कार्य योजना और फिर से चलाने की सूची।
5) अवलोकन: क्या अनिवार्य है
ट्रेसिंग: निर्भरता के माध्यम से अनुरोध पथ; गिरावट के साथ खंड चिह्नित हैं।
संसाधन मैट्रिक्स: CPU, ढेर/GC, FD, डिस्क IOPS/lat, नेटवर्क बैंडविड्थ, कतार गहराई।
व्यावसायिक मैट्रिक्स: परिचालन का रूपांतरण/सफलता, मुआवजा लेनदेन का हिस्सा।
घटना लॉग: डेटाबेस लीडर को स्विच करते हुए ब्रेकर खोलना/बंद करना, रिट्रे और उनका बजट।
प्रयोग पैनल: रेलिंग थ्रेसहोल्ड और गर्भपात "लाल बटन" के साथ लाइव-डैशबोर्ड।
6) रेलिंग और सुरक्षा
तकनीकी: त्रुटि दर/विलंबता की ऊपरी सीमा, सफल संचालन के हिस्से में गिरावट, डीएलक्यू वृद्धि।
संगठनात्मक: समय की खिड़की, ऑन-कॉल शामिल, "एक क्षेत्र - एक प्रयोग" का सिद्धांत।
डेटा/अनुपालन: सिंथेटिक्स केवल या अवैयक्तिक किट; नियामक उल्लंघन के लिए अग्रणी परीक्षणों पर प्रतिबंध लगाना।
रोलबैक: ध्वज/नरम नाली यातायात की तैयार रोलबैक/अक्षम प्रक्रिया।
7) लचीलापन पैटर्न जो दिखाना चाहिए
टाइमआउट बजट और जिटर रिट्रीट (तूफान-मुक्त)।
आधे-खुले और घातीय वसूली के साथ सर्किट ब्रेकर।
Bulkheads: आलोचना पूल का अलगाव (भुगतान बनाम विश्लेषक)।
बैकप्रेशर और दर-सीमा: पूर्वानुमानित कम प्राथमिकता कटऑफ।
कोलसिंग के साथ कैश, "वार्म-अप तूफान" से सुरक्षा।
प्रतिपूरक कार्यों के साथ साइड इफेक्ट्स और सागा की पहचान।
डेटा रिकवरी के लिए कोरम, फीलओवर और एंटी-एन्ट्रापी।
8) नमूना परिदृश्य (रेखाचित्र)
8. 1 धीमी निर्भरता (YAML)
yaml experiment: slow-downstream target: svc:api inject:
dependency:
name: currency mode: add_latency p95_ms: 300 duration: 10m guardrails:
error_rate: "< 1. 5%"
p99_latency: "< 450ms"
expectations:
breaker_open: true stale_data_served: "<= 15m"
8. 2 डीबी नेता का नुकसान
इंजेक्शन: नेता ठहराव/फिर से चुनाव के लिए मजबूर।
प्रतीक्षा: अस्थायी लेखन अवरोधक, कोरम पढ़ ना, WAL/आउटबॉक्स सुरक्षित, स्वतः-पुनर्स्थापित प्रतिकृति, कोई डबल राइट नहीं।
8. लॉग डिस्क पर 3 ENOSPC
इंजेक्शन: डिस्क को 95-100% तक भरें।
प्रतीक्षा: लॉग का आपातकालीन रोटेशन, महत्वपूर्ण लॉग की सुरक्षा, गैर-महत्वपूर्ण विशेषताओं को अक्षम करना, अलर्ट और ऑटो-रिमेडिएशन।
8. 4 फट यातायात + छायांकन
इंजेक्शन: एक गर्म समापन बिंदु पर 5 मिनट के लिए × 3 आरपीएस।
प्रतीक्षा: कम प्राथमिकता, स्थिर p95 "कोर", कोई रिट्रे कैस्केड नहीं।
9) सीआई/सीडी में स्वचालन
प्रत्येक रिलीज के लिए मंच में अराजकता-धुआं (सुरक्षित आयामों पर छोटे इंजेक्शन)।
रात प्रयोगों की सूची (मैट्रिक्स सेवाओं × प्रकार की विफलताओं) के अनुसार चलती है।
गेट्स: रिलीज़ अवरुद्ध है यदि "दृढ़ता सीमा से नीचे है" (उदाहरण के लिए, सफल फॉलबैक का प्रतिशत <95% है)।
कलाकृतियाँ: रिपोर्ट, ट्रेल्स, सीपीयू/ढेर फ्लेमेश्राफ, मेट्रिक्स और कॉन्फ्रेंस के स्नैपशॉट।
10) गेम डेज़ (गेम डेज़)
"लाइव" परिदृश्यों के साथ नियमित टीम अभ्यास:- भूमिकाएँ: प्रयोग नेता, मैट्रिक्स पर्यवेक्षक, रोलबैक ऑपरेटर, व्यावसायिक प्रतिनिधि।
- परिदृश्य: कैश क्षरण, आंशिक AZ/क्षेत्र-feilover विफलता, "खराब रिलीज", एक बाहरी प्रदाता की अनुपलब्धता।
- परिणाम: रनबुक में अंतराल, अलर्ट में सुधार, एसएलओ में समायोजन और रेट्रे बजट पाया गया।
11) डेटा, घटनाओं और एमएल के लिए अराजकता
डेटा धाराएँ: डुप्लिकेट, अंतराल, आउट-ऑफ-ऑर्डर, देरी के लिए परीक्षण; अज्ञात उपभोक्ताओं और डीएलक्यू रणनीतियों का सत्यापन।
रिपॉजिटरी: इंडेक्स क्षरण, गर्म-विभाजन, लॉक संघर्ष, अंतराल के तहत प्रतिकृति।
एमएल: फीचर देरी, बेसलाइन मॉडल में रोलबैक, इनपुट डेटा गुणवत्ता (बहाव) का क्षरण - सिस्टम को "धीरे से कुंद" करना चाहिए और गिरना नहीं चाहिए।
12) एंटी-पैटर्न
अवलोकन के बिना अराजकता: आप "अंधे" हैं, निष्कर्ष सट्टा हैं।
मंच और गार्ड रेल के बिना तुरंत अनुमान में इंजेक्शन।
एक ही बार में हर चीज पर "एक बड़ा प्रयोग" - यह स्पष्ट नहीं है कि वास्तव में क्या काम किया।
सुधार के बाद परिकल्पना और पीछे हटने के बिना बेतरतीब अराजकता कार्रवाई।
केवल बुनियादी ढांचे पर ध्यान केंद्रित करना - व्यापार अपरिवर्तनों को भुला दि
लोगों/प्रक्रियाओं की अनदेखी: अलर्ट, ऑन-कॉल, रनबुक - सिस्टम का हिस्सा।
13) अभ्यास की परिपक्वता (मॉडल)
1. तदर्थ: स्थानीय रूप से एकल इंजेक्शन।
2. स्टेज अराजकता: परिदृश्यों की सूची, बार-बार रन, डैशबोर्ड।
3. रिलीज अराजकता: प्रत्येक रिलीज में धूम्रपान अराजकता, द्वार, रिपो
4. प्रतिबंधों के साथ खाद्य अराजकता: कम यातायात, सख्त रेलिंग, तैयार रोलबैक।
5. निरंतर स्थिरता: ऑटो-प्रयोग, एसएलओ-प्रबंधन, कार्य प्रवाह के रूप में सुधार।
14) वास्तुशिल्प प्रथाओं के साथ एकीकरण
प्रतिरोध परीक्षण: अराजकता प्रयोग गलती इंजेक्शन और गिरावट परिदृश्यों के पूरक हैं।
लोड परीक्षण: संयुक्त भार + असफल प्रयोगों से झरने और पीछे हटने का तूफान पता चलता है।
कोड/आरबीएसी/एबीएसी के रूप में नीति: रेल, रोलबैक कदम और सीमाएं नीतियों के रूप में डिजाइन की गई हैं।
सहमति/गोपनीयता प्रबंधन: डेटा प्रोसेसिंग मोड का उल्लंघन करने वाले प्रयोगों की अनुमति न दें।
भू-वास्तुकला: क्षेत्रों की विफलता और न्यायालयों के लिए डेटा बाध्यकारी की अराजकता-जाँच।
15) मिनी व्यंजनों (स्यूडोकोड)
ब्रेकर + गिरावट
if breaker. open():
return serve_stale(cache. max_age=15m)
try:
res = call(dep, timeout=250ms)
return res except Timeout:
breaker. trip()
return serve_stale()
लिमिटर + छायांकन
if cpu. load() > 0. 85 or queue. depth() > HIGH:
if req. priority < HIGH: return 503_SHED limiter. acquire()
आइडेम्पोटेंट साइड इफेक्ट
key = "payout:"+external_id if kv. exists(key): return kv. get(key)
res = side_effect()
kv. put(key, res, ttl=30d)
return res
16) आर्किटेक्ट चेकलिस्ट
1. परिभाषित स्थिर अवस्था और रेलिंग?
2. क्या कोई स्क्रिप्ट निर्देशिका (नेटवर्क/सीपीयू/भंडारण/निर्भरता/डेटा/संचालन) है?
3. क्या अवलोकन संसाधनों, विलंबता पूंछ, व्यापार अपरिवर्तनों को कवर करता है?
4. टाइमआउट/रिट्रीट/ब्रेकर/लिमिटर/बल्कहेड सक्षम और पैरामीटराइजेबल?
5. तैयार रनबुक और "लाल बटन"?
6. क्या मंच और रात के प्रयोगों में अराजकता-धुआं है?
7. क्या खेल के दिनों के लिए "सुरक्षित" खिड़कियां और भूमिकाएँ हैं?
8. प्रयोग प्रजनन योग्य (IaC/स्क्रिप्ट) हैं, परिणाम वर्गीकृत हैं?
9. सुधार कार्यों द्वारा तय किए जाते हैं, रिटेस्ट किया जाता है?
10. डेटा और एमएल पाइपलाइनों को कवर किया, न केवल एचटीटीपी?
निष्कर्ष
अराजकता इंजीनियरिंग "अप्रत्याशित घटनाओं" को अनुमानित परिदृश्यों में बदल देती है। प्रतिरोध परिकल्पना, नियंत्रित इंजेक्शन, कठोर रेलिंग, समृद्ध अवलोकन और रीटेस्ट अनुशासन ऐसे उपकरण हैं जो रिलीज के जोखिम को कम करते हैं और मंच पर विश्वास बढ़ाते हैं। नतीजतन, टीम प्रणाली की सीमाओं को समझती है, सुरुचिपूर्ण ढंग से नीचा दिखाने में सक्षम है और विफलताओं की स्थिति में भी उपयोगकर्ता को सेवा वापस कर देती है।