déployer des microservices node.js avec Docker Compose et Kubernetes : guide technique
06/10/2025
Dans ce guide technique, nous expliquons comment architecturer et déployer une application microservices en Node.js à l’aide de Docker Compose pour le développement local, puis migrer vers un cluster Kubernetes en production. Objectif : scalabilité, isolation et résilience pour vos services métier SaaS.
étapes pour préparer vos microservices node.js
- Découpage des services
Identifiez vos domaines fonctionnels (authentification, catalogue, commande…). Créez un dossier par service, chacun avec sonpackage.json
et son point d’entréeindex.js
. - Dockerfile minimal
Exemple pour service-auth :FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 CMD ["node","index.js"]
- docker-compose.yml
Coordinateur local en 3 microservices :
Commande pour lancer :version: "3.8" services: auth: build: ./service-auth ports: ["3001:3000"] users: build: ./service-users ports: ["3002:3000"] orders: build: ./service-orders ports: ["3003:3000"] networks: default: driver: bridge
docker-compose up --build
. - Tests et monitoring
- Vérifiez la communication inter-services (curl http://localhost:3001/health
). - Installez Postman / Newman pour vos suites de tests automatisés.
passage à kubernetes
- Manifeste Deployment
Exemple pour le service-auth (fichierauth-deploy.yaml
) :apiVersion: apps/v1 kind: Deployment metadata: name: auth spec: replicas: 2 selector: matchLabels: app: auth template: metadata: labels: app: auth spec: containers: - name: auth image: yourrepo/service-auth:latest ports: - containerPort: 3000
- Service Kubernetes
Pour exposer en ClusterIP ou LoadBalancer :apiVersion: v1 kind: Service metadata: name: auth-svc spec: selector: app: auth ports: - port: 80 targetPort: 3000 type: ClusterIP
- Ingress et TLS
Utilisez un Ingress controller (NGINX) pour le routage et TLS :apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress spec: tls: - hosts: - api.votre-domaine.com secretName: tls-secret rules: - host: api.votre-domaine.com http: paths: - path: /auth pathType: Prefix backend: service: name: auth-svc port: number: 80
optimisation et métriques
- Réplicas dynamiques : auto-scaling horizontal (HPA) basé sur l’utilisation CPU (> 60 %).
- Limites mémoire/CPU : définissez
resources.limits
etrequests
pour éviter le throttle ou OOMKilled. - Observabilité : intégrez Prometheus & Grafana pour surveiller latence (P95 < 200 ms) et taux d’erreur (< 0,5 %).
erreurs fréquentes
- Image non trouvée : oubliez pas de
docker push
vers votre registry avant le déploiement. - Ingress 404 : vérifiez que les labels de Service et de Déployment correspondent.
- POD CrashLoopBackOff : inspectez les logs via
kubectl logs pod/auth-xxxx
.
bonnes pratiques de production
- CI/CD : intégrez GitHub Actions ou Jenkins pour build, test et déploiement automatisé.
- Sécurité : scanners d’images Docker (Trivy) et policies Kubernetes (OPA Gatekeeper).
- Rollback rapide : versionnez vos manifests et conservez les
ReplicaSets
antérieurs. - Documentation : maintenez un chart Helm ou Kustomize pour faciliter la réutilisation.
En adoptant cette architecture microservices, vous gagnez en modularité, résilience et évolutivité pour vos applications Web ou SaaS. Besoin d’un accompagnement pour votre projet ? Contactez-nous pour un audit technique.