Service Mesh और TypeScript माइक्रोसर्विसेज़: 2024 का संपूर्ण गाइड

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

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

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

जब माइक्रोसर्विसेज़ बहुत अधिक हो जाती हैं

\n\n

आपने TypeScript में अपनी पहली माइक्रोसर्विस लिखी। वह काम करती है। फिर दूसरी, तीसरी, दसवीं। और अचानक आप पाते हैं कि अधिक समय बिज़नेस लॉजिक लिखने में नहीं, बल्कि माइक्रोसर्विसेज़ को एक-दूसरे से संवाद कराने में लग रहा है। टाइम-आउट, रिट्राइ, लोड बैलेंसिंग, ट्रैफ़िक एन्क्रिप्शन, मीट्रिक्स — यह सब हर सर्विस में अलग-अलग लागू करना पड़ता है।

\n\n

यहाँ पर Service Mesh आता है — एक ऐसी तकनीक जो सभी संचार बुनियादी ढाँचे को कोड से अलग एक अलग लेयर में ले जाती है। और हाँ, यह TypeScript माइक्रोसर्विसेज़ के साथ बढ़िया काम करती है। इस लेख में हम वास्तविक कोड उदाहरणों के साथ व्यवहार में देखेंगे कि यह कैसे काम करता है।

\n\n

सरल शब्दों में Service Mesh क्या है

\n\n

कल्पना करें कि आपकी प्रत्येक TypeScript माइक्रोसर्विस एक बड़े ऑफिस में एक कर्मचारी है। Service Mesh के बिना, प्रत्येक कर्मचारी को स्वयं केबल बिछाने, फोन सेट करने और यह सुनिश्चित करने की ज़िम्मेदारी लेनी होगी कि कोई उनकी जासूसी न करे। Service Mesh के साथ, यह काम एक विशेष IT विभाग करता है, जो प्रत्येक कर्मचारी से एक 'व्यक्तिगत सहायक' (sidecar proxy) जोड़ता है।

\n\n

प्रौद्योगिकी की दुनिया में, इस सहायक को Envoy Proxy कहा जाता है, और इस पूरे बुनियादी ढाँचे का प्रबंधन Istio या Linkerd जैसा ऑर्केस्ट्रेटर करता है। सबसे अच्छी बात यह है कि आपका TypeScript कोड लगभग अछूता रहता है।

\n\n

Service Mesh की प्रमुख क्षमताएँ

\n\n
    \n
  • Traffic Management — स्मार्ट रूटिंग, A/B परीक्षण, कैनरी रिलीज़
  • \n
  • Security — सर्विसेज़ के बीच स्वचालित mTLS एन्क्रिप्शन
  • \n
  • Observability — मीट्रिक्स, लॉग, ट्रेसिंग 'बॉक्स से बाहर'
  • \n
  • Resilience — बुनियादी ढाँचे के स्तर पर रिट्राइ, circuit breaker, टाइम-आउट
  • \n
\n\n

TypeScript माइक्रोसर्विसेज़ को Service Mesh से विशेष लाभ क्यों होता है

\n\n

TypeScript एक मजबूत टाइप सिस्टम वाली भाषा है, लेकिन इसका मुख्य रनटाइम वातावरण (Node.js) हमेशा I/O प्रदर्शन के लिए प्रसिद्ध नहीं है। जब आप TypeScript में माइक्रोसर्विस लिखते हैं, तो प्रत्येक अतिरिक्त HTTP अनुरोध, प्रत्येक मैन्युअल रिट्राइ कार्यान्वयन या TLS हैंडशेक — यह सब Event Loop पर अतिरिक्त भार डालता है।

\n\n

Service Mesh इस भार को अपने ऊपर ले लेता है। आपका TypeScript कोड साफ रहता है: बस अनुरोध प्राप्त करता है और उनका उत्तर देता है, और सारी 'पाइपलाइन' Envoy करता है। यह विशेष रूप से महत्वपूर्ण है जब आपके पास दर्जनों माइक्रोसर्विसेज़ हों — प्रत्येक अपने स्वयं के रीट्राई लॉजिक और टाइम-आउट के साथ।

\n\n

व्यावहारिक उदाहरण: Service Mesh के तहत TypeScript माइक्रोसर्विस

\n\n

मान लीजिए कि हमारे पास TypeScript पर दो माइक्रोसर्विसेज़ हैं: user-service और order-service। Order-service को उपयोगकर्ता के बारे में डेटा प्राप्त करना होगा। Service Mesh के बिना, हम कुछ इस तरह लिखते:

\n\n
// Service Mesh के बिना — मैन्युअल HTTP प्रबंधन\nimport axios from 'axios';\n\nclass UserClient {\n    private baseUrl = 'http://user-service:3000';\n    private retries = 3;\n\n    async getUser(id: string): Promise<User> {\n        for (let i = 0; i < this.retries; i++) {\n            try {\n                const response = await axios.get(`${this.baseUrl}/users/${id}`, {\n                    timeout: 5000,\n                    httpsAgent: new https.Agent({ rejectUnauthorized: true })\n                });\n                return response.data;\n            } catch (error) {\n                if (i === this.retries - 1) throw error;\n                await delay(1000 * Math.pow(2, i));\n            }\n        }\n    }\n}
\n\n

और Service Mesh के साथ यह बन जाता है:

\n\n
// Service Mesh के साथ — बस एक HTTP अनुरोध\nimport axios from 'axios';\n\nclass UserClient {\n    async getUser(id: string): Promise<User> {\n        const response = await axios.get(`http://user-service/users/${id}`);\n        return response.data;\n    }\n}
\n\n

अंतर देखा? सारी जटिलता — रिट्राइ, टाइम-आउट, एन्क्रिप्शन — चली गई है।

ब्लॉग

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