DEV NOTE

Déploiement en production : check-list et bonnes pratiques de livraison

Une check-list de livraison pour préparer la production, vérifier les accès et transmettre un projet repris par l’équipe.

Pourquoi un déploiement structuré ?

La livraison en production est l'étape critique du projet. Mauvais deploy = downtime, bugs, perte confiance client.
"Tu ne veux jamais croiser les doigts en prod. Un bon déploiement, c'est une livraison maîtrisée."

Check-list pré-déploiement

Tests validés

  • Tests unitaires passés (npm test)
  • Tests E2E validés (Playwright/Cypress)
  • Tests manuels features critiques
  • Performance acceptable (Lighthouse > 90)
  • Accessibilité vérifiée (a11y)

Variables d'environnement

  • Fichier .env.production configuré
  • Secrets stockés sécurisés (Vercel Env, Railway Secrets)
  • API keys production activées (Stripe live mode, etc.)
  • URLs production correctes (frontend backend)
Exemple .env.production :
NODE_ENV=production
DATABASE_URL=postgresql://prod_user@prod_db/myapp
STRIPE_SECRET_KEY=sk_live_...
FRONTEND_URL=https://monapp.com
BACKEND_URL=https://api.monapp.com
JWT_SECRET=secret_ultra_securise_32_chars

Backup base de données

  • Export DB avant migration
  • Snapshot/backup automatique activé
  • Test restauration backup (au moins 1 fois)
Commandes PostgreSQL :
Backup :
pg_dump -U user -d dbname > backup_20251113.sql

Restore (si besoin) :
psql -U user -d dbname < backup_20251113.sql

Monitoring activé

  • Error tracking (Sentry configuré)
  • Uptime monitoring (UptimeRobot, Ping dom)
  • Logs accessibles (Vercel Logs, Railway Console)
  • Alertes email/Slack configurées

Documentation à jour

  • README.md complet
  • Guide déploiement (docs/DEPLOY.md)
  • Procédure rollback documentée
  • Contacts support/maintenance

Plan de rollback

  • Git tag version stable (git tag v1.0.0)
  • Procédure retour arrière testée
  • Backup DB récent (< 24h)
  • Contact client pour validation rollback si besoin

Outils CI/CD recommandés

GitHub Actions

Workflow exemple :
name: Deploy Production

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install deps
        run: npm install
      - name: Run tests
        run: npm test
      - name: Build
        run: npm run build
      - name: Deploy Vercel
        uses: amondnet/vercel-action@v25
        with:
          vercel-token: secrets.VERCEL_TOKEN
          vercel-org-id: secrets.ORG_ID
          vercel-project-id: secrets.PROJECT_ID
          vercel-args: '--prod'

GitLab CI

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script:
    - npm install
    - npm test

deploy_production:
  stage: deploy
  script:
    - npm run build
    - vercel --prod --token=VERCEL_TOKEN
  only:
    - main

Hébergeurs recommandés

Frontend statique

  • Vercel : React/Next.js, deploy auto, preview URLs
  • Netlify : Alternative Vercel, forms intégrés
  • Cloudflare Pages : CDN ultra-rapide, gratuit

Backend + DB

  • Railway : PostgreSQL + Node.js, simple config
  • Render : Alternative Railway, plan gratuit
  • Fly.io : Global edge deployment
  • AWS/Azure : Gros projets, scalabilité

Full-stack

  • Vercel (Next.js full-stack)
  • Heroku : Simple mais cher
  • DigitalOcean App Platform : Droplets + managed

Stratégies de déploiement

1. Rolling deployment (standard)

  • Remplace ancienne version par nouvelle
  • Downtime minimal (quelques secondes)
  • Rollback = redeploy version précédente

2. Blue-Green deployment

  • 2 environnements : Blue (actuel) + Green (nouveau)
  • Switch instantané DNS/load balancer
  • Rollback immédiat (re-switch vers Blue)
  • Coût : double infra temporairement

3. Canary deployment

  • Déploie nouvelle version pour 5-10% users
  • Monitor erreurs/performance
  • Si OK → rollout 100%
  • Usage : apps critiques, forte audience

Post-déploiement

Surveillance immédiate (24-48h)

  • Vérifier logs (pas d'erreurs critiques)
  • Tester flows principaux (auth, paiement)
  • Monitor Sentry (zero errors idéalement)
  • Check uptime (100% sur UptimeRobot)
  • Performance (response time < 500ms)

Communication client

Objet : [Projet X] Mise en production réussie

Bonjour [Client],

Le projet est maintenant en production !

URL : https://monapp.com
Monitoring : Dashboard Vercel
Support : contact@monapp.com

Prochaines étapes :
- Surveillance 48h (je reste dispo)
- Formation utilisateurs (si prévu)
- Maintenance J+30 (incluse)

Tout fonctionne parfaitement. N'hésite pas pour questions.

Félicitations pour le lancement ! [Ton nom]

Checklist déploiement finale

  • Tests unitaires + E2E passés
  • Env vars production configurées
  • Backup DB effectué
  • Monitoring activé (Sentry, UptimeRobot)
  • Documentation mise à jour
  • Plan rollback préparé
  • Git tag version (v1.0.0)
  • CI/CD pipeline fonctionnel
  • DNS/domaine configuré
  • HTTPS/SSL actif
  • Client prévenu + accès fournis
  • Surveillance 48h planifiée

Outils alerting

  • Sentry : error tracking temps réel
  • UptimeRobot : monitoring uptime (gratuit 50 monitors)
  • Grafana : dashboards métriques avancées
  • Datadog : APM complet (enterprise)
  • PagerDuty : alertes on-call

Conclusion

Un déploiement réussi = préparation + checklist + monitoring. Pas de place pour l'improvisation en production. Clone cette checklist pour chaque projet : zéro stress, zéro surprise.