Files
serv_benchmark/10_roadmap_evolutions.md
2025-12-07 14:16:58 +01:00

217 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 10 Roadmap & évolutions futures pour Linux BenchTools
Objectif : lister les évolutions possibles de lapplication, organisées par phases, avec une vision
à court, moyen et long terme. Ce fichier sert de base pour prioriser les développements.
---
# 1. Vision globale
Linux BenchTools doit évoluer depuis un simple serveur de benchmarks centralisés vers :
- Un **inventaire matériel dynamique** de ton parc.
- Un **historique de performance** exploitable (avant/après upgrade, changement de config, etc.).
- Un **outil daide à la décision** (quelle machine est la plus adaptée pour tel usage).
- Un **hub de diagnostics** (détection de régression de perf, disques fragiles, réseau bridé…).
---
# 2. Phase 1 MVP (déjà spécifiée dans les fichiers 01 → 09)
Fonctionnalités :
- Réception de benchmarks via `bench.sh`
- Stockage dans SQLite
- Dashboard avec classement des machines
- Détail device + historique de benchmarks
- Liens constructeur
- Upload de documents (PDF, images)
- Script dinstallation (Docker / compose)
Objectif :
Avoir une base utilisable **en production perso** sur ton infra maison.
---
# 3. Phase 2 Améliorations UX & stabilité
## 3.1. Frontend
- Tri avancé sur les colonnes (score, date dernier bench, hostname).
- Filtre par tags, type de machine (bare-metal / VM / SBC).
- Ajout dicônes simples (type machine, OS, réseau 1G/2.5G/10G…).
- Page “Benchmarks” globale (tous les benchmarks, filtrables par device).
## 3.2. Backend
- Meilleure gestion des erreurs côté API (messages clairs, codes cohérents).
- Pagination plus fine (page_size configurable).
- Logging structuré (JSON logs optionnels).
- Limitation taille payload JSON (protection simple).
## 3.3. Script client
- Mode “dry-run” (afficher JSON sans lenvoyer).
- Mode “debug” (log détaillé des commandes).
---
# 4. Phase 3 Historisation avancée & graphes
## 4.1. Graphes dans la WebUI
- Sur page device :
- Graphique du **global_score** sur le temps.
- Graphiques séparés :
- CPU score vs temps
- Mémoire score vs temps
- Disque score vs temps
- Réseau score vs temps
- Lib JS possible :
- Chart.js ou ECharts (simple, self-hosté).
## 4.2. Comparaison de benchmarks
- Comparer 2 benchmarks dun même device :
- Afficher les différences (avant/après ajout RAM, changement SSD…).
- Comparer 2 devices :
- Table des scores côte-à-côte.
- Exemple dusage :
- “Quelle machine est la meilleure candidate pour un nouveau service Docker ?”
---
# 5. Phase 4 Détection de régressions & alertes
## 5.1. Détection automatique
- Calcul dun “baseline” par device :
- par exemple moyenne des N meilleurs scores.
- Lors dun nouveau bench :
- si le score est inférieur de X% à la baseline → marquer en **WARNING**.
- Indicateurs :
- CPU plus lent
- Disque sensiblement plus lent (fragilité SSD/HDD)
- Réseau plus lent (câble / switch / config ?)
## 5.2. Alertes
- Marquage visuel dans la WebUI (icône warning).
- Export JSON ou webhook Webhook simple :
- POST vers un endpoint externe (ex: Home Assistant, Node-RED, etc.)
- Intégration possible :
- Appel HTTP vers Home Assistant pour créer une notification.
---
# 6. Phase 5 Intégrations externes
## 6.1. Intégration Gitea / Git
- Stocker le dépôt `bench.sh` dans une forge (déjà le cas).
- Ajouter :
- Liens vers la version exacte du script qui a généré tel bench.
- Option :
- Webhook Gitea → déclencher bench sur un device après un changement de config.
## 6.2. Intégration Home Assistant
- Exposer certains indicateurs via une API ou MQTT :
- Dernier score par device
- Warn/alert sur régression
- Dashboard HA :
- Carte des machines avec état “OK / Warning / Error”.
## 6.3. Intégration Prometheus / Grafana (option)
- Exporter métriques (nombre de devices, benchs, scores moyens) via `/metrics`.
- Visualisation dans Grafana.
---
# 7. Phase 6 Extensions techniques
## 7.1. Support multi-OS
- Extension `bench.sh` pour :
- Linux non-Debian (Arch, Fedora)
- macOS (optionnel)
- Windows (PowerShell script séparé)
## 7.2. Agents “semi-persistants”
- Mode où un service systemd sur certains serveurs :
- exécute un bench toutes les X semaines.
- envoie automatiquement les données au backend.
## 7.3. Export / Import
- Export complet de :
- devices
- benchmarks
- hardware_snapshots
- Formats :
- JSON
- CSV (pour certains tableaux)
- Import depuis un ancien fichier → migration facile vers nouvelle instance.
---
# 8. Phase 7 UX & ergonomie avancées
- Tags et “groupes” de devices (ex: “serveurs prod”, “lab”, “RPi”, “Proxmox nodes”).
- Vues filtrées :
- Vue “serveurs”
- Vue “VM Proxmox”
- Vue “SBC (RPi, OPi, etc.)”
- Possibilité de nommer des “profils” :
- ex: “Profil NVR”, “Profil VM/Proxmox”, “Profil PC Gaming”
- et voir les devices qui matchent le mieux chaque profil en fonction de leur score.
---
# 9. Idées long terme (si tu veux pousser très loin)
- Auto-détection hardware via une petite API agent qui tourne sur les machines en continu (au-delà du script ponctuel).
- Benchmark réseau multi-nœuds :
- topologie logical de ton réseau
- latences et débits entre plusieurs points.
- Vue “Carte du réseau” :
- affichage graphique des performances entre différentes machines.
- Plugins :
- Ajouter une API plugin pour créer ses propres tests (ex: bench spécifique Docker, base de données, etc.).
---
# 10. Priorisation suggérée
1. **Stabiliser MVP** (Phase 1 + tests fichier 09)
2. UX de base + tri / filtre (Phase 2)
3. Graphes dhistorique (Phase 3)
4. Détection régressions + petites alertes (Phase 4)
5. Intégrations Home Assistant / Prometheus (Phase 5)
6. Support multi-OS (Phase 6)
7. Développements avancés (Phase 7+8)
---
# 11. TODO résumé par phase
- Phase 1 :
- Implémenter API, DB, bench.sh, WebUI minimal, Docker, install.sh
- Phase 2 :
- Tri, filtres, ergonomie
- Phase 3 :
- Graphes (global_score, composantes)
- Phase 4 :
- Baselines, détection de régression, marquage visuel
- Phase 5 :
- Webhooks / MQTT / intégration HA
- Phase 6 :
- Scripts bench pour autres OS
- Phase 7 :
- Vues avancées, cartes réseau, plugins
Ce document pourra servir de base à un Kanban (Gitea, Kanboard, etc.) en créant une tâche par élément de la roadmap.