Déploiement
Déploiement • Chapitre 14 : Projet pratique final

Déployer une API REST sur un serveur ou une plateforme compatible

Deuxième étape du projet pratique : mettez en ligne votre API Node.js/Express. Configurez l'écoute sur le port dynamique fourni par l'hébergeur, isolez les variables d'environnement secrètes et validez le bon fonctionnement avec un endpoint /health.

🔌
Port Dynamique

Obligation d'écouter sur process.env.PORT fourni dynamiquement par la plateforme Cloud.

📦
Scripts package.json

Définition rigoureuse de 'npm run build' et du script de démarrage de production 'npm start'.

🛡️
Sanitisation & Sécurité

Activation des middlewares Helmet, compression et limitation de débit (express-rate-limit).

🩺
Health Check /health

Route de contrôle renvoyant 200 OK pour prouver à l'orchestrateur que le conteneur est vivant.

src/server.ts
// Serveur de production prêt pour le déploiement Cloud (Render / Railway / VPS) :
import express from 'express';
import helmet from 'helmet';
import compression from 'compression';

const app = express();

// 1. Middlewares indispensables de production
app.use(helmet());
app.use(compression());
app.use(express.json());

// 2. Endpoint de santé pour l'orchestrateur Cloud
app.get('/health', (req, res) => {
  res.status(200).json({
    status: 'healthy',
    uptime: process.uptime(),
    timestamp: new Date().toISOString()
  });
});

// 3. Écoute sur le port injecté par la plateforme d'hébergement
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`🚀 Serveur API de production à l'écoute sur le port ${PORT}`);
});

Guide Approfondi & Architecture Système

1. Le Piège du Port Figé en Dur (Port Binding Error)

Sur les plateformes PaaS comme Render, Heroku ou Railway :
La plateforme attribue un port aléatoire (par exemple PORT=10000) à chaque démarrage de conteneur. Si votre code contient app.listen(3000) sans lire process.env.PORT, l'hébergeur attendra 60 secondes sans voir de réponse sur son port et déclarera le déploiement en échec (Port binding failed) !

2. Déploiement Simplifié sur Render ou Railway

Les étapes de configuration sur Render :
  1. Créez un nouveau Web Service connecté à votre dépôt GitHub d'API.
  2. Définissez la Build Command : npm install && npm run build.
  3. Définissez la Start Command : npm start (qui pointe vers node dist/server.js).
  4. Renseignez vos variables d'environnement secrètes dans l'onglet Environment.
  5. L'API est compilée et mise en ligne avec une URL publique HTTPS dédiée !

Tableau Récapitulatif : Options d'Hébergement pour une API REST

SolutionFacilité de DéploiementCoût InitialCas d'Usage Recommandé
Render (Web Service)Très Facile (Git push)Plan gratuit / 7 $/moisProjets d'école, MVPs, prototypes et startups
RailwayTrès Facile (Détection auto)5 $ de crédits offertsAPIs avec base de données Postgres/MySQL couplée
VPS Ubuntu (Hetzner / OVH)Intermédiaire (SSH / PM2 / Nginx)4 à 6 €/moisApplications à fort trafic exigeant une rentabilité maximale
AWS ECS / FargateAvancé (Docker conteneurs)Facturation à l'usageGrandes entreprises et architectures micro-services