VirtualLaunchPlateforme de Machines Virtuelles
Compétences clés
Contexte et objectifs
Dans le cadre de mon cinquième semestre, j'ai eu l'opportunité de participer à un projet visant à développer une solution innovante pour simplifier l'accès aux machines virtuelles préconfigurées via une interface web. Cette initiative, nommée VirtualLaunch, avait pour objectif de faciliter l'utilisation des environnements virtuels pour les étudiants de notre école d'ingénieur.
L'objectif principal était de concevoir et déployer une plateforme permettant aux étudiants et enseignants de créer, gérer et accéder à des machines virtuelles personnalisées sans avoir à passer par les procédures d'installation et de configuration habituellement fastidieuses. En tant que membre de l'équipe projet, j'ai eu la responsabilité de plusieurs composantes techniques essentielles, notamment le développement de l'interface web et la mise en place de l'infrastructure nécessaire au déploiement automatisé des machines virtuelles.
Enjeux du projet
L'enjeu était donc important, car il s'agissait d'améliorer significativement l'expérience d'apprentissage des étudiants de l'école, particulièrement ceux de la filière Systèmes d'Information qui doivent régulièrement installer et configurer des environnements virtuels dans le cadre de leurs travaux pratiques et projets. Le succès de ce projet aurait un impact direct sur l'efficacité pédagogique et la qualité de formation délivrée par notre établissement.
Architecture Technique
Le schéma ci-dessous illustre l'architecture globale de la solution VirtualLaunch, montrant l'interaction entre les différents composants du système :

Étapes de Réalisation
1. Analyse des BesoinsVoir compétence
Dans un premier temps, j'ai procédé à une analyse approfondie des besoins exprimés par notre commanditaire, le Groupe AEN (aujourd'hui ESIEA). Cette phase préliminaire a permis d'identifier les fonctionnalités essentielles que notre solution devait offrir :
- Déploiement Automatique : Environnements de bureau avec applications présélectionnées.
- Sécurisation de la Plateforme : Accès VPN pour sécuriser les connexions.
- Génération de Machines Virtuelles : À la demande, selon le profil utilisateur.
- Interface Web Intuitive : Pour gérer les machines virtuelles.
En tant que Scrum Master, j'ai organisé cette analyse en thèmes, epics et user stories dans notre Product Backlog, établissant ainsi une feuille de route claire pour le développement.
2. Développement de l'Interface WebVoir compétence
Dans un second temps, j'ai conçu et développé l'interface web de la plateforme, élément central permettant aux utilisateurs d'interagir avec le système. Voici les détails techniques :
- Backend en PHP : Pour la logique serveur, assurant la gestion des requêtes et des données.
- Frontend en JavaScript : Pour les fonctionnalités dynamiques, améliorant l'interactivité de l'interface.
- Structure HTML/CSS : Pour une mise en page claire et responsive, adaptée à tous les appareils.
- Formulaires de Configuration : Permettant de sélectionner le système d'exploitation (Windows ou Linux), les ressources nécessaires (RAM, CPU), et les applications à préinstaller (Apache, FileZilla, OpenVPN, etc.).
Les paramètres saisis via ces formulaires étaient ensuite transmis à des scripts Bash responsables de la création effective des machines sur notre serveur.
3. Gestion des Machines VirtuellesVoir compétence
Dans un troisième temps, j'ai développé les fonctionnalités de gestion des machines virtuelles créées. Voici les détails :
- Fonctionnalités de Gestion : Démarrer, arrêter et supprimer les machines virtuelles.
- Affichage des Informations : Détails sur chaque instance (nom, durée de vie restante, ressources allouées, applications installées).
- Base de Données MySQL : Conception spécifique pour stocker les informations des machines virtuelles.
- Accès Direct : Solution intégrée pour ouvrir une session à distance directement dans le navigateur web, sans installation supplémentaire.
4. Sécurisation de la SolutionVoir compétence
Pour la dernière étape, j'ai contribué à la sécurisation globale de la solution en implémentant diverses mesures de protection :
- Système d'Authentification : Robuste, avec différents niveaux de privilèges selon les profils utilisateurs (étudiants ou enseignants).
- Configuration du VPN IPsec : Pour garantir un accès sécurisé à la plateforme, quel que soit le site de l'école (Agen, Dax, Montauban, Pamiers et Les Sables-d'Olonne).
Documentation Technique
Consultez la documentation technique complète de VirtualLaunch pour comprendre en détail son architecture et son fonctionnement.
Documentation Utilisateur
Après avoir consulté la documentation technique, découvrez le guide utilisateur complet.
Collaboration et Méthodologie
Durant ce projet, j'ai travaillé en étroite collaboration avec les autres membres de l'équipe en suivant rigoureusement la méthodologie Agile Scrum. En tant que Scrum Master, j'ai organisé et animé les différentes cérémonies (sprint planning, daily, retrospective) et veillé à ce que la méthodologie soit correctement appliquée. J'ai également assuré la liaison avec notre Product Owner, directeur général du Groupe AEN, pour garantir que notre développement restait aligné avec les attentes du commanditaire. Les tâches ont été réparties sur quatre sprints d'une à deux semaines, avec deux points de livraison prévus, à mi-parcours et à la fin du projet.
Bilan et Retour d'Expérience
Ce projet a été extrêmement bénéfique pour mon développement professionnel. Il m'a permis d'approfondir mes compétences techniques en développement web, en administration système et en gestion de bases de données. J'ai également pu renforcer mes compétences en gestion de projet Agile, en communication et en travail d'équipe. La collaboration avec notre conseiller technique et notre suiveur a été particulièrement enrichissante, m'offrant l'opportunité d'apprendre auprès de professionnels expérimentés.
Regard Critique et Axes d'Amélioration
En portant un regard critique sur ce projet, je peux affirmer que nous avons livré une solution fonctionnelle qui répondait aux principales exigences de notre commanditaire. Cependant, certains aspects auraient pu être améliorés avec plus de temps, notamment l'optimisation des performances pour gérer un nombre plus important de machines virtuelles simultanées. Si je devais refaire ce projet, j'envisagerais une architecture plus modulaire pour faciliter les évolutions futures, et j'intégrerais dès le départ des outils d'analyse de performance pour anticiper les éventuels goulots d'étranglement. Pour une future évolution, je recommanderais l'implémentation d'une API RESTful pour faciliter l'intégration avec d'autres systèmes de l'école, ainsi qu'une fonction d'analyse prédictive pour anticiper les besoins en ressources.
Bien que le projet n'ait pas été déployé en production à grande échelle, cette expérience m'a permis de développer des compétences précieuses qui me serviront tout au long de ma carrière. J'ai pu mettre à profit mes connaissances en développement web, en administration système, en gestion de projet, et en sécurité informatique, contribuant ainsi à la création d'une solution qui aurait pu transformer significativement l'expérience d'apprentissage des étudiants de l'école.