जावास्क्रिप्ट के लिए कैओस इंजीनियरिंग: एप्लिकेशन को समझदारी से कैसे तोड़ें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

आपका एप्लिकेशन पूरी तरह से काम करता है, जब तक… सब कुछ टूट न जाए

\n\n

क्या आपने कभी देखा है कि production में सब कुछ तब तक पूरी तरह से काम करता है जब तक कि कुछ असामान्य न हो जाए? डेटाबेस एक सेकंड के लिए हैंग हो जाता है — और पूरा फ्रंटएंड एक सफेद स्क्रीन में बदल जाता है। तीसरे पक्ष की सेवा का API 500 त्रुटि के साथ जवाब देता है — और उपयोगकर्ता देखते हैं "कुछ गलत हो गया"। परिचित लगता है?

\n\n

शास्त्रीय परीक्षण में, हम जाँचते हैं: "सब कुछ काम कर रहा है? ठीक है, रिलीज़ करो।" लेकिन वितरित सिस्टम और माइक्रोसर्विसेज की दुनिया (और जावास्क्रिप्ट आज बैकएंड और फ्रंटएंड दोनों पर राज करता है) क्रूर है। इसे इंजीनियरिंग सनक की आवश्यकता है। यहीं पर कैओस इंजीनियरिंग मंच पर आती है — एक अनुशासन जो हमें सिस्टम को जानबूझकर तोड़ना सिखाता है ताकि इसे मजबूत बनाया जा सके।

\n\n

आइए समझते हैं कि JS एप्लिकेशन (चाहे वह Node.js बैकएंड हो, React फ्रंटएंड हो या Next.js साइट) में कैओस इंजीनियरिंग कैसे लागू करें, और कोड लिखें जिसे आप आज ही चला सकते हैं।

\n\n

सरल शब्दों में कैओस इंजीनियरिंग क्या है?

\n\n

कैओस इंजीनियरिंग एक वितरित सिस्टम पर प्रयोग करने की प्रथा है ताकि वास्तविक उपयोगकर्ताओं के ऐसा करने से पहले इसकी कमजोरियों का पता लगाया जा सके। उदाहरण के लिए, Netflix ने Chaos Monkey बनाया — एक सेवा जो काम के घंटों के दौरान बेतरतीब ढंग से production सर्वर को मार देती है। पागलपन लगता है? हाँ। काम करता है? बिल्कुल।

\n\n

मुख्य विचार: विफलताओं से डरने के बजाय, हम उन्हें नियंत्रित वातावरण में उकसाते हैं। यह अनुमति देता है:

\n
    \n
  • त्रुटि प्रबंधन तर्क में छिपे बग ढूँढना
  • \n
  • यह जाँचना कि क्या एप्लिकेशन क्रैश के बाद सही ढंग से पुनर्प्राप्त होता है
  • \n
  • यह सुनिश्चित करना कि मॉनिटरिंग और अलर्टिंग काम कर रहे हैं
  • \n
  • टीम में resilience (दोष-सहनशीलता) की संस्कृति को बढ़ाना
  • \n
\n\n

जावास्क्रिप्ट डेवलपर के लिए यह विशेष रूप से प्रासंगिक है: फ्रंटएंड एप्लिकेशन सैकड़ों API पर निर्भर करते हैं, और Node.js सेवाएँ अक्सर क्लाउड में काम करती हैं, जहाँ वर्चुअल मशीनें किसी भी समय मर सकती हैं।

\n\n

जावास्क्रिप्ट में कैओस इंजीनियरिंग के लिए उपकरण

\n\n

production में तुरंत Gremlin चलाने की आवश्यकता नहीं है। छोटे से शुरू करें — स्थानीय प्रयोगों से। यहाँ वे चीज़ें हैं जो हमारे काम आएँगी:

\n\n
    \n
  • Gremlin — Node.js के लिए SDK के साथ एक शक्तिशाली प्लेटफ़ॉर्म। विलंब, CPU विफलताओं, प्रक्रिया को मारने का अनुकरण करने की अनुमति देता है।
  • \n
  • Netflix से Chaos Monkey (Spinnaker का हिस्सा) — उन लोगों के लिए जो पहले से माइक्रोसर्विस आर्किटेक्चर में रहते हैं।
  • \n
  • node-chaos — Node.js एप्लिकेशन में अराजकता लाने के लिए एक हल्की लाइब्रेरी।
  • \n
  • अपनी स्क्रिप्ट — कभी-कभी भारी उपकरण तैनात करने की तुलना में 20 लाइन का कोड लिखना आसान होता है।
  • \n
\n\n

हम तीसरा रास्ता अपनाएँगे और शुद्ध जावास्क्रिप्ट में अपना छोटा "कैओस इंजीनियर" लिखेंगे।

\n\n

अभ्यास: Node.js के लिए कैओस एक्सपेरिमेंट लिखना

\n\n

चरण 1. परिदृश्य: "API में अचानक विलंब"

\n\n

कल्पना करें कि हमारे पास एक Express सर्वर है जो डेटाबेस से जुड़ता है। अचानक, DB 5 सेकंड की देरी से जवाब देना शुरू कर देता है। क्लाइंट कोड कैसे व्यवहार करेगा?

\n\n

Express के लिए एक middleware बनाएँ जो 30% संभावना के साथ एक यादृच्छिक विलंब (1 से 10 सेकंड) जोड़ेगा:

\n\n
// chaos-middleware.js\nconst chaosMiddleware = (req, res, next) => {\n  // विफलता की संभावना: 30%\n  const shouldFail = Math.random() < 0.3;\n\n  if (shouldFail) {\n    // 1000 से 10000 ms तक यादृच्छिक विलंब\n    const delay = Math.floor(Math.random() * 9000) + 1000;\n    console.warn(`[CHAOS] Injecting latency: ${delay}ms for ${req.path}`);\n\n    setTimeout(() => {\n      // 10% संभावना के साथ — अनुरोध को 500 त्रुटि से मारें\n      if (Math.random() < 0.1) {\n        return res.status(500).json({ error: 'Chaos induced failure' });\n      }\n      next();\n    }, delay);\n  } else {\n    next();\n  }\n};\n\nmodule.exports = chaosMiddleware;
\n\n

middleware को एप्लिकेशन से कनेक्ट करें:

\n\n
// app.js\nconst express = require('expres                

ब्लॉग

पुस्तक अनुशंसाएँ