With the spread of cloud-based systems a new demand appeared to run applications with only the currently necessary resources, and to deliver the expected performance continually for the customers even in case of an increased workload. This method allows us to both keep the maintenance cost of the system low and to provide a high-quality system.
This type of operation creates new challenges for cloud application designers as they should be able to accurately determine a system's future load. The task of analyzing and predicting time series that are dependent on many parameters with traditional, rule-based methods is complicated and ineffective. In order to create a solution for this problem, I propose a scaling algorithm based on neural networks, that is able to predict the future running status for each component inside the system. The framework that controls resource allocation will be able to use this prediction to automatically scale the system up or down, simulating the behavior of a real environment.
The tests showed that this solution is able to work as an effective scaling algorithm and predict the expected working state of a component with high accuracy. During future works, it is necessary to expand the development to different kind of systems in order to improve the models and the algorithm.