JavaScript में माइक्रोसर्विसेज: शुरुआत कैसे करें ताकि हार न मानें
\n\nक्या आपने कभी सोचा है कि Netflix, Uber या Amazon जैसी बड़ी कंपनियों ने माइक्रोसर्विसेज क्यों अपनाई? यह फैशन नहीं, बल्कि जरूरत है। जब आपका मोनोलिथ 50 GB का हो और टीम में 100 डेवलपर हों, तो कोड में हर बदलाव रूसी रूलेट जैसा लगता है।
\n\nलेकिन अच्छी खबर यह है: JavaScript में माइक्रोसर्विसेज कोई rocket science नहीं है। आज मैं आपको दिखाऊंगा कि कैसे 20 मिनट में एक काम करने वाली आर्किटेक्चर बनाएं, जिसे इंटरव्यू में या अपने pet-project में दिखाने में शर्म न आए।
\n\nसरल शब्दों में माइक्रोसर्विस क्या है?
\n\nएक स्विस नाइफ की कल्पना करें। मोनोलिथिक आर्किटेक्चर में यह एक बड़ा चाकू है जिसमें सौ ब्लेड हैं। एक ब्लेड टूटा? पूरा चाकू फेंक दो। माइक्रोसर्विसेज अलग-अलग चाकूओं का सेट है, हर एक अपने काम के लिए। एक टूटा? सिर्फ उसे बदलो।
\n\nमाइक्रोसर्विस एक छोटा, स्वायत्त एप्लिकेशन है जो एक काम करता है, लेकिन उसे बहुत अच्छे से करता है।\n\n
JavaScript माइक्रोसर्विसेज के लिए क्यों परफेक्ट है?
\n\n- \n
- Event Loop: बिल्ट-इन एसिंक्रोनस सपोर्ट — I/O-bound कार्यों के लिए आदर्श \n
- NPM: 2+ मिलियन पैकेज, हर चीज के लिए तैयार इकोसिस्टम \n
- Node.js: हल्के प्रोसेस, तेज शुरुआत (50-100ms) \n
- TypeScript: टाइपिंग जो डिस्ट्रीब्यूटेड सिस्टम में बचाती है \n
- एक ही भाषा: फ्रंटएंड और बैकएंड दोनों JS में — कम कॉन्टेक्स्ट स्विचिंग \n
शुरुआत कहां से करें: प्रैक्टिकल roadmap
\n\nस्टेप 1. जरूरी चीजें: Express + Docker
\n\nशुरुआत में Kubernetes को भूल जाइए। आपको Node.js माइक्रोसर्विस चाहिए जो एक कमांड से चले। सबसे सरल से शुरू करते हैं — एक ग्रीटिंग सर्विस।
\n\nपहला माइक्रोसर्विस बनाएं
\n\n// service-greeting/index.js\nconst express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/api/hello', (req, res) => {\n res.json({ \n message: 'माइक्रोसर्विस से नमस्ते!',\n timestamp: new Date().toISOString(),\n service: 'greeting'\n });\n});\n\napp.listen(PORT, () => {\n console.log(`Greeting service port ${PORT} पर चल रहा है`);\n});\n\n\nअब इसे Docker में लपेटें:
\n\n# Dockerfile\nFROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nEXPOSE 3000\nCMD ["node", "index.js"]\n\n\nस्टेप 2. Docker Compose: गरीबों का ऑर्केस्ट्रेशन
\n\nKubernetes के पीछे मत भागिए। शुरुआत के लिए Docker Compose आपका सबसे अच्छा दोस्त है। दो सर्विसेज बनाएं और उन्हें जोड़ें।
\n\n# docker-compose.yml\nversion: '3.8'\nservices:\n greeting:\n build: ./service-greeting\n ports:\n - "3001:3000"\n environment:\n - PORT=3000\n\n users:\n build: ./service-users\n ports:\n - "3002:3000"\n environment:\n - PORT=3000\n - GREETING_SERVICE=http://greeting:3000\n\n\nस्टेप 3. सर्विसेज को जोड़ना: HTTP vs Message Broker
\n\nJavaScript माइक्रोसर्विस आर्किटेक्चर में बातचीत के दो तरीके हैं:
\n\n- \n
- सिंक्रोनस (HTTP): सरल, समझने में आसान, लेकिन डिपेंडेंसी बनाता है \n
- एसिंक्रोनस (RabbitMQ/Kafka): थोड़ा जटिल, लेकिन ज्यादा भरोसेमंद \n
सर्विसेज के बीच HTTP कम्युनिकेशन का उदाहरण
\n\n// service-users/index.js\nconst express = require('express');\nconst axios = require('axios');\nconst app = express();\n\napp.get('/api/user/:id', async (req, res) => {\n try {\n // दूसरे माइक्रोसर्विस को कॉल करें\n const greeting = await axios.get(\n `${process.env.GREETING_SERVICE}/api/hello`\n );\n \n res.json({\n userId: req.params.id,\n greeting: greeting.data.message\n });\n } catch (error) {\n res.status(500).json({ error: 'सर्विस उपलब्ध नहीं है' });\n }\n});\n\napp.listen(3000);\n