TypeScript पर माइक्रोसर्विसेज़: आर्किटेक्चर और प्रैक्टिस A से Z तक

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

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

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

TypeScript पर माइक्रोसर्विसेज़: आर्किटेक्चर और प्रैक्टिस A से Z तक

\n

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

\n\n

1. TypeScript पर माइक्रोसर्विस आर्किटेक्चर के मूल सिद्धांत

\n

माइक्रोसर्विस आर्किटेक्चर में एप्लिकेशन को स्वतंत्र, शिथिल रूप से जुड़ी सेवाओं में विभाजित किया जाता है। प्रत्येक सेवा अपने व्यावसायिक तर्क (जैसे, उपयोगकर्ता प्रबंधन, ऑर्डर प्रोसेसिंग, भुगतान) के लिए जिम्मेदार होती है और इसे अलग से विकसित, तैनात और स्केल किया जा सकता है।

\n\n

TypeScript क्यों?

\n
    \n
  • टाइपिंग: रनटाइम के बजाय कंपाइलेशन के समय त्रुटियाँ। विशेष रूप से नेटवर्क पर कई सेवाओं के बीच बातचीत करते समय महत्वपूर्ण।
  • \n
  • इंटरफ़ेस और प्रकार: API अनुबंधों को सख्ती से परिभाषित करने की अनुमति देते हैं (जैसे, अनुरोध/प्रतिक्रिया के लिए DTO)।
  • \n
  • आधुनिक JavaScript: TypeScript शुद्ध JS में कंपाइल होता है, जो Node.js में चलता है।
  • \n
\n\n

उपयोगकर्ता माइक्रोसर्विस के लिए एक सख्ती से टाइप किए गए DTO का सरल उदाहरण देखें:

\n\n
// user.dto.ts\nexport interface CreateUserDto {\n  readonly email: string;\n  readonly password: string;\n  readonly name: string;\n}\n\nexport interface UserResponse {\n  id: string;\n  email: string;\n  name: string;\n  createdAt: Date;\n}
\n\n

सेवाओं के बीच डेटा स्थानांतरित करते समय (HTTP या RabbitMQ के माध्यम से), TypeScript गारंटी देता है कि ऑब्जेक्ट की संरचना अपेक्षित के अनुरूप है। यह बगों की संख्या को काफी कम करता है।

\n\n

2. NestJS के साथ माइक्रोसर्विस का कार्यान्वयन

\n

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

\n\n

RabbitMQ ट्रांसपोर्ट का उपयोग करके उपयोगकर्ताओं के प्रबंधन के लिए एक बुनियादी माइक्रोसर्विस बनाएं।

\n\n

चरण 1: निर्भरताएँ स्थापित करना

\n
npm install --save @nestjs/core @nestjs/common @nestjs/microservices\nnpm install --save amqplib amqp-connection-manager
\n\n

चरण 2: मुख्य मॉड्यूल और कंट्रोलर बनाना

\n
// user.controller.ts\nimport { Controller } from '@nestjs/common';\nimport { MessagePattern, Payload } from '@nestjs/microservices';\nimport { CreateUserDto, UserResponse } from './user.dto';\n\n@Controller()\nexport class UserController {\n  @MessagePattern('user.create')\n  async createUser(@Payload() data: CreateUserDto): Promise<UserResponse> {\n    // यहाँ डेटाबेस में उपयोगकर्ता बनाने का तर्क\n    console.log('उपयोगकर्ता बनाना:', data);\n    return {\n      id: 'uuid-123',\n      email: data.email,\n      name: data.name,\n      createdAt: new Date(),\n    };\n  }\n}
\n\n

चरण 3: माइक्रोसर्विस मोड में काम करने के लिए मुख्य फ़ाइल कॉन्फ़िगर करना

\n
// main.ts\nimport { NestFactory } from '@nestjs/core';\nimport { MicroserviceOptions, Transport } from '@nestjs/microservices';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n  const app = await NestFactory.createMicroservice<MicroserviceOptions>(\n    AppModule,\n    {\n      transport: Transport.RMQ,\n      options: {\n        urls: ['amqp://localhost:5672'],\n        queue: 'user_queue',\n        queueOptions: {\n          durable: false,\n        },\n      },\n    },\n  );\n  await app.listen();\n  console.log('उपयोगकर्ता माइक्रोसर्विस शुरू हो गई है');\n}\nbootstrap();
\n\n

इस प्रकार, हमारी सेवा RabbitMQ से जुड़ती है और कतार user_queue को सुनती है। कोई भी अन्य सेवा (जैसे, ऑर्डर सेवा) इस कतार में संदेश प्रकाशित करके उपयोगकर्ता बना सकती है।

ब्लॉग

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