Node.js माइक्रोसर्विस विकसित करना
डोमेन-आधारित डिज़ाइन पर ध्यान देते हुए स्वतंत्र Node.js सर्विस बनाएँ, जो एक-दूसरे से संचार करें।
Node.js माइक्रोसर्विस विकसित करना, CoddyKit पर Node.js बैकएंड विकास बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Node.js बैकएंड विकास बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Node.js माइक्रोसर्विस परिचय
Node.js माइक्रोसर्विस बनाने के पाठ में आपका स्वागत है! हम जानेंगे कि साथ मिलकर काम करने वाली छोटी, स्वतंत्र सेवाएँ कैसे बनाई जाती हैं।
माइक्रोसर्विस एक आर्किटेक्चरल शैली है, जिसमें ऐप्लिकेशन को छोटी, स्वायत्त सेवाओं के संग्रह के रूप में बनाया जाता है। हर सेवा अपनी प्रक्रिया में चलती है और हल्के साधनों, अक्सर HTTP API, के माध्यम से संचार करती है।

माइक्रोसर्विस के मूल सिद्धांत
माइक्रोसर्विस इन प्रमुख सिद्धांतों का पालन करती हैं:
- स्वतंत्र परिनियोजन: हर सेवा को स्वतंत्र रूप से परिनियोजित किया जा सकता है।
- ढीला युग्मन: सेवाएँ एक-दूसरे पर दृढ़ता से निर्भर नहीं होती हैं।
- एकल ज़िम्मेदारी: हर सेवा किसी विशिष्ट व्यावसायिक क्षमता (एक 'डोमेन') पर ध्यान केंद्रित करती है।
- तकनीकी विविधता: अलग-अलग सेवाएँ अलग-अलग तकनीकों का उपयोग कर सकती हैं (हालाँकि यहाँ हम Node.js का उपयोग करेंगे)।
डोमेन-आधारित डिज़ाइन की मूल बातें
Domain-Driven Design (DDD) माइक्रोसर्विस के लिए अत्यंत महत्वपूर्ण है। इसका अर्थ है अपनी सेवाओं को व्यावसायिक डोमेन के आधार पर संरचित करना (जैसे, 'उपयोगकर्ता', 'उत्पाद', 'ऑर्डर')।
- सीमाबद्ध संदर्भ: हर माइक्रोसर्विस अपनी स्पष्ट सीमा निर्धारित करती है और अपने विशिष्ट डोमेन डेटा व तर्क की स्वामिनी होती है।
- सर्वव्यापी भाषा: उस सेवा के भीतर डोमेन अवधारणाओं के लिए एक साझा भाषा का उपयोग करना।
Node.js सेवा की संरचना
एक सामान्य Node.js माइक्रोसर्विस परियोजना की संरचना कुछ इस तरह हो सकती है:
my-service/-
src/ -
controllers/(अनुरोधों का तर्क) -
models/(डेटा स्कीमा) -
routes/(API एंडपॉइंट) -
app.js(मुख्य Express सेटअप) -
package.json -
.env(पर्यावरण चर)
सेवाओं के बीच संचार
अनुरोध पूरे करने के लिए माइक्रोसर्विस को आपस में संचार करना पड़ता है। सामान्य विधियों में शामिल हैं:
- HTTP/REST: सेवाओं के बीच समकालिक कॉल। एक सेवा दूसरी सेवा को HTTP अनुरोध भेजती है।
- संदेश कतार: संदेश ब्रोकर (जैसे RabbitMQ, Kafka) के माध्यम से अतुल्यकालिक संचार। सेवाएँ घटनाएँ प्रकाशित करती हैं और अन्य घटनाओं की सदस्यता लेती हैं।
इस पाठ में हम इसकी सरलता के कारण HTTP संचार पर ध्यान केंद्रित करेंगे।
उपयोगकर्ता माइक्रोसर्विस बनाना
आइए, Express का उपयोग करके एक सरल 'उपयोगकर्ता' माइक्रोसर्विस बनाएँ। यह सेवा उपयोगकर्ता डेटा का प्रबंधन करेगी और 3001 पोर्ट पर चलेगी।
इस कोड को चलाकर देखें:
const express = require('express');
const app = express();
const PORT = 3001;
app.use(express.json());
const users = [
{ id: 'u1', name: 'Alice', email: 'alice@example.com' },
{ id: 'u2', name: 'Bob', email: 'bob@example.com' }
];
app.get('/users/:id', (req, res) => {
const user = users.find(u => u.id === req.params.id);
if (user) {
res.json(user);
} else {
res.status(404).send('User not found');
}
});
app.get('/users', (req, res) => {
res.json(users);
});
app.listen(PORT, () => {
console.log(`Users Service running on port ${PORT}`);
});उत्पाद माइक्रोसर्विस बनाना
अब आइए, एक अलग 'उत्पाद' माइक्रोसर्विस बनाएँ। यह सेवा उत्पाद डेटा का प्रबंधन करेगी और 3002 पोर्ट पर चलेगी।
यह पूरी तरह स्वतंत्र ऐप्लिकेशन है:
const express = require('express');
const app = express();
const PORT = 3002;
app.use(express.json());
const products = [
{ id: 'p1', name: 'Laptop', price: 1200, ownerId: 'u1' },
{ id: 'p2', name: 'Mouse', price: 25, ownerId: 'u2' }
];
app.get('/products', (req, res) => {
res.json(products);
});
app.listen(PORT, () => {
console.log(`Products Service running on port ${PORT}`);
});सेवा संचार का अनुकरण
'उत्पाद' सेवा किसी उत्पाद के स्वामी का विवरण कैसे प्राप्त करेगी? यह 'उपयोगकर्ता' सेवा को HTTP कॉल करेगी!
इस उदाहरण में, संचार का प्रवाह दिखाने के लिए हम एक ही स्क्रिप्ट में उपयोगकर्ताओं के लिए एक छोटा सर्वर और उपयोगकर्ता डेटा प्राप्त करने वाले क्लाइंट—दोनों का अनुकरण करते हैं। यह क्लाइंट वाला भाग वही काम करता है जो आपकी उत्पाद सेवा करेगी।
const http = require('http');
// --- SIMULATED USER SERVICE (SERVER PART) ---
const users = {
'u1': { id: 'u1', name: 'Alice', email: 'alice@example.com' },
'u2': { id: 'u2', name: 'Bob', email: 'bob@example.com' }
};
const simulatedUserServer = http.createServer((req, res) => {
if (req.url.startsWith('/users/') && req.method === 'GET') {
const userId = req.url.split('/')[2];
if (users[userId]) {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(users[userId]));
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('User not found');
}
} else {
res.writeHead(404, { 'Content-Type': 'text/plain' });
res.end('Not Found');
}
});
const SIMULATED_PORT = 3001;
simulatedUserServer.listen(SIMULATED_PORT, () => {
console.log(`Simulated User Service running on port ${SIMULATED_PORT}`);
});
// --- CLIENT PART (e.g., a Product Service trying to get user data) ---
async function fetchUserFromSimulatedService(userId) {
return new Promise((resolve, reject) => {
const options = {
hostname: 'localhost',
port: SIMULATED_PORT,
path: `/users/${userId}`,
method: 'GET'
};
const req = http.request(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => {
if (res.statusCode === 200) {
resolve(JSON.parse(data));
} else {
reject(new Error(`Failed to fetch user: ${res.statusCode}`));
}
});
});
req.on('error', (e) => reject(e));
req.end();
});
}
console.log('\n--- Product Service fetching user data simulation ---');
fetchUserFromSimulatedService('u1')
.then(user => console.log('Fetched User:', user))
.catch(error => console.error('Error fetching user:', error.message))
.finally(() => {
// Important: close the simulated server after demonstration
simulatedUserServer.close(() => console.log('Simulated User Service stopped.'));
});
fetchUserFromSimulatedService('u3') // Try fetching a non-existent user
.then(user => console.log('Fetched User:', user))
.catch(error => console.error('Error fetching user:', error.message));माइक्रोसर्विस के लाभ-हानि
शक्तिशाली होने के बावजूद, माइक्रोसर्विस के साथ कुछ लाभ-हानि भी जुड़े हैं:
- बढ़ी हुई जटिलता: अधिक सेवाओं का अर्थ है अधिक प्रबंधन, परिनियोजन और निगरानी।
- डेटा की संगतता: कई डेटाबेस में डेटा की संगतता बनाए रखना चुनौतीपूर्ण हो सकता है।
- वितरित लेन-देन: कई सेवाओं में फैले संचालन के लिए सावधानीपूर्वक डिज़ाइन आवश्यक है।
- परिचालन का अतिरिक्त बोझ: इसके लिए मज़बूत CI/CD और निगरानी उपकरणों की आवश्यकता होती है।
त्वरित जाँच: माइक्रोसर्विस के लाभ
आपने अब तक जो सीखा है, उसके आधार पर माइक्रोसर्विस आर्किटेक्चर का उपयोग करने का प्रमुख लाभ निम्नलिखित में से कौन-सा है?
पुनरावृत्ति और अगले चरण
हमने Node.js माइक्रोसर्विस विकसित करने की मूल बातें, उनके मूल सिद्धांत और उनके संचार का तरीका देखा। हमने यह भी देखा कि छोटी, डोमेन-केंद्रित सेवाओं की संरचना कैसे बनाई जाती है और सेवाओं के बीच संचार का अनुकरण कैसे किया जाता है।
हालाँकि माइक्रोसर्विस शक्तिशाली होती हैं, लेकिन जटिलता से जुड़े लाभ-हानि याद रखें। अगले पाठ में आप API Gateway का उपयोग करके इन सेवाओं को भेजे गए क्लाइंट अनुरोधों का प्रबंधन करना सीखेंगे!
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 22
- पाठ
- 92
अक्सर पूछे जाने वाले प्रश्न
क्या “Node.js माइक्रोसर्विस विकसित करना” पाठ निःशुल्क है?
हाँ—“Node.js माइक्रोसर्विस विकसित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Node.js बैकएंड विकास बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Node.js माइक्रोसर्विस विकसित करना” में मैं क्या सीखूँगा?
डोमेन-आधारित डिज़ाइन पर ध्यान देते हुए स्वतंत्र Node.js सर्विस बनाएँ, जो एक-दूसरे से संचार करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Node.js बैकएंड विकास बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Node.js बैकएंड विकास बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Node.js बैकएंड विकास बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Node.js माइक्रोसर्विस विकसित करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Node.js बैकएंड विकास बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Node.js बैकएंड विकास बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- माइक्रोसर्विस आर्किटेक्चर का परिचय
- Node.js माइक्रोसर्विस विकसित करना
- एपीआई गेटवे लागू करना
- मैसेज क्यू से सेवाओं के बीच संचार