Qu'est-ce que PerfShop¶
PerfShop est une plateforme pédagogique de chaos engineering qui matérialise, sur une application e-commerce réaliste, tous les types d'anomalies qu'un professionnel du test et de la performance rencontre dans sa carrière. L'objectif n'est pas d'apprendre à construire un shop — c'est de fournir aux professeurs et aux étudiants un terrain d'entraînement dans lequel provoquer des incidents, les diagnostiquer, les observer et les résoudre.
Le concept en une phrase¶
Un shop e-commerce classique sur lequel un formateur peut, en un clic, déclencher une fuite mémoire, une injection SQL, un arrondi de TVA silencieux, un deadlock MySQL ou une élévation de privilèges OWASP — et observer ses étudiants en train de les identifier dans Grafana, Loki, Tempo et Pyroscope.
Ce que PerfShop n'est pas¶
- Ce n'est pas un vrai e-commerce. Il n'a aucun objectif marchand — c'est une simulation réaliste mais entièrement locale et déconnectée de tout circuit de paiement réel.
- Ce n'est pas un manuel de TP. Cette documentation décrit la plateforme et ses composants ; les travaux pratiques eux-mêmes sont vendus séparément avec la licence commerciale et hébergés sur un portail dédié.
- Ce n'est pas une boîte noire. Le code est ouvert sous licence AGPL-3.0-or-later et cette documentation est conçue pour que n'importe qui puisse comprendre et modifier la plateforme.
- Ce n'est pas un outil de production. Les « failles » injectées par PerfShop sont volontaires et activées à la demande. Sur une vraie application marchande, elles seraient des bugs graves à corriger.
Ce que PerfShop est¶
- Une bible pédagogique — chaque type d'incident que peut rencontrer un ingénieur test ou perf (CPU burn, OOM, SQLi, race condition, timing attack, cascade d'exceptions, anomalies métier silencieuses, etc.) est reproduit de façon contrôlée, isolable et observable.
- Un écosystème complet — backend Spring Boot 3.2 + frontend React 18 + base MySQL 8 + observabilité Prometheus/Grafana/Loki/Tempo/Pyroscope/OpenSearch + stack QA complète (Selenium, Squash TM, JMeter, test-runner polyglotte, Forgejo).
- Une plateforme réelle et prête à l'emploi — un
docker compose upsuffit à démarrer l'intégralité de la stack, sans installation manuelle d'aucun composant. - Un support de formation modulable — le formateur choisit quels chaos activer, à quel niveau (0-4), selon la progression pédagogique souhaitée.
Les sept familles de chaos¶
PerfShop regroupe ses anomalies en sept familles couvrant tout le spectre des problèmes rencontrés dans une application web moderne :
| Famille | Couverture | Exemple d'incident |
|---|---|---|
| Performance | CPU, mémoire, GC, pool de connexions DB, threads, requêtes lentes, deadlocks, réseau | OutOfMemoryError progressif sur la JVM |
| Scripting | Corrélation HTTP, tokens rotatifs, signatures HMAC, expirations | CSRF token régénéré à chaque étape checkout |
| Frontend | CPU burn navigateur, fuite mémoire JS, DOM flood, fetch flood | Freeze de l'UI par Web Worker qui calcule en boucle |
| Métier | TVA, arrondis, stock, promo, fidélité, devise, frais de port | TVA 19,6% au lieu de 20% — anomalie silencieuse |
| Fonctionnel | Exceptions Java réelles | NullPointerException dans processPaymentPublic() |
| Sécurité | OWASP Top 10 | SQLi sur /api/products/search |
| Pédagogique | Parcours escape room multi-niveaux | 100 énigmes sur BAC1-BAC5 |
Chaque famille est documentée en détail dans sa section dédiée. Voir Chaos Engineering pour la vue d'ensemble.
Le parcours pédagogique¶
En plus des chaos techniques, PerfShop intègre un parcours escape room de 100 énigmes réparties sur cinq niveaux (BAC1 à BAC5). L'étudiant y incarne un agent qui doit explorer le catalogue, identifier des produits, résoudre des énigmes mathématiques et cryptographiques, trouver des mots de passe, et valider sa progression étape par étape. Le parcours complet dure plusieurs heures et peut servir d'évaluation, de hackathon ou de support de cours.
Voir Concept et architecture du parcours pédagogique.
Philosophie pédagogique¶
Trois principes guident la conception de PerfShop :
1. Le code doit toujours être fonctionnel sans chaos actif¶
Quand tous les chaos sont à zéro, PerfShop est une application e-commerce parfaitement saine. Les règles métier sont correctes, les failles de sécurité sont absentes, les performances sont nominales. C'est l'état de référence vers lequel on revient toujours entre deux exercices.
Cette règle a une conséquence importante : le code « propre » et le code « corrompu » cohabitent dans le même repository, séparés par des drapeaux contrôlés par les services BusinessChaosService, SecurityChaosService, etc. Le prof active ce qu'il veut sans jamais toucher au code source.
2. Les incidents doivent être observables¶
Tout chaos activé doit être visible dans au moins un outil d'observabilité : métriques Prometheus, logs Loki, traces Tempo, profils Pyroscope, ou monitoring HTML temps réel. L'étudiant doit avoir une chance de diagnostiquer par lui-même ce qui se passe.
Les seules exceptions sont les chaos volontairement silencieux — niveau Master Fonctionnel (F4 : corruption de données sans exception, HTTP 200, tracing vert), Master Business (anomalies A12-A16 invisibles sauf inspection JSON). Ces cas spéciaux sont pédagogiquement intéressants : ils apprennent aux étudiants qu'un monitoring vert ne garantit pas un comportement correct.
3. La plateforme doit être contrôlée par le formateur¶
Le formateur dispose d'un panneau unifié (chaos-admin) qui lui permet d'activer ou désactiver n'importe quel chaos en un clic. Les étudiants ont accès à une version limitée du panneau (la page étudiant) qui leur permet d'expérimenter dans un bac à sable, mais le formateur garde toujours la main via un toggle « mode étudiant » qui peut verrouiller toutes les commandes des étudiants.
Voir Chaos admin (formateur) et Page chaos étudiant.
Historique¶
PerfShop est conçu et développé par Philippe Naveau, consultant en tests de performance chez Sogeti/Capgemini France. Le projet est né d'un constat simple : les ingénieurs test et perf apprennent leurs métiers sur le tas, au fil d'incidents en production, sans terrain d'entraînement sûr où ils peuvent provoquer des bugs et observer leurs effets. Les formations existantes expliquent les concepts (cache miss, memory leak, SQL injection…) mais ne mettent jamais le stagiaire en situation d'en voir un en vrai.
PerfShop comble ce vide en offrant une application réaliste dans laquelle le formateur peut provoquer à la demande chaque type d'incident connu. Chaque chaos est soigneusement dosé pour ne pas déborder — une fuite mémoire peut être limitée à 80 % de heap sans faire crasher la JVM, un CPU burn peut être ajusté au pourcentage près, un SQLi est contenu dans la fonctionnalité de recherche sans affecter le reste de la base.
Le projet combine l'expérience terrain de son auteur (LoadRunner / JMeter / Tempo / Grafana / OpenTelemetry) avec un objectif pédagogique affirmé.
Licence¶
PerfShop est publié sous double licence : AGPL-3.0-or-later pour l'usage open source, et licence commerciale pour les usages qui ne peuvent pas satisfaire les obligations de l'AGPL (formation vendue à des tiers, intégration dans un produit propriétaire, etc.).
Voir Licence pour le résumé, et Système de licence pour le détail technique.
Contact¶
- Auteur — Philippe Naveau
- Email — contact@perfshop.io
- Site — perfshop.io
Voir aussi¶
- Pour qui — les publics cibles de PerfShop
- Licence — résumé AGPL + commerciale
- Glossaire — vocabulaire employé dans cette documentation
- Chaos Engineering — catalogue des chaos disponibles
- Concept et architecture du parcours pédagogique