Déploiement
Déploiement • Chapitre 1 : Introduction au déploiement

Définition du déploiement

Le déploiement logiciel est l'ensemble des activités et processus qui rendent une application web, un site ou une API disponible, fonctionnel et exécutable sur un environnement de production accessible aux utilisateurs finaux. C'est le pont indispensable entre le code source écrit en local et le produit utilisable mondialement sur Internet.

🚀
Mise en Ligne Réelle

Passage du code source local vers une infrastructure distante accessible publiquement via une adresse IP ou un nom de domaine.

🔄
Livraison Continue

Automatisation du processus pour publier les nouvelles fonctionnalités rapidement, fréquemment et sans régression technique.

🛡️
Zéro Interruption (Zero-Downtime)

Garantir que le service reste disponible 24h/24 pendant le remplacement atomique de l'ancienne version par la nouvelle.

📈
Reproductibilité

Assurer qu'un même commit Git produit toujours exactement le même artefact de production quel que soit le serveur cible.

Simulateur Interactif : Pipeline de Déploiement Continu

Simulation CI/CD

Visualisez en direct les 5 étapes successives traversées par votre code lors d'un déploiement moderne. Cliquez sur le bouton pour lancer la chaîne d'intégration et de livraison continue :

🐙
1. Commit & Push
En attente
📦
2. Dépendances
En attente
🧪
3. Tests & Lint
En attente
⚡
4. Build de Prod
En attente
🌐
5. Mise en Ligne
En attente
Journal d'exécution du runner CI/CD0 lignes
Appuyez sur "Déclencher le Déploiement" pour lancer la chaîne d'exécution...
deploy.sh : Script de Déploiement Automatique de Référence
#!/usr/bin/env bash
# ==============================================================================
# SCRIPT DE DÉPLOIEMENT STANDARD DE PRODUCTION (deploy.sh)
# Utilise le principe d'arrêt immédiat en cas d'erreur (set -e)
# ==============================================================================

set -eo pipefail # Arrêt immédiat si une commande ou un pipe échoue

echo "🚀 [1/5] Récupération du code source le plus récent..."
git fetch origin main
git reset --hard origin/main

echo "📦 [2/5] Installation déterministe des dépendances..."
npm ci --only=production --silent

echo "🧪 [3/5] Exécution des tests de non-régression..."
npm run test:ci

echo "⚙️ [4/5] Compilation du livrable de production..."
npm run build

echo "🔄 [5/5] Rechargement gracieux du serveur d'application..."
pm2 reload api-production --update-env

echo "✅ Déploiement terminé avec succès en $(SECONDS) secondes !"
curl -fsS https://127.0.0.1:3000/api/health > /dev/null && echo "🩺 Healthcheck: 200 OK"

Les 4 Fondements du Déploiement Moderne

1. La Fin de l'Ère FTP et du Déploiement Artisanal Automatisation Git

Pendant longtemps, déployer consistait à glisser-déposer des fichiers modifiés via un client FTP (comme FileZilla). Cette méthode manuelle était source de catastrophes majeures : oubli d'un fichier, écrasement par mégarde d'un fichier de configuration, coupure réseau en plein transfert et impossibilité de revenir en arrière facilement. Aujourd'hui, tout déploiement moderne s'appuie sur le gestionnaire de versions Git et sur des plateformes d'automatisation.

2. Le Principe du Déploiement Atomique Atomic Release

Un déploiement est dit atomique quand la mise en ligne s'effectue en une fraction de seconde par permutation d'un lien symbolique (symlink). L'ancienne version reste intacte dans un dossier (ex: releases/v1/) tandis que la nouvelle version est compilée dans releases/v2/. Ce n'est qu'une fois le build 100% réussi que le serveur web pointe vers v2. Les utilisateurs ne voient aucun écran blanc et si un problème survient, le retour vers v1 prend 1 seconde.

3. Les 4 Métriques DORA de l'Industrie DevOps Standards

Établies par l'équipe DevOps Research and Assessment (Google Cloud), ces 4 métriques mesurent l'efficacité de vos déploiements :

  • Deployment Frequency : À quelle fréquence publiez-vous du code en production (plusieurs fois par jour vs 1 fois par mois) ?
  • Lead Time for Changes : Combien de temps s'écoule entre le premier commit et sa mise en ligne effective ?
  • Change Failure Rate : Quel pourcentage de vos déploiements entraîne un incident ou nécessite un correctif d'urgence ?
  • Mean Time to Recovery (MTTR) : Combien de minutes sont nécessaires pour rétablir le service en cas de panne critique ?

4. Découplage Build vs Run Twelve-Factor App

L'étape de compilation (Build) transforme le code source en un livrable immuable (artefacts minifiés, images optimisées). L'étape d'exécution (Run) lance ce livrable dans un environnement doté de ses propres variables de configuration. Le serveur de production ne doit jamais recompiler le code à chaud : il se contente d'exécuter un artefact déjà prêt et testé.

Tableau Comparatif : Évolution des Méthodes de Déploiement

MéthodeProcessusRisque d'ErreurRollback (Retour Arrière)Temps d'Arrêt
FTP ManuelTransfert de fichiers modifiés à la mainTrès Élevé (oubli, écrasement)Presque impossible ou très lentFréquent pendant l'envoi
SSH / Script ShellConnexion au serveur et exécution d'un script bashMoyen (dépend du serveur)Possible via symlinks ou git checkoutFaible (quelques secondes)
CI/CD Git AutomatiséDéclenchement automatique dès le git pushTrès Faible (tests bloquants)Instantané (1 clic ou revert Git)0 seconde (Déploiement atomique)
PaaS Cloud (Vercel/Render)Hébergement managé avec Edge CDN mondialNul (bureaucratique & vérifié)Instantané (historique d'URLs d'accès)0 seconde (Bascule DNS/Edge)