Déploiement
Déploiement • Chapitre 6 : Déploiement d'une API REST

Déploiement d'une API Node.js et Express

Le guide complet de publication d'une API Express moderne : compilation TypeScript vers JavaScript, gestion des variables confidentielles, supervision de santé et démarrage avec un superviseur de processus.

🟢
Runtime Isolé

Exécution de Node.js avec paramètres d'optimisation mémoire (--max-old-space-size).

🔨
Build TypeScript

Compilation propre du code source TS vers le dossier distribuable dist/.

🩺
Health Check /health

Endpoint de surveillance renvoyant statut 200 OK et métriques système.

⚡
Démarrage PM2

Garantie que l'application reste active sans interruption 24h/24.

deploy-express-api.sh
# 1. Cloner ou mettre à jour le dépôt sur le serveur VPS
$ cd /var/www/mon-api
$ git pull origin main

# 2. Installer strictement les dépendances nécessaires
$ npm ci --omit=dev

# 3. Compiler TypeScript en JavaScript de production
$ npm run build
# Génère les fichiers optimisés dans /var/www/mon-api/dist/

# 4. Lancer ou recharger l'API avec PM2
$ pm2 start dist/server.js --name "api-prod" --time
$ pm2 save

# 5. Tester immédiatement la santé du service
$ curl -s http://127.0.0.1:3000/api/health | jq
{
  "status": "UP",
  "uptime": 12.4,
  "timestamp": "2026-10-11T12:50:00.000Z"
}

Guide Approfondi & Architecture Système

1. L'Erreur Fréquente : Lancer 'ts-node' en Production

En développement, ts-node ou tsx permet d'exécuter directement des fichiers .ts sans étape de build.
Ne faites jamais cela en production :ts-node recompile votre code en mémoire à chaque exécution, ce qui consomme énormément de CPU et ralentit chaque requête. La règle professionnelle est de toujours compiler votre code au préalable (tsc) et de faire exécuter par Node.js du pur JavaScript minifié (node dist/server.js).

2. Le Rôle Fondamental du Endpoint Health Check

Toute API de production doit exposer une route /api/health qui ne requiert aucune authentification. Elle permet aux hébergeurs (Render, AWS, Nginx) de savoir si votre API est opérationnelle ou si le conteneur doit être redémarré en cas de blocage de l'Event Loop.

Tableau Comparatif : Déploiement Express sur VPS vs PaaS (Render / Railway)

CritèreDéploiement sur VPS Linux DédiéDéploiement sur PaaS (Render / Railway)
Facilité initialeMoyenne (demande de maîtriser Linux et Nginx)Ultra-simple (1 clic via dépôt GitHub)
Contrôle systèmeTotal (accès root, choix du kernel et pare-feu)Restreint (conteneur isolé géré par l'hébergeur)
Coût à volume élevéFixe et très économique (ex: 5€ à 15€/mois)Progressif (facturation à la consommation de RAM)
Temps de veille (Cold Start)Zéro (le serveur tourne 24h/24 sans sommeil)15 à 30s de réveil sur les offres gratuites