Extended Green Cloud Simulator (EGCS) is a self-adaptive multi-agent system used to simulate carbon-intelligent cloud infrastructures. Specifically, it allows the users to:
- define topologies of cloud networks that are, among others, powered with green-energy sources
- employ and assess different system strategies such as:
- orchestration of the workload across different cloud network regions
- job prioritization and scheduling policies
- handling unexpected environmental events such as dynamic weather changes
- run large-scale distributed simulations including simulations in which agents reside in multiple agent platforms and are distributed among different hosts
- experiment with system's autonomic behaviours and the runtime (self-)adaptability
The system was implemented with the following technologies:
- Java 17 + JADE (Backend)
- EasyRules (Rules Based Expert System) + MVEL (Expression Languages)
- Typescript (Frontend)
- Typescript + Express + Express WS (Socket Server)
- PostgreSQL Timescale (Database)
In order to run the system, it is also required to install:
- Docker (https://docs.docker.com/get-docker/)
- Maven (https://maven.apache.org/download.cgi)
- Shell with the ability to execute bash scripts (e.g. Git BASH for Windows users: https://gitforwindows.org/)
- Node.js 18+ (https://nodejs.org/en/download)
- Python 3 (https://www.python.org/downloads/)
The system consists of the following modules:
- agent-connector - module containing methods used for generating agent controllers and GUI agent nodes, as well as, services (WebSocket-based listener) used to connect the agents with environment to be able to sense external events
- agent-system - module containing definition of EGCS agents
- articles - module with various showcase agent systems, implemented based on the EGCS agent architecture
- commons - module containing common methods and classes shared between other modules
- data-clustering - module containing tools that were used to cluster real-life cloud data and generate the synthetic workflows
- engine - module used to run the simulations. It allows the users to specify the topology of the cloud network, pass the desired system strategies and specify test scenario events
- green_cloud_ui - module containing implementation of GUI
- gui - module implementing GUI controller with outward WebSockets. It is used to connect JADE agents with the frontend
- knowledge-database - PostgreSQL Timescale database used to store monitoring data for the analysis performed by system's managing component
- managing-system - module realizing agents' adaptations. It implements the architectural MAPE-K model
- rules-controller - module that defines rules and behaviours that (in the future) will handle the system's strategies
- socket-server - WebSocket module that serves as a proxy between backend and the GUI
- weather-api - module that contain services responsible for communication with external API used to fetch forecasted weather conditions
The system is using OpenWeatherMap API to retrieve weather predictions: https://openweathermap.org/api.
In order to generate synthetic data streams please refer to the Data Stream Generation Instruction.
All files used to configure the system are placed in ./config
. The instruction on how to configure the system can be
found in: Configuration Instruction.
Similarly, the scripts used to compile the project are in ./compile
. In order to compile and run the project, refer
to: Compilation Instruction.
More information about the system can be found in:
Wrona, Z., Ganzha, M., Paprzycki, M., Krzyżanowski, S. (2023).
Extended Green Cloud – Modeling Cloud Infrastructure with Green Energy Sources.
In: Mathieu, P., Dignum, F., Novais, P., De la Prieta, F. (eds)
Advances in Practical Applications of Agents, Multi-Agent Systems, and Cognitive Mimetics.
The PAAMS Collection. PAAMS 2023.
Lecture Notes in Computer Science(), vol 13955. Springer, Cham.
https://doi.org/10.1007/978-3-031-37616-0_37