## 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. | ### 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.