Plan de Déploiement
La solution de cashback nouvelle génération
INTRODUCTION ET OBJECTIFS
1.1 Objet du Document
Ce document définit le plan de déploiement complet pour l'ensemble de l'écosystème REWAPP. Il couvre les procédures, environnements, stratégies et mécanismes de rollback nécessaires pour garantir des déploiements fiables, reproductibles et réversibles.
1.2 Périmètre
Le plan de déploiement couvre les cinq composantes de l'écosystème REWAPP :
-
Application Mobile (iOS/Android) Angular + Ionic
-
Site Vitrine Angular + Tailwind CSS
-
Dashboard Admin Angular + Angular Material
-
Dashboard Partenaire Angular + Ionic (PWA)
-
Backend API Microservices NestJS sur Docker/CapRover
1.3 Objectifs du Déploiement
OBJECTIFS CRITIQUES
1.4 Principes Directeurs
Principes de Déploiement
| Principe | Description |
|---|---|
| Zero Downtime | Aucune interruption de service visible pour les utilisateurs |
| Blue-Green Deployment | Basculement instantané entre versions |
| Infrastructure as Code | Toute configuration versionnée dans Git (Terraform) |
| Automatisation Maximale | CI/CD avec GitHub Actions, interventions manuelles minimisées |
| Rollback Automatique | Retour automatique à la version précédente en cas d'erreur |
| Tests Obligatoires | Aucun déploiement production sans validation sur staging |
ENVIRONNEMENTS DE DÉPLOIEMENT
2.1 Vue d'Ensemble des Environnements
Environnements
| Environnement | URL API | URL WEB | Objectif |
|---|---|---|---|
| Développement | dev.api.rewapp.fr |
dev.rewapp.fr |
Tests développeurs, intégration continue |
| Staging | staging.api.rewapp.fr |
staging.rewapp.fr |
Validation pré-production, tests E2E |
| Production | api.rewapp.fr |
www.rewapp.fr |
Environnement live utilisateurs |
2.2 Environnement de Développement
Développement
Configuration Infrastructure- Containers : Docker via CapRover
- Base de données : PostgreSQL Container
- Cache : Redis Container
- Stockage : S3 bucket
rewapp-dev-assets
Caractéristiques :
- Déploiement automatique sur chaque push branche
develop - Données de test anonymisées
- Logs niveau DEBUG activés
- Pas de rate limiting strict
- Certificat SSL Let's Encrypt
2.3 Environnement de Staging
Staging
Configuration Infrastructure- Containers : Docker x2 via CapRover avec load balancer
- Base de données : PostgreSQL Container
- Cache : Redis Container Cluster
- Stockage : S3 bucket
rewapp-staging-assets
Caractéristiques :
- Miroir fidèle de la production (configuration identique)
- Déploiement automatique sur merge vers
main - Données de test représentatives (volume réaliste)
- Tests E2E Cypress automatisés
- Intégrations tierces en mode sandbox
2.4 Environnement de Production
Production
Configuration Infrastructure- Containers : Docker x4 via CapRover avec auto-scaling 2-10
- Base de données : PostgreSQL Container avec réplication
- Cache : Redis Container Cluster
- CDN : Nginx/Traefik (CapRover intégré)
- WAF : Traefik middleware avec règles OWASP
Caractéristiques :
- Déploiement manuel avec double approbation
- Blue-Green deployment obligatoire
- Monitoring temps réel avec alertes
- Backup automatique quotidien (rétention 30 jours)
- Logs niveau INFO, rétention 90 jours
2.5 Matrice des Branches et Environnements
Branches et Déploiements
| Branche | Environnement | Déploiement | Approbation |
|---|---|---|---|
develop |
Développement | Automatique (push) | Non |
main |
Staging | Automatique (merge) | Non |
main + tag release |
Production | Manuel | 2 reviewers minimum |
PRÉREQUIS ET PRÉPARATION
3.1 Prérequis Infrastructure
CHECKLIST INFRASTRUCTURE
- Serveur CapRover configuré avec Docker networks
- Firewall configuré (Traefik, App, DB, Redis)
- PostgreSQL provisionné et initialisé (schéma Prisma migré)
- Redis container opérationnel
- Volumes persistants créés pour stockage
- Traefik reverse proxy configuré
- Certificats SSL/TLS Let's Encrypt
- DNS configuré avec health checks
- Secrets stockés dans variables d'environnement CapRover
3.2 Prérequis Applicatifs
CHECKLIST APPLICATIFS
- Code source versionné dans GitHub
- Tests unitaires passants (couverture > 80%)
- Tests d'intégration validés
- Build Docker réussi
- Image Docker poussée vers Amazon ECR
- Variables d'environnement configurées (CapRover)
- Migrations de base de données préparées
3.3 Prérequis Intégrations Tierces
Services Externes
| Service | Prérequis | Validation |
|---|---|---|
| Budget Insight | API keys configurées, webhooks enregistrés | Test card linking sandbox |
| SendGrid | Domaine vérifié, templates créés | Test envoi email |
| Twilio | Numéro provisionné, webhook configuré | Test envoi SMS |
| Firebase (FCM) | Projet créé, credentials configurées | Test push notification |
| Sentry | Projet créé, DSN configuré | Test capture erreur |
3.4 Prérequis Équipe
Rôles et Responsabilités
| Rôle | Responsabilités Déploiement | Contact |
|---|---|---|
| DevOps Lead | Exécution déploiement, monitoring, rollback | Astreinte 24/7 |
| Tech Lead Backend | Validation code, approbation PR | Heures ouvrées |
| Tech Lead Frontend | Validation UI/UX, tests manuels | Heures ouvrées |
| QA Lead | Validation tests E2E, go/no-go | Heures ouvrées |
| Product Owner | Approbation fonctionnelle finale | Heures ouvrées |
STRATÉGIE DE DÉPLOIEMENT
4.1 Stratégie Blue-Green
REWAPP utilise une stratégie Blue-Green Deployment pour garantir un déploiement sans interruption de service.
Étape 1 - État Initial
Environnement BLUE actif (version N, reçoit le trafic). Environnement GREEN inactif.
Étape 2 - Déploiement
Nouvelle version déployée sur GREEN (version N+1). Tests de smoke automatiques et validation fonctionnelle sur GREEN.
Étape 3 - Basculement
Modification du load balancer : trafic redirigé vers GREEN. BLUE devient inactif (conservé pour rollback).
Étape 4 - Confirmation ou Rollback
Si OK après 30 minutes : BLUE peut être mis à jour. Si KO : rollback immédiat vers BLUE (< 5 minutes).
4.2 Fenêtres de Déploiement
RÈGLES CRITIQUES
Fenêtres de Déploiement
| Type | Fenêtre Autorisée | Fenêtre Interdite | Approbation |
|---|---|---|---|
| Déploiement standard | Lundi-Jeudi 10h-17h | Vendredi, weekends, jours fériés | 2 reviewers |
| Hotfix critique | 24h/7j | - | 1 reviewer + Tech Lead |
| Maintenance planifiée | Dimanche 02h-06h | - | Communication J-7 |
4.3 Canary Deployment (Optionnel - Phase 2)
Pour les fonctionnalités à risque élevé, un déploiement Canary progressif peut être utilisé :
5% du trafic
Pendant 1 heure - Surveillance des métriques
25% du trafic
Pendant 2 heures - Validation comportementale
50% du trafic
Pendant 4 heures - Tests à grande échelle
100% du trafic
Après validation complète
4.4 Feature Flags
REWAPP utilise des Feature Flags pour activer/désactiver des fonctionnalités sans redéploiement :
- Stockage : CapRover Environment Variables
- Mise à jour : temps réel (cache 60 secondes)
- Granularité : global, par environnement, par utilisateur
PROCÉDURES DE DÉPLOIEMENT PAR COMPOSANT
5.1 Déploiement Backend API (Microservices NestJS)
Workflow CI/CD :
Étape 1 - Build et Tests
Déclencheur : Push sur branche ou merge vers main
Actions : npm install, npm run lint, npm run test, npm run build
Critères de succès : 0 erreur lint, tests 100% passants
Étape 2 - Construction Image Docker
Build multi-stage pour optimisation taille. Tag : commit SHA + timestamp. Push vers Amazon ECR.
Étape 3 - Déploiement Staging (automatique)
Mise à jour task definition ECS. Rolling update (1 task à la fois). Health check : /api/health (200 OK requis).
Étape 4 - Tests E2E Staging
Exécution suite Cypress. Tests API avec Newman (Postman). Durée moyenne : 15 minutes.
Étape 5 - Déploiement Production (manuel)
Tag release créé (vX.Y.Z). Approbation 2 reviewers minimum. Rolling deployment via CapRover. Smoke tests automatiques post-déploiement.
Commandes de Déploiement :
# Déploiement staging (automatique via GitHub Actions)
git checkout main
git merge develop
git push origin main
# Déploiement production (manuel)
git tag -a v1.2.3 -m "Release 1.2.3 - Description"
git push origin v1.2.3
# Puis approbation dans GitHub Actions
5.2 Déploiement Site Vitrine (Angular)
Étape 1 - Build et Tests
npm run lint, npm run test, npm run build (Static Site Generation). Optimisation images automatique.
Étape 2 - Déploiement
Export statique vers volume CapRover. Invalidation cache Nginx.
Configuration S3
Volume : rewapp-vitrine-{env} | Static website hosting via Nginx | Certificat Let's Encrypt
5.3 Déploiement Dashboards (Angular SPA)
Workflow identique pour Dashboard Admin et Dashboard Partenaire :
Étape 1 - Build
npm run build (Vite pour Partenaire, CRA pour Admin). Bundle size check (< 200KB gzipped). Source maps générées (Sentry).
Étape 2 - Déploiement
Upload vers volume CapRover. Invalidation cache Nginx.
5.4 Déploiement Application Mobile (Angular + Ionic / Capacitor)
iOS
Workflow App Storeeas build --platform ios --profile production- Signature avec certificats Apple Developer
- Upload via App Store Connect
- Review Apple (1-3 jours ouvrés)
Android
Workflow Play Storeeas build --platform android --profile production- Signature avec keystore
- Upload via Google Play Console
- Publication progressive (10% → 50% → 100%)
RÈGLE IMPORTANTE
Les déploiements mobile nécessitent un délai de review des stores. Planifier les releases 1 semaine à l'avance minimum.
5.5 Déploiement Base de Données (Migrations)
Étape 1 - Préparation
Création migration : npx prisma migrate dev --name description. Review du fichier SQL généré. Test sur environnement développement.
Étape 2 - Déploiement Staging
npx prisma migrate deploy. Vérification intégrité données. Tests fonctionnels.
Étape 3 - Déploiement Production
Backup automatique pré-migration. npx prisma migrate deploy. Vérification post-migration.
RÈGLES CRITIQUES POUR LES MIGRATIONS
- Toute migration destructive (DROP, DELETE) requiert approbation Tech Lead
- Les migrations doivent être rétrocompatibles (rollback possible)
- Durée migration < 5 minutes (sinon planifier maintenance)
PROCÉDURE DE ROLLBACK
6.1 Critères de Déclenchement Rollback
UN ROLLBACK DOIT ÊTRE DÉCLENCHÉ IMMÉDIATEMENT SI :
- Taux d'erreur API > 1% pendant 5 minutes
- Latence P95 > 500ms pendant 5 minutes
- Fonctionnalité critique non opérationnelle
- Échec des smoke tests post-déploiement
- Alerte sécurité critique
6.2 Rollback Backend API
Procédure Automatique (recommandée) :
CapRover détecte automatiquement un échec si :
- Health check
/api/healthéchoue 3 fois consécutives - Métriques CloudWatch dépassent les seuils critiques
Action automatique : Basculement immédiat vers environnement BLUE (version précédente). Notification Slack et PagerDuty. Logging de l'incident.
Procédure Manuelle :
# 1. Identifier la version précédente
aws ecs describe-services --cluster rewapp-prod --services api-service
# 2. Rollback vers task definition précédente
aws ecs update-service --cluster rewapp-prod --service api-service --task-definition rewapp-api:PREVIOUS_VERSION
# 3. Vérifier le rollback
aws ecs wait services-stable --cluster rewapp-prod --services api-service
6.3 Rollback Frontend (Site Vitrine, Dashboards)
# 1. Identifier la version précédente dans S3
aws s3 ls s3://rewapp-vitrine-prod/ --recursive
# 2. Restaurer depuis le backup ou rebuild
# Option A : Restaurer depuis version précédente
aws s3 sync s3://rewapp-vitrine-prod-backup/ s3://rewapp-vitrine-prod/
# Option B : Rebuild de la version précédente
git checkout vX.Y.Z-1
npm run build
aws s3 sync ./out s3://rewapp-vitrine-prod/
# 3. Invalider le cache Nginx
aws cloudfront create-invalidation --distribution-id XXXX --paths "/*"
6.4 Rollback Application Mobile
ATTENTION
Le rollback mobile est complexe car les stores ne permettent pas de retirer une version publiée.
Options disponibles :
- Publication d'une nouvelle version corrigée (délai review)
- Utilisation de CodePush pour mise à jour OTA (JavaScript uniquement)
- Feature flag pour désactiver la fonctionnalité problématique
6.5 Rollback Base de Données
# 1. Identifier le backup le plus récent
aws rds describe-db-snapshots --db-instance-identifier rewapp-prod
# 2. Option A : Restaurer depuis snapshot (downtime ~30min)
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier rewapp-prod-restored --db-snapshot-identifier rds:rewapp-prod-YYYY-MM-DD
# 3. Option B : Exécuter migration inverse (si disponible)
npx prisma migrate resolve --rolled-back MIGRATION_NAME
RÈGLE
Toute migration doit avoir un script de rollback testé avant déploiement production.
CHECKLISTS DE DÉPLOIEMENT
7.1 Checklist Pré-Déploiement
Validation Code
- Pull Request approuvée par 2 reviewers minimum
- Tous les tests unitaires passants
- Tous les tests d'intégration passants
- Analyse de sécurité (npm audit, Snyk) sans vulnérabilités critiques
- Code coverage > 80%
Validation Staging
- Déploiement staging réussi
- Tests E2E Cypress passants
- Tests de performance acceptables (< 200ms P95)
- Validation fonctionnelle QA
- Validation Product Owner
Préparation Production
- Release notes rédigées
- Documentation mise à jour (si nécessaire)
- Équipe d'astreinte informée
- Fenêtre de déploiement validée
- Plan de rollback vérifié
7.2 Checklist Post-Déploiement
Vérifications Post-Déploiement
| Phase | Temps | Vérifications |
|---|---|---|
| Technique | 0-5 min | Health check API, Smoke tests, Métriques CloudWatch, Logs sans erreurs, Sentry |
| Fonctionnelle | 5-30 min | Inscription, Connexion, Solde points, QR code (60s), Dashboards |
| Validation | 30-60 min | Aucune alerte, Taux erreur < 0.1%, Latence P95 < 200ms, Changelog |
GESTION DES INCIDENTS DE DÉPLOIEMENT
8.1 Classification des Incidents
Niveaux de Sévérité
| Niveau | Impact | Exemples | Temps Résolution |
|---|---|---|---|
| SEV-1 (Critique) | Service totalement indisponible | API down, base de données inaccessible | < 30 minutes |
| SEV-2 (Majeur) | Fonctionnalité majeure impactée | Paiements échouent, QR codes invalides | < 2 heures |
| SEV-3 (Mineur) | Fonctionnalité secondaire impactée | Notifications retardées, lenteurs | < 24 heures |
| SEV-4 (Faible) | Impact cosmétique | Bug UI mineur, typo | Prochain sprint |
8.2 Procédure de Gestion d'Incident
Étape 1 - Détection (0-5 min)
Alerte automatique (CloudWatch, Sentry) OU signalement utilisateur/équipe. Création ticket incident.
Étape 2 - Triage (5-10 min)
Évaluation de la sévérité. Décision : rollback immédiat OU investigation. Mobilisation des ressources appropriées.
Étape 3 - Résolution
SEV-1/SEV-2 : Rollback immédiat puis analyse | SEV-3/SEV-4 : Investigation puis correction
Étape 4 - Communication
Mise à jour status page (si SEV-1/SEV-2). Notification Slack #incidents. Email aux parties prenantes (si nécessaire).
Étape 5 - Post-mortem (sous 48h)
Documentation de l'incident. Analyse des causes racines. Actions correctives identifiées. Mise à jour des procédures si nécessaire.
8.3 Contacts d'Escalade
Matrice d'Escalade
| Niveau | Contact | Canal | Disponibilité |
|---|---|---|---|
| Niveau 1 | DevOps on-call | PagerDuty + Slack | 24/7 |
| Niveau 2 | Tech Lead | Téléphone + Slack | Heures ouvrées + astreinte |
| Niveau 3 | CTO | Téléphone | Urgences critiques uniquement |
COMMUNICATION ET NOTIFICATIONS
9.1 Canaux de Communication
Canaux
| Canal | Usage | Audience |
|---|---|---|
Slack #deployments |
Notifications automatiques CI/CD | Équipe technique |
Slack #incidents |
Gestion des incidents | Équipe technique + Management |
| Rapports hebdomadaires, incidents majeurs | Stakeholders | |
| Status Page | Communication publique incidents | Utilisateurs |
| PagerDuty | Alertes critiques (astreinte) | DevOps on-call |
9.2 Templates de Communication
✅ DÉPLOIEMENT RÉUSSI
Déploiement Production v1.2.3
• Heure : 2025-11-24 14:30 UTC
• Durée : 8 minutes
• Changelog : [lien vers release notes]
• Métriques : Nominal
🔴 INCIDENT EN COURS
INCIDENT SEV-1 - API indisponible
• Début : 2025-11-24 15:45 UTC
• Impact : Tous les utilisateurs
• Statut : Investigation en cours
• Prochaine mise à jour : 15 minutes
✅ INCIDENT RÉSOLU
INCIDENT RÉSOLU - API indisponible
• Durée totale : 18 minutes
• Cause : Erreur de configuration après déploiement
• Action : Rollback vers v1.2.2
• Post-mortem : Planifié pour 2025-11-26
9.3 Status Page
URL : status.rewapp.fr
Composants surveillés :
CONCLUSION
10.1 Récapitulatif
Ce plan de déploiement établit un cadre rigoureux pour garantir des déploiements fiables et réversibles pour l'ensemble de l'écosystème REWAPP. Les points clés sont :
- Stratégie Blue-Green : Zero downtime garanti
- Automatisation CI/CD : Réduction des erreurs humaines
- Rollback rapide : < 5 minutes pour le backend
- Monitoring proactif : Détection précoce des anomalies
- Communication structurée : Transparence avec les parties prenantes
10.2 Indicateurs de Succès
KPIs de Déploiement
| Métrique | Objectif | Mesure |
|---|---|---|
| Taux de succès déploiement | > 99% | Déploiements réussis / Total déploiements |
| Temps moyen de déploiement | < 15 min | Durée moyenne d'un déploiement production |
| Temps moyen de rollback | < 5 min | Durée moyenne d'un rollback |
| MTTR (Mean Time To Recover) | < 30 min | Temps moyen de résolution incident SEV-1 |
| Fréquence de déploiement | > 2/semaine | Nombre de déploiements production par semaine |
10.3 Évolutions Futures
- Canary Deployment : Déploiement progressif par pourcentage de trafic
- GitOps : ArgoCD pour synchronisation déclarative Kubernetes
- Chaos Engineering : Tests de résilience automatisés
- Déploiement Multi-Région : Préparation expansion européenne