README.md 2,19 ko
Newer Older
Massiles Ghernaout's avatar
Massiles Ghernaout a validé
## Projet Docker Swarm – Bruteforce MD5

Ce dépôt contient une petite infrastructure Docker Swarm capable de bruteforcer des hash MD5 de manière scalable, ainsi qu’une application web pour piloter et monitorer le cluster.

### Sous-projets

- **backend** : API Node.js/Express pour gérer les jobs de bruteforce, l’état du cluster, et le scaling des workers.
- **worker** : service de bruteforce MD5 (conteneurs réplicables dans le Swarm).
- **frontend** : application React permettant d’envoyer des hash, choisir les modes *gentil/normal/agressif* et visualiser l’état du cluster.
- **infra** : configuration Docker Swarm (stack) et scripts éventuels.
- **CI** : workflows d’intégration continue (dossier `.github/workflows/`).

### Prérequis

- Docker et Docker Swarm initialisé (`docker swarm init`).
- Node.js (pour le développement local du backend et du frontend).

### Auto-scaling

Un **scaler** tourne dans le processus du backend. Il lit périodiquement la taille de la file Redis (`jobs:pending`) et ajuste le nombre de réplicas du service worker Swarm entre un min et un max configurables. Seuils avec hysteresis : scale up si les jobs en attente dépassent un seuil, scale down s’ils tombent en dessous d’un seuil plus bas.

Variables d’environnement (optionnelles, sur le service `api_backend`) :

| Variable | Défaut | Description |
|----------|--------|-------------|
| `SCALER_ENABLED` | `true` | Mettre à `false` pour désactiver le scaler (ex. dev local sans Swarm). |
| `SCALER_INTERVAL_MS` | `10000` | Période entre deux évaluations (ms). |
| `SCALER_MIN_REPLICAS` | `1` | Nombre minimum de workers. |
| `SCALER_MAX_REPLICAS` | `10` | Nombre maximum de workers. |
| `SCALER_SCALE_UP_WHEN_JOBS_ABOVE` | `5` | Scale up d’un réplica si jobs en attente ≥ cette valeur. |
| `SCALER_SCALE_DOWN_WHEN_JOBS_BELOW` | `1` | Scale down d’un réplica si jobs en attente ≤ cette valeur. |

Massiles Ghernaout's avatar
Massiles Ghernaout a validé
### Démarrage rapide (esquisse)

Les sections suivantes seront complétées au fur et à mesure de l’implémentation :

- Lancement en mode développement (hors Swarm).
- Déploiement de la stack Swarm.
- Description des endpoints de l’API.
- Explications sur l’interface web et le monitoring.