PerfShop — Plateforme de Chaos Engineering Pédagogique¶
-
Architecture
Stack technique, Docker Compose, réseau et domaines
-
Développement
Backend Spring Boot, Frontend React, Monitoring Node.js
-
Chaos Engineering
Anomalies backend, frontend, scripting, métier et sécurité
-
Monitoring
Dashboard HTML, Grafana, Prometheus
-
Licence
Plans, activation, révocation, fonctionnement offline-first
Qu'est-ce que PerfShop ?¶
PerfShop est une application e-commerce volontairement dégradable conçue pour les formations, hackathons et démos autour des tests de performance et du chaos engineering.
Elle permet d'injecter des anomalies en temps réel et d'observer leur impact sur les métriques système et applicatives via un monitoring dédié et des dashboards Grafana.
🌐 Services disponibles¶
Stack principale¶
| Service | Local | Production |
|---|---|---|
| 🛒 Application | localhost:9091 | perfshop.perfshop.io |
| 📊 Monitoring | localhost:3001 | perfshop-monitoring.perfshop.io |
| 📈 Grafana | localhost:3002 | perfshop-grafana.perfshop.io |
| 💥 Chaos Admin | localhost:3003 | perfshop-chaos.perfshop.io |
| 🔧 Admin | localhost:3004 | perfshop-admin.perfshop.io |
| 📚 Documentation | localhost:9087 | perfshop-docs.perfshop.io |
| 🔌 API Backend | localhost:9080 | perfshop-api.perfshop.io |
Stack JMeter¶
| Service | Local | Production |
|---|---|---|
| ⚡ JMeter UI | localhost:3005 | perfshop-jmeter.perfshop.io |
Stack QA pédagogique (Phase 9 & 10)¶
| Service | Local | Production | Login |
|---|---|---|---|
| 🧪 Squash TM | localhost:9086/squash | perfshop-squash.perfshop.io/squash | admin / perfshop |
| 🔬 Selenium VNC | localhost:7900 | perfshop-selenium.perfshop.io | — |
| 🦊 Forgejo Git | localhost:3009 | perfshop-git.perfshop.io | forgejo-admin / PerfShop2026! |
| 📝 Scripts UI | localhost:3008 | perfshop-scripts.perfshop.io | admin@perfshop.fr / perfshop |
Anomalies disponibles¶
🔧 Chaos Backend (sliders 0–100%)¶
| Anomalie | Impact observable |
|---|---|
| CPU Burn | CPU container monte, temps de réponse augmente |
| Memory Leak | Heap JVM monte continûment, GC s'emballe |
| Thread Pool | Threads Tomcat saturés, requêtes en attente |
| DB Pool | Connexions HikariCP épuisées, timeouts BDD |
| Slow Query | Latence p99 explose sur /api/products |
| Deadlock | Erreurs 503, threads bloqués indéfiniment |
| Network Delay | Temps de réponse HTTP augmente uniformément |
🖥️ Chaos Frontend (sliders 0–100%)¶
| Anomalie | Impact observable |
|---|---|
| CPU Burn | FPS chute, Long Tasks/s monte, navigateur freeze |
| Memory Leak | Heap JS monte continûment (plafond 1.2 Go) |
| DOM Flood | Noeuds DOM oscillent, reflows synchrones |
| Fetch Flood | Jusqu'à 200 req/s, réseau OUT container monte |
🔐 Chaos Scripting (niveaux 0–4)¶
| Niveau | Nom | Difficulté |
|---|---|---|
| 0 | Désactivé | — |
| 1 | Junior | X-Session-Token + X-Request-ID |
| 2 | Confirmé | + X-Action-Token (expire 30s) |
| 3 | Expert | + HMAC-SHA256 rotatif, séquence step1→4 |
| 4 | Maestro | Clé HMAC dérivée du sessionToken |
💼 Chaos Métier (niveaux 0–3)¶
| Niveau | Nom | Anomalies actives |
|---|---|---|
| 0 | Désactivé | 0 |
| 1 | Junior | 3 (A1 TVA, A2 Arrondi, A3 Stock) |
| 2 | Confirmé | 7 (+ A4 Email, A5 Double commande, A6 Promo, A7 Délai) |
| 3 | Expert | 11 (+ A8 Race condition, A9 Injection logs, A10 Historique, A11 Token logout) |
🔒 Chaos Sécurité (niveaux 0–4)¶
| Niveau | Nom | Failles actives |
|---|---|---|
| 0 | Désactivé | 0 |
| 1 | Junior | 3 (S1 SQL Injection, S2 IDOR, S3 Hash exposé) |
| 2 | Confirmé | 6 (+ S4 XSS stocké, S5 Prix falsifié, S6 Timing Attack) |
| 3 | Expert | 9 (+ S7 Token HMAC faible, S8 Path Traversal, S9 Mass Assignment) |
| 4 | Master | 12 (+ S10 Stats portail sans auth, S11 SQLi portail, S12 Privesc IDOR) |
Règle d'or
Avec les bonnes données de test, une commande doit toujours pouvoir aboutir, quel que soit le niveau de chaos actif. Les anomalies sont pédagogiques — elles ne bloquent pas le parcours.