Développer des applications communicantes

Contexte

Dans le cadre de la SAE 3.02, l’objectif était de concevoir un système distribué où des clients peuvent soumettre des programmes à exécuter sur une infrastructure composée d’un serveur maître et de plusieurs serveurs secondaires. Ce type d’architecture permet une gestion optimisée des ressources et une meilleure répartition des tâches, garantissant un traitement efficace et scalable.
L’ensemble repose sur une communication via sockets et une interface graphique développée avec PyQt, offrant aux utilisateurs un accès simplifié aux fonctionnalités du système. Une attention particulière a été portée à la prise en charge de plusieurs langages de programmation (Java, Python, C, C++) afin d’assurer une flexibilité d’exécution. Bien que certaines améliorations comme la sécurisation des échanges et la sauvegarde des tâches en cas de panne n’aient pas été intégrées, le projet constitue une base solide pour un système évolutif et performant.

Compétences développées

  • Maîtrise de la programmation réseau, notamment la gestion des connexions via sockets.
  • Création d’interfaces graphiques interactives avec PyQt pour améliorer l’expérience utilisateur.
  • Conception et coordination d’une architecture distribuée avec un serveur maître et des serveurs secondaires.
  • Mise en place d’un système de répartition de charge assurant une meilleure gestion des ressources.
  • Développement d’un mécanisme d’exécution multi-langages permettant de traiter des scripts en Java, Python, C et C++.
  • Optimisation des performances grâce à une limitation des ressources pour éviter la surcharge des serveurs.
  • Réflexion sur les aspects sécurité et fiabilité, notamment en matière d’authentification et de chiffrement des communications.
  • Implémentation d’une gestion d’erreurs rigoureuse et réalisation de tests approfondis pour stabiliser le système.
  • Planification efficace du projet afin de respecter les délais et les objectifs fixés.
  • Ce projet a ainsi été une opportunité d’expérimenter et de renforcer des compétences clés en informatique, en combinant théorie et pratique pour une compréhension approfondie des architectures distribuées.

Rendue du projet

Vous pouvez retrouver le rendu complet de mon projet sur GitHub : cliquez ici.
Vous y trouverez également une vidéo d'explication de la méthode de load balancing, ainsi qu'une documentation utilisateur et développeur.