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

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

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

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

परिचय: क्यों TypeScript माइक्रोसर्विसेज़ के लिए आदर्श विकल्प है

आधुनिक बैकएंड-सिस्टम विकास तेजी से मोनोलिथ से हटकर माइक्रोसर्विस आर्किटेक्चर की ओर बढ़ रहा है। TypeScript, JavaScript के ऊपर एक सख्ती से टाइप की गई परत होने के नाते, लचीलेपन और विश्वसनीयता का एक अनूठा संयोजन प्रदान करता है। कंपाइलेशन चरण में स्थैतिक टाइपिंग सेवाओं के बीच एकीकरण त्रुटियों को प्रोडक्शन में जाने से पहले ही पकड़ने की अनुमति देती है, और समृद्ध पारिस्थितिकी तंत्र (NestJS, Express, Fastify) वितरित सिस्टम बनाने के लिए तैयार उपकरण प्रदान करता है।

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



1. TypeScript पर माइक्रोसर्विसेज़ आर्किटेक्चर: मुख्य सिद्धांत

1.1 डोमेन डीकंपोज़िशन

पहला कदम व्यावसायिक तर्क को स्वतंत्र सेवाओं में विभाजित करना है। प्रत्येक माइक्रोसर्विस अपने सीमित क्षेत्र (Bounded Context) के लिए जिम्मेदार है। TypeScript में, यह स्वाभाविक रूप से मॉड्यूल और पैकेज के माध्यम से व्यक्त किया जाता है।

ई-कॉमर्स स्टोर के लिए डीकंपोज़िशन उदाहरण:

  • Auth Service — प्रमाणीकरण और JWT टोकन
  • Product Service — उत्पाद सूची और मूल्य
  • Order Service — ऑर्डर प्लेसमेंट और इतिहास
  • Payment Service — भुगतान प्रसंस्करण

प्रत्येक सेवा अपने स्वयं के package.json, कॉन्फ़िगरेशन और एंट्री पॉइंट (main.ts) के साथ TypeScript पर एक अलग एप्लिकेशन है।



1.2 टेक्नोलॉजी स्टैक का चयन

त्वरित शुरुआत के लिए, NestJS का उपयोग करने की अनुशंसा की जाती है — एक फ्रेमवर्क जो बॉक्स से बाहर माइक्रोसर्विस पैटर्न का समर्थन करता है। यह TCP, Redis, RabbitMQ, Kafka और gRPC के लिए ट्रांसपोर्ट एडेप्टर प्रदान करता है।

बेसिक स्टैक:

  • भाषा: TypeScript (सख्त मोड, strict: true)
  • फ्रेमवर्क: NestJS
  • मैसेज ब्रोकर: RabbitMQ (@nestjs/microservices के माध्यम से)
  • डेटाबेस: PostgreSQL (प्रत्येक सेवा का अपना DB)
  • कंटेनरीकरण: Docker + Docker Compose


1.3 इंटरैक्शन पैटर्न

दो मुख्य दृष्टिकोण हैं: सिंक्रोनस (HTTP/gRPC) और एसिंक्रोनस (कतारें)। समय-महत्वपूर्ण संचालन के लिए सिंक्रोनस अनुरोधों का उपयोग करें, पृष्ठभूमि कार्यों के लिए कतारों का उपयोग करें।

NestJS में हाइब्रिड सेवा सेट अप करने का उदाहरण:

// main.ts — माइक्रोसर्विस एंट्री पॉइंटimport { NestFactory } from '@nestjs/core';import { MicroserviceOptions, Transport } from '@nestjs/microservices';import { AppModule } from './app.module';

async function bootstrap() { // REST API के लिए HTTP सर्वर const app = await NestFactory.create(AppModule); // एसिंक्रोनस एक्सचेंज के लिए RabbitMQ कनेक्शन app.connectMicroservice<MicroserviceOptions>({ transport: Transport.RMQ, options: { urls: ['amqp://localhost:5672'], queue: 'orders_queue', queueOptions: { durable: true }, }, });

await app.startAllMicroservices(); await app.listen(3000);}bootstrap();


2. व्यावहारिक कार्यान्वयन: डेटा मॉडल से API तक

2.1 टाइप्स के साथ साझा पैकेज बनाना

सेवाओं के बीच इंटरफेस के दोहराव से बचने के लिए, सामान्य प्रकारों को एक अलग npm पैकेज (उदाहरण के लिए, @mycompany/shared-types) में रखें। यह TypeScript का मुख्य लाभ है — सभी सेवाओं के लिए सत्य का एकल स्रोत।

// shared-types/src/dto/order.dto.tsexport interface CreateOrderDto {  userId: string;  productId: string;  quantity: number;  totalPrice: number;}

export interface OrderResponse { id: string; status: 'pending' | 'confirmed' | 'cancelled'; createdAt: Date;}


2.2 Product Service (REST API) का कार्यान्वयन

उत्पाद सूची सेवा। PostgreSQL के साथ काम करने के लिए TypeORM और NestJS डेकोरेटर का उपयोग करें

ब्लॉग

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