Many web applications suffer from performance issues. In most cases, this manifests itself as a slow response or latency of the application towards the user. High-performance applications offer a better user experience, which can in turn be a business advantage for the company that developed the application.
Such web applications, deployed entirely in the cloud are becoming more and more widespread. The application that we are testing is an example of such an application. It is deployed entirely in the cloud using Amazon's cloud services called AWS. The application is divided into a frontend part, which is the user interface, and a backend part, which is responsible for serving requests and processing the application's data. In this thesis, we load-test the backend using the Artillery io tool. This generates virtual users in scenarios defined in scripts. The latter then send transactional requests and thus put a load on the backend of the application.
During the execution of the scripts, we monitored two metrics, namely CPU utilisation and RAM occupancy. The values of these two metrics were monitored in the Amazon console and then presented graphically as a function of the traffic generated towards the backend.
Measurements were carried out in two environments, a staging environment and a production environment. The two environments differed in the resources allocated. First, the measurements were taken in the staging environment. We found that its resources were not configured efficiently. In most cases, the CPU utilisation reached a value significantly higher than the RAM occupancy. In the production environment, we therefore tried to set the resources to be used more efficiently. In some cases, we even managed to almost equalise the CPU utilisation and RAM occupancy values. We found that the resource scaling factor does not grow as much in proportion to the scaling factor of the virtual user requests generated, which can still be processed by the application without degrading its performance.
|