Déploiement
Déploiement • Chapitre 3 : Déploiement d'un site web statique

Mise à jour du site après modification

Comprenez le cycle complet de mise en production continue : de la modification locale au déploiement atomique sans interruption de service, en passant par l'invalidation intelligente des caches CDN.

🔄
Déploiement Atomique

L'ancienne version reste 100% active jusqu'au succès complet du nouveau build. Aucune interruption.

🧹
Cache Busting

Les empreintes de hachage uniques (ex. main.a8f9.js) garantissent la réception immédiate du nouveau code.

⚡
Webhooks CI/CD

Un simple git push notifie la plateforme qui déclenche la compilation et la diffusion Edge.

⏪
Instant Rollback

Chaque version passée est conservée : rétablissez une version saine en un seul clic en cas d'anomalie critique.

workflow-release.sh
# 1. Tester la compilation en local pour valider l'absence d'erreurs
$ npm run build

# 2. Enregistrer proprement les modifications dans Git
$ git add src/components/Header.jsx src/styles/theme.css
$ git commit -m "feat(ui): mise à jour du bandeau d'alerte et optimisation CSS"

# 3. Envoyer vers le dépôt distant pour déclencher le déploiement
$ git push origin main

# 4. Le webhook hébergeur (Vercel / Netlify) s'exécute automatiquement :
# -> Récupération du commit 4f2c90e
# -> Exécution : npm run build dans un conteneur isolé
# -> Création des bundles hashés : bundle.83ba9e.js
# -> Test de santé (Health check) concluant
# -> Bascule atomique du domaine vers le nouveau conteneur
# -> Purge globale des nœuds CDN Edge

Comprendre la Mécanique des Mises à Jour en Production

1. Le Déploiement Atomique : L'analogie du Nouveau Pont

Imaginez que vous deviez remplacer un pont routier très fréquenté. À l'époque des transferts FTP à l'ancienne, le serveur remplaçait les fichiers un à un directement sur le serveur en production : pendant les 2 minutes de téléversement, un visiteur recevait un index.html neuf pointant vers un main.js pas encore copié, provoquant un crash immédiat de l'application !

🏗️ Comment fonctionne l'Atomic Deploy moderne :
  1. Construction dans l'ombre : Le nouvel édifice est construit à côté dans un répertoire temporaire totalement isolé (ex. /releases/commit-83ba9e).
  2. Vérification de solidité : Le système vérifie que tous les fichiers sont intègres et prêts à répondre.
  3. Bascule instantanée (Symlink switch) : En 1 milliseconde, le routeur réoriente le trafic du dossier A vers le dossier B. Aucun internaute ne voit d'état intermédiaire brisé.

2. Le Problème du Cache : Pourquoi les clients voient-ils l'ancienne version ?

Pour accélérer le chargement, les navigateurs et les serveurs CDN conservent les fichiers CSS et JS en mémoire locale pendant des semaines. Comment faire pour que vos utilisateurs reçoivent immédiatement votre mise à jour ?

❌ Mauvaise pratique

Garder des noms de fichiers statiques :

bundle.js & styles.css

Le navigateur lit son cache local et ne demande même pas au serveur si le fichier a changé. Les clients doivent vider leur cache manuellement (Ctrl + F5).

✅ Pratique moderne : Cache Busting

Hachage cryptographique du contenu :

bundle.d4f72a.js & styles.91bc3e.css

Dès qu'une seule virgule change dans votre code, le hash change de nom. Le fichier index.html (jamais mis en cache ou max-age=0) réclame la nouvelle URL, forçant un téléchargement neuf et immédiat !

3. Le Filet de Sécurité : Instant Rollback

Un bogue critique a échappé à vos tests et s'est retrouvé en production ? Avec les architectures modernes (Netlify, Vercel, Cloudflare Pages), chaque déploiement possède un identifiant permanent immuable (ex. deploy-preview-482.vercel.app).

En cas d'urgence : Rendez-vous sur la console hébergeur > Historique des déploiements > cliquez sur "Rollback to this deploy" sur le commit stable précédent. Votre nom de domaine bascule vers l'ancien build en moins de 3 secondes, sans devoir recompiler ni relancer de commit d'urgence.

Comparaison : Déploiement Rustique vs Moderne

CritèreFTP / SSH TraditionnelCI/CD Git + Déploiement Atomique
Risque de coupure (Downtime)Élevé (fichiers désynchronisés pendant l'envoi)Zéro (bascule instantanée par pointeur)
DéclenchementManuel via logiciel tiers (FileZilla, Cyberduck)Automatisé sur git push via Webhooks
Fraîcheur des fichiers clientRisque d'anciennes versions en cache navigateurCache busting automatique garanti par nom haché
Temps de RollbackPlusieurs minutes (retéléverser l'ancienne archive)Instantané (1 clic dans l'interface dashboard)