Devoxx France 2026 — Tools in Action
Vos APIs ont pris un peu de poids ? Elles consomment plus que nécessaire ? Pas de panique, on sort la boîte à outils pour leur faire un Green relooking !
Appliquer pas à pas le framework API Green Score sur une API réelle, avec des outils open-source et des métriques concrètes, pour obtenir une API plus légère, plus rapide, et un impact environnemental réduit.
- DE11 Pagination, DE08 Filtering, US01 Query params
- DE01/USXX Compression (Gzip), DE02/DE03 HTTP Cache (ETag/304)
| Catégorie | Règle | Description | Points |
|---|---|---|---|
| Data Exchange | DE11 | Pagination obligatoire | 15 |
| Data Exchange | DE08 | Filtrage de champs (fields=) |
25 |
| Data Exchange | DE01 | Compression (Gzip/Brotli) | 30 |
| Usage | LO01 | Observabilité (logs payload/latence) | 15 |
| Usage | US07 | Rate Limiting | 15 |
| Total | 100 |
green-api-workshop-devoxx/
├── green-api-baseline/ # 🔴 API naïve (AVANT) — port 8080
│ ├── src/main/java/ # Pas de pagination, pas de cache, pas de compression
│ └── pom.xml
├── green-api-optimized/ # 🟢 API optimisée (APRÈS) — port 8081
│ ├── src/main/java/ # Pagination, fields, gzip, ETag, delta, range, CBOR
│ └── pom.xml
├── scripts/ # 📊 Scripts de mesure curl
│ ├── green-score-analyzer.sh # 🌿 Analyseur automatisé + calcul Green Score
│ ├── measure_baseline.sh
│ ├── measure_optimized.sh
│ └── ...
├── dashboard/ # 📈 Dashboard HTML de restitution
│ └── index.html # Scores, graphiques avant/après, historique
├── reports/ # 📄 Rapports JSON générés
├── docs/slides/ # 🎤 Slides de présentation
├── .github/workflows/ # 🤖 CI GitHub Actions
│ └── pr-green-api.yml # Build + Green Score + Spectral lint
├── .spectral.yml # 🔬 Règles Spectral OpenAPI (éco-conception)
├── docker-compose.yml # 🐳 Orchestration Docker
├── WORKSHOP.md # 📝 Déroulé clé-en-main (50 min)
├── CHECKLIST.md # ✅ Checklist de review
├── MAPPING.md # 🗺️ Mapping pratiques → règles
└── ADVANCED.md # 🚀 Exercices avancés
⚠️ ATTENTION — Les options ci-dessous sont EXCLUSIVES. Choisissez une seule option de démarrage. Ne les lancez pas en parallèle : chaque option démarre les mêmes services sur les mêmes ports.
- Java 17+
- Maven 3.9+
curl- Python 3 (pour le script d'analyse)
- Docker ou Podman & Docker/Podman Compose (optionnel) (en fonction il faudra adapter les commandes de démarrage du compose)
- Node.js (optionnel, pour Spectral)
🐧 Linux / macOS
# Dataset plus gros pour accentuer le contraste avant/après DATASET_SIZE=1000000 bash scripts/start.sh --analyze # Avec affichage du rapport JSON complet (debug) : DATASET_SIZE=1000000 bash scripts/start.sh --analyze --debug
🐧 Linux / macOS
# Terminal 1 — Démarrage des services (API + Dashboard) podman compose down --remove-orphans 2>/dev/null || true podman compose up --build --force-recreate # Terminal 2 — Analyse automatisée # Dataset plus gros pour accentuer le contraste avant/après DATASET_SIZE=1000000 bash scripts/start_light.sh --analyzeA la fin pour nettoyer les ressources, depuis un terminal utilisez : la commande
docker compose down --remove-orphansoupodman compose down --remove-orphansselon votre choix de conteneurisation.
🐧 Linux / macOS: sur 3 terminaux en //
# Terminal 1 — Baseline (API naïve, port 8080) cd green-api-baseline && mvn spring-boot:run **NB: Il faudra faire un Ctrl+C dans ce terminal pour arrêter l API à la fin.** # Terminal 2 — Optimized (API green, port 8081) cd green-api-optimized && mvn spring-boot:run **NB: Il faudra faire un `Ctrl+C` dans ce terminal pour arrêter l API à la fin.** # Terminal 3 — Analyse automatisée bash ./scripts/green-score-analyzer_withdiscovery.sh # Avec affichage du rapport JSON complet (debug) : bash ./scripts/green-score-analyzer_withdiscovery.sh --debug
🐧 Linux / macOS
# Terminal 1 — Démarrage des services (API + Dashboard) docker compose up --build # → Baseline: http://localhost:8080 # → Optimized: http://localhost:8081 # → Dashboard: http://localhost:3000 # Terminal 2 — Analyse automatisée bash scripts/green-score-analyzer_withdiscovery.shNB: A la fin pour nettoyer les ressources, depuis terminal 1 utilisez : la commande
ctrl + cet ensuite une des commandes suivantesdocker compose down --remove-orphansoupodman compose down --remove-orphansselon votre choix de conteneurisation.
🐧 Linux / macOS
# Terminal 1 — Démarrage des services (API + Dashboard) podman compose down --remove-orphans 2>/dev/null || true podman compose up --build # → Baseline: http://localhost:8080 # → Optimized: http://localhost:8081 # → Dashboard: http://localhost:3000 # Terminal 2 — Analyse automatisée bash scripts/green-score-analyzer_withdiscovery.shNB: A la fin pour nettoyer les ressources, depuis terminal 1 utilisez : la commande
ctrl + cet ensuite une des commandes suivantesdocker compose down --remove-orphansoupodman compose down --remove-orphansselon votre choix de conteneurisation.
Ouvrez http://localhost:3000 dans votre navigateur pour visualiser : (ou en fallback, ouvrez dashboard/index.html directement)
- 🌿 Green Score /100 avec grade (A+ → E)
- 📋 Détail par règle API Green Score
- 📊 Comparaison avant/après (barres visuelles)
- 🔑 Métriques clés (payload, compression, 304)
- 📐 Table de mesures détaillée par endpoint
- 📈 Historique des scores (tracking dans le temps)
Le dashboard charge automatiquement reports/latest-report.json ou permet de charger manuellement un rapport.
| Format | Fichier | Rendu |
|---|---|---|
| HTML interactif | dashboard/index.html |
Ouvrir localement ou via GitHub Pages |
| Markdown | dashboard/index.md |
Visible directement sur GitHub |
| GitHub Pages | Déployé automatiquement sur main |
https://<user>.github.io/<repo>/ |
Le fichier
index.mdest généré automatiquement à chaque analyse et contient la même information que le dashboard HTML (score, détail, mesures, spectral).
🤖 Automatisation CI: vous avez un exemple de github action dans ce repo qui montre comment automatiser l'analyse du Green Score ./.github/workflows/pr-green-api.yml
Chaque PR déclenche automatiquement :
- Build des deux modules
- Green Score Analysis — démarre les 2 APIs, exécute l'analyseur, vérifie les assertions
- Spectral Lint — valide l'OpenAPI spec contre les règles Green API
- Commentaire PR — poste le score détaillé directement sur la PR
.github/workflows/pr-green-api.yml: build, analyse, assertions, commentaire PR.spectral.yml: règles OpenAPI éco-conception- Le score est posté automatiquement sur chaque PR
- API Green Score — Référentiel de règles
- API Green Score — Backend
- API Green Score — Training
- Spectral — OpenAPI Linter
- Devoxx France
- Déroulé clé-en-main (50 min)
- Checklist de review
- Mapping pratiques → règles
- Exercices avancés
- Slides :
docs/slides/
MIT — Libre d'utilisation, de modification et de redistribution.