Microservices TypeScript : guide débutant 2024

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Microservices en TypeScript : votre premier pas vers une architecture modulaire

\n\n

Imaginez que vous construisez une maison. Vous pouvez ériger un immense mur, puis y ajouter des pièces. Mais si une pièce tombe en panne, tout le bâtiment en souffre. L'alternative ? Construire des modules indépendants : une cuisine, une chambre, un salon, chacun avec son propre câblage et sa plomberie. C'est exactement ainsi que fonctionnent les microservices : des composants indépendants et faiblement couplés qui communiquent via le réseau.

\n\n

Utiliser TypeScript pour les microservices n'est pas une simple tendance, c'est un outil qui vous évite le chaos. Le typage statique détecte les erreurs dès la compilation, pas en production. Dans cet article, nous allons voir par où commencer pour passer d'un monolithe aux microservices en TypeScript. Du concret, avec des exemples de code réels.

\n\n

Pourquoi TypeScript plutôt que du JavaScript pur ?

\n\n

Quand vous écrivez des microservices, chaque service est un projet distinct. Sans types, il est facile de s'y perdre : quel format de données attend le service A ? Que renvoie le service B ? TypeScript résout ce problème :

\n\n
    \n
  • Interfaces et types — vous définissez clairement les contrats entre les services.
  • \n
  • Auto-complétion et refactoring — l'IDE vous suggère les champs des objets, et le renommage ne casse pas le code.
  • \n
  • Compatibilité avec Node.js — TypeScript se compile en JavaScript et fonctionne partout où Node est présent.
  • \n
\n\n

Exemple : imaginez que le service de commandes envoie des données au service de livraison. Sans types, vous pourriez accidentellement passer une chaîne de caractères au lieu d'un nombre. TypeScript vous dirait : « Hé, un nombre est attendu ici, mais tu envoies une chaîne ».

\n\n

Les outils pour démarrer

\n\n

Pour commencer, vous aurez besoin de :

\n\n
    \n
  • Node.js (version 18+) — l'environnement d'exécution.
  • \n
  • TypeScript — à installer globalement ou dans le projet.
  • \n
  • NestJS — un framework pour applications serveur. Il prend en charge nativement l'architecture microservices.
  • \n
  • RabbitMQ ou NATS — des courtiers de messages pour la communication asynchrone.
  • \n
  • Docker — pour la conteneurisation de chaque service.
  • \n
\n\n

Pas de panique, tout cela se configure en 15 minutes.

\n\n

Étape 1 : Créer votre premier microservice avec NestJS

\n\n

NestJS, c'est un peu comme Angular pour le backend. Il utilise des décorateurs, des modules et des fournisseurs. Installons-le :

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

Transformons maintenant une application classique en microservice. Ouvrez 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, // ou Redis, RabbitMQ\n      options: {\n        host: '0.0.0.0',\n        port: 3001,\n      },\n    },\n  );\n  await app.listen();\n  console.log('Le microservice User écoute sur le port 3001');\n}\nbootstrap();
\n\n

Nous avons créé un microservice qui écoute sur le port TCP 3001. Ajoutons maintenant un gestionnaire de messages dans app.controller.ts :

\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 d'une requête à la base de données\n    return { id: data.id, name: 'Alice', email: 'alice@example.com' };\n  }\n}
\n\n

Et voilà ! Votre premier microservice est prêt. Il reçoit un message avec le motif get_user et renvoie les données de l'utilisateur.

\n\n

Étape 2 : Créer un second service et organiser la communication

\n\n

Créons un autre service — order-service. Il va demander des données à user-service.

Blogs

Book Recommendations