PerfShop — Documentation technique¶
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. Cette documentation est la bible technique de référence pour comprendre l'architecture, les APIs, les chaos disponibles, les métriques et l'écosystème complet.
Cette documentation n'est pas un manuel de TP. Les travaux pratiques sont vendus séparément avec la licence commerciale et hébergés sur un portail dédié. Cette référence couvre la plateforme elle-même : son code, ses composants, ses interfaces, ses choix de conception.
Elle s'adresse aux professeurs qui animent des formations, aux étudiants qui veulent comprendre ce qui se passe sous le capot, aux développeurs curieux qui explorent un écosystème d'observabilité moderne, et aux équipes QA qui cherchent un terrain d'entraînement partagé. Voir Pour qui pour le détail des publics cibles.
L'écosystème en un diagramme¶
flowchart TB
subgraph Users[Utilisateurs]
Prof[👨🏫 Formateur]
Student[🎓 Étudiants]
Dev[👨💻 Développeurs]
end
subgraph Entry[Point d'entrée]
Welcome[🏠 Welcome page<br/>liste des services]
end
subgraph Apps[Applications]
Shop[🛒 Shop React<br/>frontend e-commerce]
ChaosAdmin[⚡ chaos-admin<br/>panneau formateur + page étudiant]
MonitoringHTML[📊 Monitoring HTML<br/>dashboard temps réel]
ScriptsUI[📜 Scripts UI]
JMeterUI[⚡ JMeter UI]
Docs[📚 MkDocs<br/>cette documentation]
end
subgraph Backend[Backend]
SpringBoot[☕ Spring Boot 3.2<br/>+ Java 21]
MySQL[(🗄️ MySQL 8)]
end
subgraph Obs[Observabilité]
Prometheus[Prometheus]
Grafana[Grafana]
Loki[Loki]
Tempo[Tempo]
Pyroscope[Pyroscope]
OpenSearch[OpenSearch]
end
subgraph QA[Stack QA]
SquashTM[Squash TM]
Selenium[Selenium Grid]
TestRunner[Test Runner<br/>Robot + pytest]
Forgejo[Forgejo Git]
end
Users --> Welcome
Welcome --> Shop
Welcome --> ChaosAdmin
Welcome --> MonitoringHTML
Welcome --> Docs
Shop --> SpringBoot
ChaosAdmin --> SpringBoot
MonitoringHTML --> SpringBoot
ScriptsUI --> SpringBoot
JMeterUI --> SpringBoot
SpringBoot --> MySQL
SpringBoot -.métriques.-> Prometheus
SpringBoot -.logs.-> Loki
SpringBoot -.traces.-> Tempo
SpringBoot -.profils.-> Pyroscope
SpringBoot -.logs.-> OpenSearch
Prometheus --> Grafana
Loki --> Grafana
Tempo --> Grafana
Pyroscope --> Grafana
QA --> SpringBoot
PerfShop est un écosystème complet : backend Spring Boot 3.2 + Java 21, frontend React 18 + Vite, base MySQL 8, observabilité Prometheus/Grafana/Loki/Tempo/Pyroscope/OpenSearch, stack QA Selenium/Squash TM/JMeter/test-runner polyglotte, Git auto-hébergé Forgejo. Un seul docker compose up démarre l'intégralité.
Les treize sections de cette documentation¶
🏁 Présentation¶
Le « pourquoi » de PerfShop. Cette section explique la philosophie pédagogique, les publics cibles, les conditions de licence, et fournit un glossaire complet du vocabulaire utilisé dans le reste de la documentation.
🏗️ Architecture¶
Le « comment » technique. Vue d'ensemble du système, stack technique, topologie de déploiement, schéma de données, flux d'authentification, gestion multi-session pédagogique, composition Docker, réseau et domaines.
- Vue d'ensemble
- Stack technique
- Topologie de déploiement
- Schéma de données
- Flux d'authentification
- Multi-session pédagogique
- Docker Compose
- Réseau et domaines
👁️ Observabilité¶
La colonne vertébrale de diagnostic de PerfShop. Métriques Prometheus, dashboards Grafana, logs Loki et Promtail, traces Tempo, profils Pyroscope, logs alternatifs OpenSearch, et dashboard HTML simplifié.
- Vue d'ensemble
- Prometheus
- Grafana
- Dashboards livrés
- Loki et Promtail
- Tempo (OpenTelemetry)
- Pyroscope
- OpenSearch et Vector
- Dashboard HTML temps réel
🧪 Stack QA¶
Outils de gestion et d'exécution de tests intégrés à la plateforme : Squash TM pour la gestion de cas de test, Squash Orchestrator pour les exécutions automatisées, Selenium Grid, un test runner polyglotte Robot Framework + pytest, JMeter et son lanceur web, Scripts UI pour l'édition en ligne, Forgejo comme serveur Git auto-hébergé.
- Vue d'ensemble
- Squash TM
- Squash Orchestrator
- Selenium Grid
- Test Runner polyglotte
- JMeter et JMeter UI
- Scripts UI
- Forgejo (Git auto-hébergé)
⚡ Chaos Engineering¶
Le cœur pédagogique de PerfShop. Sept familles de chaos activables à la demande : Performance backend, 20 scénarios météo pré-câblés, Chaos Fonctionnel (exceptions Java), Chaos Métier (16 anomalies silencieuses), Chaos Sécurité (12 failles OWASP), Chaos Scripting (tokens rotatifs HMAC), Chaos Frontend (CPU burn, memory leak, DOM flood), et référence exhaustive des métriques Prometheus exposées.
- Introduction
- Chaos Performance
- Scénarios météo
- Chaos Fonctionnel
- Chaos Métier
- Chaos Sécurité
- Chaos Scripting
- Chaos Frontend
- Référence des métriques
🎓 Parcours pédagogique¶
Le sous-système escape room de PerfShop. Concept et architecture, cinq niveaux BAC1 à BAC5, système d'énigmes, code agent dynamique, système d'étoiles, indices et progression, page de succès standalone, thèmes finaux.
- Concept et architecture
- Niveaux BAC1 à BAC5
- Système d'énigmes
- Code agent dynamique
- Système d'étoiles
- Indices et progression
- Page de succès
- Thèmes finaux
🔌 Référence API¶
Documentation exhaustive des endpoints REST exposés par le backend Spring Boot : catalogue, panier, commandes, profil utilisateur, référentiel pays, administration, portail admin vulnérable, chaos-admin, chaos étudiant, pédagogique étudiant, licence.
- Vue d'ensemble
- Conventions
- Authentification
- Catalogue produits
- Panier
- Commandes
- Profil utilisateur
- Pays
- Administration
- Portail admin
- Chaos (admin)
- Chaos étudiant
- Pédagogique étudiant
- Licence
🖥️ Interfaces¶
Description détaillée de chaque interface utilisateur : frontend e-commerce React, page chaos étudiant (6 onglets), monitoring étudiant HTML, panneau chaos-admin formateur, portail admin vulnérable (surface S10-S12), page d'accueil welcome.
- Frontend e-commerce
- Page chaos étudiant
- Monitoring étudiant
- Chaos admin (formateur)
- Portail admin
- Page d'accueil welcome
🔒 Sécurité et licence¶
Les mécanismes de protection et de contrôle d'accès : système de licence RSA-PSS 2048 avec intégrité par hash, authentification admin (sessions + X-Admin-Token), règles freemium et niveaux Master.
🛠️ Développement local¶
Comment récupérer le code, lancer la stack, itérer sur le backend ou le frontend, et contribuer via Forgejo.
- Prérequis
- Cloner depuis Forgejo
- Lancer Docker Compose
- Build backend
- Build frontend
- Workflow Git Forgejo
🌍 Internationalisation¶
Stratégie globale FR/EN (et cinq langues cibles), dictionnaires backend, frontend, énigmes pédagogiques, outils annexes. Une seule variable d'environnement — PERFSHOP_LANG — propagée à toute la stack.
📖 Guides¶
Guides pratiques orientés cas d'usage : démarrage rapide, guide étudiant, création de scripts JMeter custom, scénarios hackathon et formation, configuration Squash TM et Squash Orchestrator, guides Robot Framework, Forgejo, Scripts UI, et activation de licence.
- Démarrage rapide
- Guide étudiant
- Créer un script JMeter custom
- Scénario hackathon
- Scénario formation
- Configuration Squash TM
- Configuration Squash Orchestrator
- Guide Robot Framework
- Guide Forgejo
- Guide Scripts UI
- Système de licence
📎 Annexes¶
Références exhaustives utiles à tout moment : variables d'environnement, schéma complet de la base de données, et foire aux questions techniques.
Licence¶
PerfShop est publié sous double licence :
- AGPL-3.0-or-later pour l'usage open source — utilisation, modification, redistribution libres sous réserve de publier les modifications si l'instance est exposée en réseau
- 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, accès à la bibliothèque de TP clés en main
Voir Licence (résumé) et Système de licence (technique) pour le détail.
Contact¶
- Auteur — Philippe Naveau
- Email — contact@perfshop.io
- Site — perfshop.io
- Licence — AGPL-3.0-or-later / commerciale duale