Developing Communicating Applications

Context

As part of SAE 3.02, the objective was to design a distributed system where clients can submit programs to be executed on an infrastructure composed of a master server and several secondary servers. This type of architecture allows for optimized resource management and better task distribution, ensuring efficient and scalable processing.
The whole system relies on socket communication and a graphical interface developed with PyQt, providing users with easy access to the system's features. Special attention was given to supporting multiple programming languages (Java, Python, C, C++) to ensure execution flexibility. Although some improvements such as securing exchanges and saving tasks in case of failure were not integrated, the project provides a solid foundation for an evolving and high-performance system.

Skills Developed

  • Mastery of network programming, especially managing connections via sockets.
  • Creation of interactive graphical interfaces with PyQt to enhance user experience.
  • Design and coordination of a distributed architecture with a master server and secondary servers.
  • Implementation of a load balancing system for better resource management.
  • Development of a multi-language execution mechanism to handle scripts in Java, Python, C, and C++.
  • Performance optimization by limiting resources to prevent server overload.
  • Consideration of security and reliability aspects, especially regarding authentication and encryption of communications.
  • Implementation of rigorous error handling and thorough testing to stabilize the system.
  • Effective project planning to meet set deadlines and objectives.
  • This project was an opportunity to experiment with and strengthen key IT skills, combining theory and practice for a deep understanding of distributed architectures.

Project Deliverable

You can find the full project deliverable on GitHub:  click here.
You will also find an explanatory video about the load balancing method, as well as user and developer documentation.