TypeScript पर माइक्रोसर्विसेज़: आर्किटेक्चर और अभ्यास

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

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

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

परिचय: माइक्रोसर्विसेज़ में TypeScript क्यों?



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



इस लेख में, हम TypeScript पर माइक्रोसर्विसेज़ बनाने के प्रमुख सिद्धांतों पर चर्चा करेंगे, लोकप्रिय फ्रेमवर्क (NestJS, Fastify), RabbitMQ के माध्यम से इंटर-सर्विस कम्युनिकेशन की सेटअप, और Docker के साथ कंटेनरीकरण पर विचार करेंगे। सभी कोड उदाहरण TypeScript में प्रस्तुत किए जाएंगे ताकि आप उन्हें तुरंत अपने प्रोजेक्ट्स में लागू कर सकें।



1. फ्रेमवर्क का चयन: NestJS बनाम Fastify



TypeScript पर माइक्रोसर्विसेज़ बनाने के लिए कई फ्रेमवर्क उपलब्ध हैं। दो सबसे लोकप्रिय हैं — NestJS और Fastify। आइए उनकी विशेषताओं पर नज़र डालें।



NestJS — "बैकएंड के लिए Angular"

NestJS Angular से प्रेरित एक मॉड्यूलर आर्किटेक्चर प्रदान करता है। यह माइक्रोसर्विसेज़ के लिए तैयार ट्रांसपोर्ट लेयर (TCP, Redis, RabbitMQ, Kafka) के साथ आता है। यह बड़े प्रोजेक्ट्स के लिए एक आदर्श विकल्प है जहां संरचना और डेवलपर टीम का समर्थन महत्वपूर्ण है।



// NestJS पर बेसिक माइक्रोसर्विस का उदाहरणimport { NestFactory } from '@nestjs/core';import { Transport, MicroserviceOptions } from '@nestjs/microservices';import { AppModule } from './app.module';

async function bootstrap() { const app = await NestFactory.createMicroservice<MicroserviceOptions>( AppModule, { transport: Transport.RMQ, options: { urls: ['amqp://localhost:5672'], queue: 'orders_queue', queueOptions: { durable: false }, }, }, ); await app.listen();}bootstrap();


Fastify — प्रदर्शन और सरलता

Fastify Node.js के लिए एक अत्यंत तेज़ HTTP फ्रेमवर्क है। यह माइक्रोसर्विसेज़ के लिए अंतर्निहित समर्थन प्रदान नहीं करता, लेकिन अलग-अलग पैकेजों के माध्यम से RabbitMQ या NATS के साथ आसानी से एकीकृत हो जाता है। यह उन मामलों के लिए उपयुक्त है जहां प्रदर्शन महत्वपूर्ण है और आर्किटेक्चर पहले से निर्धारित है।



// Fastify + TypeScript पर सर्वर का उदाहरणimport fastify from 'fastify';

const server = fastify({ logger: true });

server.get('/health', async (request, reply) => { return { status: 'OK', service: 'payment-service' };});

const start = async () => { try { await server.listen({ port: 3000 }); } catch (err) { server.log.error(err); process.exit(1); }};start();


निष्कर्ष: शुरुआती और टीम प्रोजेक्ट्स के लिए NestJS चुनें। उच्च-लोड सिस्टम के लिए जिनकी आर्किटेक्चर पहले से सोची-समझी है, Fastify चुनें।



2. इंटर-सर्विस कम्युनिकेशन: RabbitMQ और Redis



माइक्रोसर्विस आर्किटेक्चर में, सर्विसेज़ मैसेज ब्रोकर्स या सीधे HTTP अनुरोधों के माध्यम से एक-दूसरे से संवाद करती हैं। आइए दो लोकप्रिय दृष्टिकोणों पर विचार करें।



RabbitMQ — विश्वसनीय मैसेज क्यू

RabbitMQ डिलीवरी गारंटी के साथ एसिंक्रोनस मैसेज ट्रांसमिशन सुनिश्चित करता है। TypeScript में RabbitMQ के साथ काम करने के लिए अक्सर amqplib लाइब्रेरी या NestJS के अंतर्निहित मॉड्यूल का उपयोग किया जाता है।



// RabbitMQ में मैसेज प्रकाशित करना (TypeScript)import * as amqp from 'amqplib';

async function publishOrder(order: any) { const connection = await amqp.connect('amqp://localhost'); const channel = await connection.createChannel(); const queue = 'orders';

await channel.assertQueue(queue, { durable: true }); channel.sendToQueue(queue, Buffer.from(JSON.stringify(order)), { persistent: true, });

console.log(`Order sent: ${order.id}`); setTimeout(() => connection.close(), 500);}

ब्लॉग

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