Architecture Technique Globale
La solution de cashback nouvelle génération
VUE D'ENSEMBLE DE L'ARCHITECTURE
1.1 Introduction
L'architecture technique de REWAPP est conçue selon les principes de scalabilité, haute disponibilité et sécurité. Elle repose sur une architecture microservices déployée sur infrastructure CapRover + Docker, permettant une évolutivité horizontale et une maintenance facilitée.
L'écosystème REWAPP comprend quatre composantes principales :
- Application Mobile : iOS/Android pour les clients finaux
- Site Vitrine : présentation de l'offre et inscription
- Dashboard Admin : gestion globale par l'équipe REWAPP
- Dashboard Partenaire : interface de gestion pour les commerçants
1.2 Principes Architecturaux
Principes Fondamentaux
| Principe | Description | Bénéfice |
|---|---|---|
| Architecture Microservices | Séparation des domaines fonctionnels en services indépendants | Évolutivité, maintenance facilitée |
| API-First | Toute communication passe par des APIs REST standardisées | Interopérabilité, testabilité |
| Cloud Native | Utilisation des containers Docker sur CapRover | Scalabilité automatique |
| Security by Design | Sécurité intégrée dès la conception à tous les niveaux | Conformité RGPD/PCI DSS |
| Event-Driven | Communication asynchrone entre services via Bull Queue (Redis) | Découplage, résilience |
1.3 Composants de l'Écosystème
1.3.1 Applications Clientes
Applications Frontend
| Application | Technologie | Version | Description |
|---|---|---|---|
| Application Mobile | Angular + Ionic |
17.x / 7.x | iOS et Android, gestion compte, QR code, historique |
| Site Vitrine | Angular + Tailwind CSS |
17.x | SSR pour SEO optimal, inscription, liste partenaires |
| Dashboard Admin | Angular + Angular Material |
17.x | SPA avec authentification renforcée (2FA obligatoire) |
| Dashboard Partenaire | Angular + Ionic (PWA) |
17.x / 7.x | PWA pour scan QR, statistiques, configuration |
1.3.2 Services Backend
Stack Backend
| Composant | Technologie | Rôle |
|---|---|---|
| API Gateway | Kong / Traefik |
Point d'entrée unique, rate limiting, authentification |
| Services Métier | Node.js + NestJS |
Microservices métier |
| ORM | Prisma |
Mapping objet-relationnel, migrations |
| Base de Données | PostgreSQL 15+ |
Stockage principal des données |
| Cache | Redis 7+ |
Sessions, cache, QR codes temporaires |
| Queue | Bull Queue (Redis) |
Communication asynchrone entre services |
ARCHITECTURE DÉTAILLÉE PAR COUCHE
2.1 Couche Présentation (Frontend)
2.1.1 Application Mobile (Angular + Ionic)
Architecture :
- NgRx / Services Angular pour gestion d'état global
- Ionic Router pour la navigation native
- HttpClient Angular pour les appels API avec intercepteurs
- Ionic Storage pour persistance locale
- @capacitor/camera pour scan QR code
- @capacitor/push-notifications pour push notifications
Sécurité Mobile :
- Certificate Pinning pour éviter attaques MITM
- Biométrie native (FaceID / TouchID / Fingerprint)
- Stockage sécurisé des tokens (Keychain iOS / Keystore Android)
- Obfuscation du code en production
2.1.2 Site Vitrine (Angular 17)
Architecture :
- Static Site Generation (SSG) pour performance SEO optimale
- Tailwind CSS pour styling responsive
- Optimisation images avec next/image
- Integration Google Tag Manager pour analytics
Pages principales :
- Accueil : présentation REWAPP, proposition de valeur
- Comment ça marche : tutoriel utilisateur
- Partenaires : liste et carte des commerçants
- Inscription : formulaire utilisateur et commerçant
- FAQ : questions fréquentes
2.1.3 Dashboards Admin et Partenaire (Angular)
Architecture commune :
- Angular Material / Ionic Components pour composants professionnels
- Services Angular / NgRx pour cache et synchronisation
- Chart.js / Recharts pour visualisations données
- WebSocket pour temps réel (scan QR, notifications)
- PWA avec Service Worker pour mode offline (Dashboard Partenaire)
2.2 Couche API Gateway
2.2.1 Kong API Gateway / Traefik
Configuration API Gateway
| Fonctionnalité | Configuration | Description |
|---|---|---|
| Rate Limiting | 100 req/min par utilisateur, 1000 req/min par IP |
Protection contre abus et DDoS |
| Authentication | Validation JWT (RS256) + refresh tokens |
Vérification identité à chaque requête |
| Load Balancing | Round-robin avec health checks |
Distribution équitable du trafic |
| Request Transform | Versioning API (v1, v2) |
Format standardisé des réponses |
| Logging | Centralisation vers Loki/Grafana |
Traçabilité complète des requêtes |
| Circuit Breaker | Seuil 50% erreurs sur 30s |
Protection contre cascading failures |
2.2.2 Structure des Endpoints API
/api/v1/auth/* → Auth Service (inscription, connexion, 2FA, tokens)
/api/v1/users/* → User Service (profil, préférences, RGPD)
/api/v1/merchants/* → Merchant Service (inscription, configuration)
/api/v1/transactions/* → Transaction Service (détection, historique)
/api/v1/points/* → Points Service (solde, QR code, paliers)
/api/v1/banking/* → Banking Service (card linking, virements)
/api/v1/notifications/*→ Notification Service (push, email, SMS)
2.3 Couche Services Métier (Backend)
2.3.1 Microservices NestJS
Microservices
| Service | Responsabilités | Technologies |
|---|---|---|
| Auth Service | Authentification, JWT RS256, 2FA, gestion sessions | NestJS, Passport.js, Redis |
| User Service | Gestion profils utilisateurs, KYC, droits RGPD | NestJS, Prisma, PostgreSQL |
| Merchant Service | Onboarding commerçants, configuration taux cashback, validation admin | NestJS, Prisma, Bull Queue |
| Transaction Service | Détection achats via webhooks bancaires, calcul cashback | NestJS, Prisma, Bull Queue |
| Points Service | Gestion points (crédit/débit), QR codes, paliers fidélité | NestJS, Redis, PostgreSQL |
| Banking Service | Card linking, initiation virements SEPA, webhooks bancaires | NestJS, SDK Budget Insight |
| Notification Service | Push (FCM), Email (SendGrid), SMS (Twilio), In-App | NestJS, Bull Queue |
2.3.2 Communication Inter-Services
Communication Synchrone (REST) :
- Requêtes client-facing via API Gateway
- Timeout : 5 secondes par défaut
- Retry policy : 3 tentatives avec exponential backoff (1s, 2s, 4s)
Communication Asynchrone (Bull Queue / Redis) :
- Events :
transaction.created,points.credited,user.registered,merchant.validated - Queues durables avec acknowledgment
- Dead Letter Queue pour messages en échec
- Priorité configurable par type d'event
2.4 Couche Données
2.4.1 PostgreSQL 15+ (Base Principale)
Configuration :
- Extensions activées : UUID-OSSP, pg_trgm (recherche texte)
- Master-Replica replication pour haute disponibilité
- Backup automatique quotidien avec rétention 30 jours
- Connection pooling avec PgBouncer
Tables Principales :
users: profils utilisateursmerchants: informations commerçantstransactions: historique achats détectéspoints_ledger: journal des mouvements de pointscards: cartes bancaires liées (tokens uniquement)withdrawals: demandes de virement bancaireloyalty_tiers: configuration paliers par commerçantqr_codes: QR codes générés (TTL 60 secondes)notifications: historique notifications
2.4.2 Redis 7+ (Cache et Sessions)
Utilisation Redis
| Usage | Clé | TTL | Description |
|---|---|---|---|
| Sessions utilisateurs | session:{userId} |
24h | Données de session JWT |
| Cache API | cache:api:{endpoint}:{params} |
Variable | Réponses API fréquentes |
| QR codes | qr:{code} |
60s | QR codes temporaires (règle métier) |
| Points bloqués | locked:{userId}:{qrCode} |
60s | Points réservés pendant génération QR |
| Rate limiting | rate:{ip} ou rate:{userId} |
60s | Compteurs de requêtes |
| Pub/Sub | channel:notifications |
- | WebSocket temps réel |
INFRASTRUCTURE CLOUD (CAPROVER)
3.1 Services Infrastructure CapRover
Services Docker
| Service | Utilisation | Configuration |
|---|---|---|
| Docker Containers | Containers microservices | Auto-scaling via CapRover |
| PostgreSQL Container | Base de données principale | PostgreSQL 15+, volumes persistants |
| Redis Container | Cache, sessions, queues | Redis 7+, Cluster mode |
| MinIO / Volume local | Stockage objets (images, documents) | Versioning, volumes persistants |
| Nginx/Traefik | CDN assets statiques | Let's Encrypt HTTPS |
| Traefik Load Balancer | Load Balancer | HTTPS termination, health checks |
| DNS externe | DNS | Cloudflare ou autre fournisseur |
| Prometheus + Grafana | Logs et monitoring | Métriques, alertes, dashboards |
| Variables d'env CapRover | Gestion secrets | API keys, credentials |
| Traefik middleware | Pare-feu applicatif | Protection OWASP Top 10 |
3.2 Architecture Réseau (VPC)
3.2.1 Configuration VPC
VPC CIDR : 10.0.0.0/16
Subnets publics : 10.0.1.0/24, 10.0.2.0/24 (Multi-AZ a et b)
Subnets privés App : 10.0.10.0/24, 10.0.11.0/24 (Multi-AZ)
Subnets privés Data: 10.0.20.0/24, 10.0.21.0/24 (Multi-AZ)
NAT Gateway : Accès internet sortant pour subnets privés
Docker Network : Réseau interne containers CapRover
3.2.2 Security Groups
Security Groups
| Security Group | Port | Source | Description |
|---|---|---|---|
ALB-SG |
443 | 0.0.0.0/0 |
HTTPS public |
App-SG |
3000 | ALB-SG |
Trafic depuis ALB uniquement |
DB-SG |
5432 | App-SG |
PostgreSQL depuis apps uniquement |
Redis-SG |
6379 | App-SG |
Redis depuis apps uniquement |
Bastion-SG |
22 | IP admin |
Accès SSH restreint |
3.3 Configuration par Environnement
Environnements
| Environnement | URL | Instances | Database | Redis |
|---|---|---|---|---|
| Dev | dev.api.rewapp.fr |
t3.small x 1 | db.t3.micro | cache.t3.micro |
| Staging | staging.api.rewapp.fr |
t3.small x 2 | db.t3.small | cache.t3.micro |
| Production | api.rewapp.fr |
t3.medium x 4 (auto-scale 2-10) | db.t3.medium Multi-AZ | cache.t3.small Cluster |
SÉCURITÉ DE L'ARCHITECTURE
4.1 Chiffrement des Données
4.1.1 Chiffrement au Repos
- PostgreSQL : Encryption via volumes Docker (AES-256)
- MinIO/Stockage : Encryption des volumes (AES-256)
- Docker Volumes : Encrypted by default
- Redis Container : Encryption at-rest activé
4.1.2 Chiffrement en Transit
- TLS 1.3 minimum pour toutes les communications
- Certificate Pinning sur application mobile
- VPN Site-to-Site pour connexions avec partenaire bancaire
- HTTPS obligatoire (HTTP redirection 301)
4.2 Authentification et Autorisation
4.2.1 Stratégie JWT (RS256)
Configuration JWT
| Token | Durée de Validité | Stockage | Usage |
|---|---|---|---|
| Access Token | 15 minutes | Mémoire (mobile), HttpOnly cookie (web) | Authentification requêtes API |
| Refresh Token | 7 jours | Keychain/Keystore (mobile), HttpOnly cookie (web) | Renouvellement access token |
Claims JWT :
sub: userId uniquerole: user, merchant, admin, superadminpermissions: tableau de permissions granulairesdeviceId: identifiant device pour détection fraudeexp: timestamp expiration
4.2.2 RBAC (Role-Based Access Control)
Rôles et Permissions
| Rôle | Accès | Permissions |
|---|---|---|
| User | App Mobile | Consultation solde, génération QR, demande virement |
| Merchant | Dashboard Partenaire | Scan QR, statistiques, configuration cashback |
| Admin | Dashboard Admin | Gestion utilisateurs, partenaires, modération |
| SuperAdmin | Dashboard Admin | Accès complet, configuration système, suppression |
4.2.3 2FA (Authentification à Deux Facteurs)
Configuration 2FA
OBLIGATOIRE pour : Dashboard Admin (tous les rôles)
OPTIONNEL pour : App Mobile, Dashboard Partenaire
Méthodes supportées : TOTP (Google Authenticator), SMS
4.3 Protection contre les Attaques
4.3.1 Protection OWASP Top 10
Mesures de Protection
| Vulnérabilité | Mesure de Protection |
|---|---|
| Injection SQL | Requêtes préparées via Prisma ORM, validation inputs |
| XSS | Content Security Policy (CSP), sanitization HTML, HttpOnly cookies |
| CSRF | Double Submit Cookies, SameSite=Strict |
| IDOR | UUID v4 non prédictibles, vérification ownership systématique |
| Broken Authentication | Rate limiting login, lockout après 5 tentatives, 2FA |
| Security Misconfiguration | Hardening serveurs, headers sécurité (HSTS, X-Frame-Options) |
| Insufficient Logging | Audit trail complet, alertes temps réel |
4.3.2 Protection DDoS et Rate Limiting
- Cloudflare/Traefik : Protection DDoS layer 3/4
- Traefik Middleware : Filtrage requêtes malveillantes layer 7
- Rate Limiting API Gateway :
100 requêtes/minute par utilisateur authentifié
1000 requêtes/minute par IP
5 tentatives de login/heure par compte
4.3.3 Sécurité QR Code
RÈGLE MÉTIER
QR Code valide 60 secondes, usage UNIQUE
- Signature HMAC-SHA256 avec clé secrète
- Points BLOQUÉS dès génération du QR code
- Validation côté serveur obligatoire avant débit
- Détection tentatives de replay (code déjà utilisé)
PERFORMANCE ET SCALABILITÉ
5.1 Stratégies de Cache
5.1.1 Cache Multi-Niveaux
Architecture de Cache
| Niveau | Technologie | Données Cachées | TTL |
|---|---|---|---|
| CDN | Nginx/Traefik |
Assets statiques (images, CSS, JS) | 1 an (versionné) |
| Application | Redis |
Réponses API fréquentes | Variable (5min - 1h) |
| Database | PostgreSQL Query Cache |
Requêtes complexes | Automatique |
5.1.2 Stratégies d'Invalidation
- TTL adaptatif : court pour données volatiles, long pour données stables
- Event-driven invalidation : invalidation cache lors de mise à jour données
- Cache warming : pré-chargement données fréquentes au démarrage
5.2 Auto-Scaling
5.2.1 Scaling Horizontal (Docker CapRover)
Règles d'Auto-Scaling
| Métrique | Seuil Scale-Out | Seuil Scale-In | Min/Max Tasks |
|---|---|---|---|
| CPU Utilization | > 70% | < 30% | 2 / 10 |
| Memory Utilization | > 80% | < 40% | 2 / 10 |
| Request Count | > 1000 req/min | < 500 req/min | 2 / 10 |
Cool-down
300 secondes entre actions de scaling
5.2.2 Scaling Database
- Read Replicas : Répartition charge lectures sur replicas
- Connection Pooling : PgBouncer pour optimiser connexions
- Partitioning : Tables volumineuses partitionnées par date (transactions)
5.3 Optimisations
5.3.1 Optimisations Backend
- Pagination curseur pour grandes listes (évite OFFSET)
- DataLoader pattern pour éviter N+1 queries
- Batch processing pour opérations lourdes (Bull Queue)
- Lazy loading des relations Prisma
5.3.2 Optimisations Frontend
- Code splitting et lazy loading des routes
- Optimisation images : WebP, compression, responsive
- Service Worker pour cache offline (Dashboard Partenaire PWA)
- Bundle size cible : < 200KB gzipped
5.3.3 Objectifs de Performance
MONITORING ET OBSERVABILITÉ
6.1 Stack de Monitoring
6.1.1 Métriques (Prometheus + Grafana)
- Métriques système : CPU, RAM, Disk, Network
- Métriques application : Requêtes/s, Latence, Taux d'erreur
- Métriques business : Transactions/jour, Points crédités, Conversions QR
- Dashboards personnalisés par équipe (Dev, Ops, Business)
6.1.2 Logs Centralisés (Loki / CapRover Logs)
Structure des logs (JSON) :
{
"timestamp": "2025-11-24T10:30:00.000Z", // Horodatage ISO 8601
"level": "INFO", // INFO, WARN, ERROR, DEBUG
"service": "auth-service", // Nom du microservice
"requestId": "req_abc123xyz", // Identifiant unique de requête
"userId": "usr_456def", // Utilisateur concerné (si applicable)
"message": "User authenticated successfully",// Description de l'événement
"metadata": { // Données contextuelles
"ip": "192.168.1.1",
"userAgent": "REWAPP-Mobile/1.0"
}
}
6.1.3 APM (Application Performance Monitoring)
- Tracing distribué : Suivi requêtes à travers microservices
- Real User Monitoring (RUM) : Performance côté client
- Profiling : Identification goulots d'étranglement
- Error tracking : Sentry pour capture et analyse erreurs
6.2 Alerting
Seuils d'Alertes
| Métrique | Seuil Warning | Seuil Critical | Action |
|---|---|---|---|
| API Latency P95 | > 300ms | > 500ms | Notification Slack |
| Error Rate | > 0.5% | > 1% | PagerDuty (astreinte) |
| CPU Usage | > 70% | > 85% | Auto-scaling + alert |
| Database Connections | > 70% | > 85% | Investigation immédiate |
| Disk Usage | > 70% | > 85% | Nettoyage + extension |
| Failed Login Attempts | > 10/min | > 50/min | Blocage IP + investigation |
CI/CD PIPELINE
7.1 Pipeline de Déploiement
7.1.1 Outils
Stack CI/CD
| Outil | Usage |
|---|---|
| GitHub | Source Control, code reviews |
| GitHub Actions | CI/CD automation |
| Amazon ECR | Registry images Docker |
| Terraform | Infrastructure as Code (IaC) |
| CapRover Config | Configuration par environnement |
7.1.2 Workflow CI/CD
1. Commit et Push
Développeur pousse sur feature branch
2. Tests automatiques
Unit tests, integration tests, linting, security scan
3. Build Docker
Construction image et push vers Amazon ECR
4. Deploy Staging
Déploiement automatique sur environnement staging
5. Tests E2E
Tests end-to-end avec Cypress
6. Approval
Review manuelle obligatoire pour production
7. Deploy Production
Blue-Green deployment avec rollback automatique si erreur
7.2 Environnements
Stratégie de Branches
| Environnement | Branche | Déploiement | Approbation |
|---|---|---|---|
| Dev | develop |
Automatique (push) | Non |
| Staging | main |
Automatique (merge) | Non |
| Production | main + tag |
Manuel | Oui (2 reviewers) |
INTÉGRATIONS TIERCES
8.1 Solution Bancaire (Card Linking)
8.1.1 Fournisseur Recommandé : Budget Insight
Fonctionnalités Budget Insight
| Fonctionnalité | Description |
|---|---|
| Card Linking | Liaison carte bancaire de l'utilisateur |
| Transaction Detection | Webhooks temps réel pour achats détectés |
| Merchant Identification | Identification automatique du commerçant |
| PCI DSS Compliance | Tokenisation des données carte (aucune donnée carte stockée par REWAPP) |
Alternatives
Plaid, Tink, TrueLayer
8.1.2 Webhooks Bancaires
card.linked: Nouvelle carte liéecard.removed: Carte retiréetransaction.created: Nouvel achat détectétransaction.updated: Mise à jour transaction (confirmation)
8.1.3 Virements SEPA
Provider BaaS
Treezor, Swan ou Mangopay
- API REST pour initiation virements
- Batch processing nocturne (2h00)
- Réconciliation automatique avec webhooks
- Délai : 2-3 semaines maximum (règle métier REWAPP)
8.2 Services de Communication
8.2.1 Notifications Push (Firebase Cloud Messaging)
Types de Notifications
| Type Notification | Déclencheur | Exemple |
|---|---|---|
| Transaction détectée | Webhook bancaire | +15 points chez Boulangerie Martin ! |
| Points crédités | Validation transaction | Vos 15 points sont disponibles |
| Expiration points | J-30, J-7 avant expiration | 50 points expirent dans 7 jours |
| Promotion | Admin/Merchant dashboard | Double points chez nos partenaires ce weekend ! |
| Virement effectué | Confirmation virement | Virement de 19,00€ effectué |
8.2.2 Email (SendGrid)
- Templates transactionnels : Confirmation inscription, réinitialisation mot de passe
- Templates marketing : Newsletter, promotions (opt-in)
- Bounce handling et suppression automatique
- Suivi delivery et open rates
8.2.3 SMS (Twilio)
- Usage restreint : 2FA et alertes critiques uniquement
- Opt-out management RGPD compliant
- Fallback si échec push notification
8.3 Analytics et Tracking
8.3.1 Google Analytics 4
Événements trackés :
signup_started,signup_completedcard_linkedtransaction_detectedqr_generated,qr_scannedwithdrawal_requested,withdrawal_completed
8.3.2 Mixpanel
- Funnel analysis : Inscription → Liaison carte → 1ère transaction
- Cohort retention analysis : Rétention J7, J30, J90
- A/B testing framework pour optimisation UX
8.3.3 Sentry (Error Tracking)
- Capture automatique des erreurs frontend et backend
- Stack traces avec contexte utilisateur
- Alertes temps réel sur nouvelles erreurs
- Release tracking pour corrélation erreurs/déploiements
CONCLUSION
9.1 Récapitulatif de l'Architecture
L'architecture technique de REWAPP a été conçue pour répondre aux exigences de scalabilité, performance et sécurité d'une plateforme de cashback moderne.
Synthèse des Choix Techniques
| Axe | Solution Retenue | Bénéfice |
|---|---|---|
| Scalabilité | Microservices + Auto-scaling Docker | Support 30K → 300K utilisateurs |
| Performance | Cache multi-niveaux + CDN | Temps de réponse < 200ms |
| Sécurité | Chiffrement AES-256 + JWT RS256 + 2FA | Conformité RGPD/PCI DSS |
| Résilience | Multi-AZ + Circuit Breaker | Disponibilité 99.9% |
| Observabilité | Prometheus/Grafana + Sentry | Monitoring proactif |
9.2 Points Clés
- Architecture cloud-native sur CapRover + Docker
- Microservices découplés avec NestJS
- Base PostgreSQL avec Prisma ORM
- Cache Redis pour performance et sessions
- Bull Queue pour traitement asynchrone
- Sécurité intégrée (Security by Design)
- CI/CD automatisé avec GitHub Actions
- Monitoring complet avec alerting
9.3 Évolutions Futures Prévues
L'architecture est conçue pour supporter les évolutions suivantes :
- Migration Kubernetes : Orchestration avancée pour phase de scale
- GraphQL API : Flexibilité accrue pour les clients
- Machine Learning : Détection fraude et recommandations personnalisées
- Multi-région : Expansion européenne (Belgique, Suisse)
Conclusion
Cette architecture technique constitue une base solide pour le développement et la croissance de REWAPP, garantissant une expérience utilisateur optimale tout en maintenant les standards les plus élevés en termes de sécurité et de performance.