This project implements an Auto-Scaling Simulator. So far, the simulator has the implementation for AWS Simple Scaling and AWS Target Tracking policies of auto-scaling.
-
Install the R software, it can be done for free here. Optionally, you can install the RStudio IDE, which has all the tools you need to develop using R.
-
Install the Python programming language (this can be done here) and the pip module.
-
Install the following R libraries dependencies by typing the next command on R console:
> install.packages(c("dplyr", "testthat", "yaml", "yardstick", "R.utils", "purrr", "reticulate"))
Or you can install under the "packages" tab on R Studio.
- Install the Python libraries dependencies using pip:
pip install croniter
You will need to configure your simulation updating the config.yaml file. The details of how to modify this file are available here.
After updating the config file, run the following command in the root directory of this repository:
Rscript src/main.R
If instead of updating the existent config.yaml you created a new one, you can pass the path to the new file as an argument, like this:
Rscript src/main.R config/file/path/config.yaml
The output files will be stored in the output path specified in the configuration file.
You can find more information in the repository wiki.
- The Input page describes required format for the input data.
- The Configuration section specifies each parameter available in the configuration file and how to edit them.
- The Policies page elucidates the details of the scaling policies that were implemented in the simulator until now.
- The Output section details the output files generated by the simulation.
- The Metrics page shows the details of some metrics that can be automatically calculated for each simulation and how to enable this calculation.
- Finally, the Contributing page specifies how you can help improve the simulator.
The repsitory structure is organized as follows:
.
├── data/
│ ├── Input data.
├── output/
│ ├── Output data.
├── src/
│ ├── Simulator source code.
│ └── policies/
│ ├── Policies source code.
└── tests/
├── Common tests
├── simple_scaling_test/
│ ├── Tests for simple scaling policy
└── target_tracking_test/
├── Tests for target tracking policy