v1.0 Novembre 2025
10.1

Plan de Déploiement

La solution de cashback nouvelle génération

24 novembre 2025
Version 1.0
1

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
99.9% Disponibilité cible
< 200ms Temps réponse API (P95)
< 15 min Temps déploiement
< 5 min Temps rollback

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
2

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
3

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
4

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.

2
Étape 2 - Déploiement

Nouvelle version déployée sur GREEN (version N+1). Tests de smoke automatiques et validation fonctionnelle sur GREEN.

3
Étape 3 - Basculement

Modification du load balancer : trafic redirigé vers GREEN. BLUE devient inactif (conservé pour rollback).

4
É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é :

1
5% du trafic

Pendant 1 heure - Surveillance des métriques

2
25% du trafic

Pendant 2 heures - Validation comportementale

3
50% du trafic

Pendant 4 heures - Tests à grande échelle

4
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
5

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

2
Étape 2 - Construction Image Docker

Build multi-stage pour optimisation taille. Tag : commit SHA + timestamp. Push vers Amazon ECR.

3
Étape 3 - Déploiement Staging (automatique)

Mise à jour task definition ECS. Rolling update (1 task à la fois). Health check : /api/health (200 OK requis).

4
Étape 4 - Tests E2E Staging

Exécution suite Cypress. Tests API avec Newman (Postman). Durée moyenne : 15 minutes.

SLA : ~15 minutes
5
É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 :

Bash
# 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.

2
Étape 2 - Déploiement

Export statique vers volume CapRover. Invalidation cache Nginx.

Durée : ~5 minutes
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).

2
Étape 2 - Déploiement

Upload vers volume CapRover. Invalidation cache Nginx.

Durée : ~3 minutes

5.4 Déploiement Application Mobile (Angular + Ionic / Capacitor)

iOS

Workflow App Store
  • eas 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 Store
  • eas 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.

2
Étape 2 - Déploiement Staging

npx prisma migrate deploy. Vérification intégrité données. Tests fonctionnels.

3
É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)
6

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 :

Bash
# 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
< 5 min Temps de rollback

6.3 Rollback Frontend (Site Vitrine, Dashboards)

Bash
# 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 "/*"
< 10 min Temps de rollback

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

Bash
# 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.

7

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
8

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.

2
Étape 2 - Triage (5-10 min)

Évaluation de la sévérité. Décision : rollback immédiat OU investigation. Mobilisation des ressources appropriées.

3
Étape 3 - Résolution

SEV-1/SEV-2 : Rollback immédiat puis analyse | SEV-3/SEV-4 : Investigation puis correction

4
Étape 4 - Communication

Mise à jour status page (si SEV-1/SEV-2). Notification Slack #incidents. Email aux parties prenantes (si nécessaire).

5
É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
9

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
Email 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 :

API Backend
Application Mobile
Site Vitrine
Dashboard Admin
Dashboard Partenaire
Intégrations Bancaires
10

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