Mettre en place une solution informatique pour l’entreprise

Cameron FLORENCE 2025

Création d'une interface de gestion de serveurs informatiques et des services qui seront déployé dessus.

Projet mettre en place une solution informatique pour l’entreprise

Idée de départ

L'objectif de ce projet est de développer une interface web de gestion de serveurs informatiques et des services qui y sont déployés. Cette application s’adresse à des gestionnaires système et permet un pilotage centralisé des serveurs, services et applications liés à une infrastructure informatique.

Technologies et matériel utilisés

  • HTML
  • CSS
  • JavaScript
  • Django
  • MariaDB
  • Nginx
  • Gunicorn

Répartition des rôles

Groupe :

Objectifs : création de l'interface web et de son déploiement

  • Quentin
  • Cameron
  • Chloé

Déroulement du projet

Au début du projet, nous avons commencé par concevoir un schéma de base de données clair et structuré, permettant de modéliser précisément les entités clés telles que les serveurs, services, applications, utilisateurs, et leurs relations. Nous avons ensuite créé les tables correspondantes dans la base de données, afin de poser les bases techniques nécessaires au bon fonctionnement de l'application.

Cette structure nous a permis de mettre en place les opérations CRUD (Create, Read, Update, Delete) pour chaque type de donnée, ainsi que les formulaires dynamiques permettant l'ajout, la modification et la suppression d’enregistrements via une interface web. Ces formulaires incluent des vérifications de contraintes, comme le contrôle de l’espace mémoire disponible ou du nombre de processeurs avant le déploiement d’un service.

Une fois la partie fonctionnelle en place, je me suis concentré sur la conception de l’interface du tableau de bord. L’objectif était de rendre l’expérience utilisateur plus fluide et plus agréable, en proposant une interface claire, moderne et intuitive, facilitant la gestion des serveurs et la visualisation de l’état des services déployés.

Nous avons également intégré une fonctionnalité permettant l'import d'applications et de services via un fichier structuré, pour simplifier le déploiement groupé. Enfin, pour simuler un environnement de production, nous avons mis en place deux machines virtuelles distinctes. L’une est dédiée à l’hébergement de la base de données MariaDB, servant de backend centralisé pour stocker toutes les informations du projet. L’autre héberge notre application Django, qui gère l’interface web.

Site web :

Image cv version pc

Lien github :

https://github.com/Cam-12/SAE23

Contraintes et solutions

Lors du déploiement de notre application Django sur la machine virtuelle, nous avons rencontré un problème d’affichage lié au CSS. En effet, les fichiers statiques n’étaient pas correctement pris en charge par le serveur Nginx, ce qui empêchait le rendu visuel attendu de l’interface. Après investigation, nous avons identifié qu'il y avait un manque de droit sur notre dossier.

Résultats

  • Mise en place d’une base de données fonctionnelle avec toutes les entités (serveurs, services, utilisateurs, applications, types de serveurs, etc.)
  • Fonctionnalité d’import de services et d’applications via un fichier structuré
  • Génération d’une fiche récapitulative des services lancés sur un serveur
  • Déploiement sur deux machines virtuelles : une pour le serveur Django, l’autre pour la base de données MariaDB

Leçons tirées du projet

Ce projet m’a permis de consolider mes compétences en développement web, notamment à travers l’utilisation du framework Django et la gestion d’une base de données relationnelle. J’ai également acquis de l’expérience dans le déploiement d’applications sur des environnements virtualisés, ainsi que dans la configuration de serveurs web comme Nginx, ce qui m’a confronté à des problématiques concrètes liées à la mise en production.

Il m’a aussi offert l’opportunité de m’approfondir dans la conception et l’exploitation de bases de données, en mettant en place des opérations CRUD complètes. J’ai appris à gérer les relations entre plusieurs tables, à utiliser des jointures complexes pour extraire des données pertinentes, et à structurer mes requêtes de manière optimisée, garantissant ainsi la cohérence et l’intégrité des données manipulées au sein de l’application.