Voting App 🗳️

📄 Présentation du Projet
Le projet Voting-App est une application distribuée permettant aux utilisateurs de voter entre deux options et de visualiser les résultats en temps réel. L'objectif est d'optimiser le déploiement en modernisant son architecture avec Docker et Docker Compose.
🎯 Objectifs
-
Conteneuriser chaque module de l’application en respectant les bonnes pratiques de développement.
-
Remplacer les scripts de démarrage manuels par un fichier Docker Compose pour automatiser l’orchestration des services.
-
Assurer la persistance des données et la gestion des dépendances entre les composants de l’application.
-
Organiser les différents services à l’aide de réseaux pour optimiser la communication et l’isolement des composants.
🛠️ Architecture du Projet
L’application repose sur plusieurs services interconnectés :
📌 Modules Principaux
-
🐍 Vote (Python/Flask) : Interface web permettant aux utilisateurs de voter.
-
⚙️ Worker (.NET Core) : Service qui récupère les votes depuis Redis et les stocke dans la base de données PostgreSQL.
-
🌐 Result (Node.js) : Interface web qui affiche les résultats en temps réel.
📌 Services Complémentaires
-
🐘 PostgreSQL : Base de données relationnelle qui stocke les votes.
-
📝 Redis : Service de messagerie servant de file d’attente pour transmettre les votes au worker.
🐳 Conteneurisation & Orchestration
-
Chaque service est conteneurisé à l’aide de Docker pour garantir un environnement stable et portable.
-
L’orchestration est assurée par Docker Compose, permettant de gérer le démarrage et l’interconnexion des conteneurs.
-
Un volume Docker est utilisé pour PostgreSQL afin de garantir la persistance des données entre les redémarrages.
-
Une gestion fine des dépendances et de l’ordre de démarrage est implémentée pour éviter les problèmes de communication entre services.
🐳 Déploiement et Exécution
L’ensemble du projet peut être lancé en une seule commande grâce à Docker Compose, assurant une installation rapide et efficace sans configuration complexe.