The HillClimbing@Cloud project for the Cloud Computing and Virtualization course at MEIC / METI - IST - ULisboa endeavors to architect and construct an elastic cluster of web servers. Its core function involves utilizing hill-climbing algorithms to ascertain peak values on height-maps, addressing incoming web requests with precision and agility. The project's central tenets revolve around scalability, performance enhancement, and adept management of task intricacies.
This endeavor encompasses a suite of system components, including web servers, a load balancer, an auto-scaler, and a metrics storage system. Integral to the project's success is the meticulous instrumentation of code for real-time performance metric collection. Moreover, students are tasked with devising algorithms for load balancing and auto-scaling, each meticulously designed to optimize system throughput and resource allocation. The final submission should showcase seamless integration between web server instrumentation and the metrics storage system, alongside the implementation of efficient auto-scaling and load balancing algorithms, leveraging comprehensive metrics data analysis.
The primary endeavor of this project was to craft a distributed system adept at processing graph coordinates to deduce heights utilizing a spectrum of algorithms including Astar, BFS, and DFS. The project achieved a commendable grade of 17.8/20 following rigorous evaluation by Professor Luís Veiga and Nuno Anselmo.
- The ./Enunciado directory houses the project's statement.
- The Auto Scaler module orchestrates dynamic provisioning and termination of Web Servers.
- The Load Balancer acts as the system's gateway, proficiently distributing incoming requests among Web Servers.
- Web Servers dutifully process requests, furnish results to the Load Balancer, and persist pertinent metrics in DynamoDB.
- The Load Balancer aggregates results, facilitating their prompt return to the client.
- System configurations are meticulously housed in the rc.local file.