Mikroservices mit TypeScript: Wie man 2024 beginnt

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Mikroservices mit TypeScript: Ihr erster Schritt zu einer modularen Architektur

\n\n

Stellen Sie sich vor, Sie bauen ein Haus. Sie könnten eine einzige riesige Wand errichten und dann nach und nach Räume hinzufügen. Aber wenn ein Raum kaputt geht, leidet das gesamte Gebäude. Die Alternative: Bauen Sie separate Module – Küche, Schlafzimmer, Wohnzimmer, jedes mit eigener Verkabelung und Sanitärinstallation. Ungefähr so funktionieren Mikroservices – unabhängige, lose gekoppelte Komponenten, die über das Netzwerk kommunizieren.

\n\n

TypeScript für Mikroservices ist nicht nur ein modischer Trend, sondern ein Werkzeug, das vor Chaos bewahrt. Die statische Typisierung fängt Fehler bereits zur Kompilierzeit ab, nicht erst in der Produktion. In diesem Artikel schlüsseln wir auf, wie Sie beginnen, wenn Sie von einem Monolithen zu Mikroservices mit TypeScript wechseln möchten. Ohne überflüssige Ausschweifungen, mit echten Codebeispielen.

\n\n

Warum TypeScript und nicht reines JavaScript?

\n\n

Wenn Sie Mikroservices schreiben, ist jeder Service ein separates Projekt. Ohne Typen verliert man leicht den Überblick: Welches Datenformat erwartet Service A, was gibt Service B zurück? TypeScript löst dieses Problem:

\n\n
    \n
  • Schnittstellen und Typen – Sie definieren klar die Verträge zwischen den Services.
  • \n
  • Autovervollständigung und Refactoring – Die IDE schlägt Objektfelder vor, und Umbenennungen zerstören den Code nicht.
  • \n
  • Kompatibilität mit Node.js – TypeScript wird zu JavaScript kompiliert und funktioniert überall, wo Node läuft.
  • \n
\n\n

Beispiel: Stellen Sie sich vor, der Bestellservice sendet Daten an den Lieferservice. Ohne Typen könnten Sie versehentlich einen String anstelle einer Zahl übergeben. TypeScript sagt dann: „Hey, hier wird ein number erwartet, aber du schickst einen string“.

\n\n

Werkzeuge für den Start

\n\n

Um zu beginnen, benötigen Sie:

\n\n
    \n
  • Node.js (Version 18+) – die Laufzeitumgebung.
  • \n
  • TypeScript – global oder im Projekt installieren.
  • \n
  • NestJS – ein Framework für Serveranwendungen. Es unterstützt von Haus aus die Mikroservice-Architektur.
  • \n
  • RabbitMQ oder NATS – Message Broker für die asynchrone Kommunikation.
  • \n
  • Docker – Containerisierung jedes Services.
  • \n
\n\n

Keine Sorge, das alles ist in 15 Minuten eingerichtet.

\n\n

Schritt 1: Erstellen des ersten Mikroservices mit NestJS

\n\n

NestJS ist wie Angular für das Backend. Es verwendet Decorators, Module und Provider. Installieren wir es:

\n\n
npm i -g @nestjs/cli\nnest new user-service\ncd user-service\nnpm install @nestjs/microservices
\n\n

Jetzt verwandeln wir eine normale Anwendung in einen Mikroservice. Öffnen Sie main.ts:

\n\n
import { 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.TCP, // oder Redis, RabbitMQ\n      options: {\n        host: '0.0.0.0',\n        port: 3001,\n      },\n    },\n  );\n  await app.listen();\n  console.log('User microservice is listening on port 3001');\n}\nbootstrap();
\n\n

Wir haben einen Mikroservice erstellt, der auf TCP-Port 3001 lauscht. Jetzt fügen wir einen Nachrichtenhandler in app.controller.ts hinzu:

\n\n
import { Controller } from '@nestjs/common';\nimport { MessagePattern, Payload } from '@nestjs/microservices';\n\n@Controller()\nexport class AppController {\n  @MessagePattern('get_user')\n  getUser(@Payload() data: { id: number }) {\n    // Simulation einer Datenbankabfrage\n    return { id: data.id, name: 'Alice', email: 'alice@example.com' };\n  }\n}
\n\n

Fertig! Der erste Mikroservice ist bereit. Er empfängt eine Nachricht mit dem Muster get_user und gibt die Benutzerdaten zurück.

\n\n

Schritt 2: Erstellen eines zweiten Services und Organisation der Kommunikation

\n\n

Wir erstellen einen weiteren Service – order-service. Er wird Daten vom user-service anfordern.

Blogs

Buchempfehlungen