TeamBuilding est une application web conçue pour aider les entreprises à former facilement des équipes de projet correspondant à des exigences spécifiées. Elle inclut un système de "matchmaking" conçu pour faciliter l'appariement optimal entre les utilisateurs et les projets en maximisant la compatibilité et la satisfaction. Notre idée est de développer un algorithme qui prend en compte les compétences, les préférences et la disponibilité des utilisateurs, ainsi que les besoins spécifiques de chaque projet. Ce système aidera non seulement à former des équipes équilibrées et performantes, mais assurera également une expérience enrichissante pour les participants et une plus grande efficacité pour les projets.
- Voir tous les projets (en cours, passés, à venir).
- Attribuer des équipes aux projets qui n'en ont pas encore.
- Remplir une enquête de satisfaction pour les projets passés (à des fins de démonstration).
- Créer de nouveaux projets.
- Voir la liste des employés.
- Modifier le profil personnel :
- Changer le mot de passe.
- Mettre à jour les compétences.
- Définir la mobilité (sur site ou à distance).
- Définir la disponibilité.
- Voir uniquement les projets dans lesquels ils sont impliqués (en cours, passés, à venir).
- Modifier le profil personnel (mêmes champs que les managers).
- Remplir des enquêtes de satisfaction pour les projets terminés.
L'application est déployée sur Azure App Service pour Conteneurs (Linux), garantissant une connexion sécurisée à la base de données via un Réseau Virtuel (VNet) privé.
- IaC (Infrastructure as Code) : L'infrastructure est gérée via Terraform.
- Conteneurisation : L'application web Python/Django est conteneurisée (image
django-web:v1) et stockée dans un Azure Container Registry (ACR). - Base de Données : Azure Database for MySQL Flexible Server est déployé avec une connexion privée, garantissant que le trafic de la base de données ne quitte jamais le Réseau Virtuel.
- Réseau : L'App Service est intégré au VNet pour accéder en privé à la base de données MySQL.
- Sécurité des Secrets : Le mot de passe de l'administrateur de la base de données est stocké dans un Azure Key Vault (KV). L'App Service utilise son identité gérée (System Assigned Identity) pour accéder au secret et à l'ACR (rôle
AcrPull).
Avant de commencer le déploiement, assurez-vous que les outils suivants sont installés et configurés :
- Docker
- Azure CLI (authentifié avec
az login) - Terraform
a. Initialisation : Naviguez vers le répertoire "terraform" et initialisez Terraform.
terraform initb. Planification et Application : Exécutez le plan pour visualiser les ressources, puis appliquez la configuration.
terraform plan
terraform apply(Vous devrez fournir les valeurs des variables, notamment db_admin_password).
Construction et Push de l'Image Docker : Nous construisons l'image de l'application et la publions dans l'ACR.
Commencez par effectuer cette commande afin de récupérer les variables nécessaires pour l'ACR :
$ACR_LOGIN_SERVER = (terraform output -raw acr_login_server).Trim()Authentifiez-vous auprès de l'ACR :
az acr login --name $ACR_LOGIN_SERVERConstruisez l'image : (Assurez-vous d'être dans le répertoire racine du projet)
docker build -t "$ACR_LOGIN_SERVER/django-web:v1" .Poussez l'image vers l'ACR :
docker push "$ACR_LOGIN_SERVER/django-web:v1"Déplacez vous dans le répertoire de l'initialisation de la base de données
cd db-initConstruisez puis poussez l'image de la base de données :
docker build -t "$ACR_LOGIN_SERVER/db-init:latest" .
docker push "$ACR_LOGIN_SERVER/django-web:v1"Dans le main.tf, décommentez toute la deuxième partie du fichier avant d'effectuer une seconde fois la commande suivante :
terraform applyUne fois le déploiement réussi, l'application est accessible via l'URL de votre App Service. Vous trouverez cette URL sur le portail Azure. Normalement il devrait s'agir de ce lien : https://advancedmatchmaking-app.azurewebsites.net/matchmakingApp/ Le lancement de l'application peut prendre quelques minutes.
Après le déploiement et l'initialisation de la base de données par l'application, vous pouvez utiliser les comptes suivants pour tester les différentes vues et fonctionnalités de notre application (la base de donnée d'initialisation déployée sur le repository git est une BDD d'exemple afin de tester l'application) :
| Rôle | Adresse Email | Mot de Passe |
|---|---|---|
| Manager | doe.john@example.com |
johnXD42! |
| Employé | bon.jean@example.com |
jeanXD42! |
| Admin | messi.cristiano@example.com |
admin |
Les fonctionnalités les plus intéressantes à tester sont celles du rôle Manager, car elles impliquent la création de projets, la gestion des équipes et l'utilisation potentielle de l'algorithme de "matchmaking" central de l'application.