## 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 file Redis (`jobs:pending`) et le nombre de workers, puis ajuste le nombre de réplicas du service worker Swarm entre un min et un max configurables. Les seuils sont basés sur la charge (jobs par worker) : scale up si (jobs en attente / workers) dépasse un seuil, scale down si ça tombe en dessous d’un seuil plus bas (et qu’aucun job n’est en cours). 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_PER_WORKER_ABOVE` | `4` | Scale up si (jobs en attente / workers) ≥ cette valeur. | | `SCALER_SCALE_DOWN_WHEN_JOBS_PER_WORKER_BELOW` | `1` | Scale down si (jobs en attente / workers) ≤ cette valeur (et aucun job en cours). | ### 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.