This project aims to analyze the load test results of a cloud-native application focusing on non-functional aspects such as success rate, resource utilization, and latency. The analysis will be conducted continuously over long periods (e.g., 12/24/48/72 hours) with comparisons to historical data.
The objective is to develop a sample cloud-native REST application that triggers multiple REST endpoints, push logs, and statistics to a cloud-native observability platform. Load testing will be performed using load tester tools to measure the transactions per second (TPS) the application can handle. A performance analyzer tool will be developed to capture data from the observability platform and analyze various metrics.
- Develop a sample cloud-native REST application that triggers 2-3 REST endpoints, including both synchronous and asynchronous calls. Push logs and statistics to a cloud-native observability platform.
- Utilize load testing tools to measure the transactions per second (TPS) the application can handle under various scenarios.
- Develop a performance analyzer tool to capture data from the observability platform, including CPU usage, latency, and generated logs/events.
- Test different versions of the application with varying complexities and scenarios to assess performance changes.
- Use Prometheus for capturing statistics data and for logs.
- Use Grafana for visualizing the logs in a graphical manner.
- Use Apache JMeter for performing the load to the application.
- Continuous load testing and monitoring over long periods.
- Comparison with historical data to identify performance improvements or degradation.
- Support for synchronous and asynchronous REST endpoints.
- CPU-intensive logic and error generation for performance testing.
- Data capture and analysis using Prometheus and Grafana.
- Load testing functional behavior and measuring performance using Apache JMeter.
- Dockerized deployment for easy setup and scalability.
- Programming Language: Java
- Tools: Docker, Prometheus, Grafana, Apache JMeter
- Docker installed on your machine.
- Basic understanding of cloud-native application development and testing.
- Basic understanding of Java springboot.
- Understanding of Grafana and Prometheus monitoring tool.
The project aims to provide clear results from load tests and performance analysis, comparing them with historical data to identify improvements or degradation in performance.
-
Clone the Repository:
- Clone the repository to your local machine:
git clone git@github.com:Priyanshuparth/Load-Test-Analysis-of-cloud-native-application.git
- Clone the repository to your local machine:
-
Navigate to Each Component's Directory:
- Navigate to the directory of each component, such as
springhpeasync
,springhpesync
, etc.
- Navigate to the directory of each component, such as
-
Build Docker Image for Each Component:
- Inside each component directory, you'll find a
maven-wrapper.jar
or similar file. - Build a Docker image for each component using the following command:
docker build -t dockerhpe.jar .
- Inside each component directory, you'll find a
-
Run Docker Image:
- After successfully building the Docker image for each component, you can run the image using the following command:
docker run -p 8080:8080 dockerhpe.jar
- Replace
dockerhpe.jar
with the appropriate image name for each component.
- After successfully building the Docker image for each component, you can run the image using the following command:
-
Access the Application:
- Once the Docker container is running, you can access the application in your web browser at
http://localhost:8080
.
- Once the Docker container is running, you can access the application in your web browser at
-
Repeat for Each Component:
- Repeat steps 2-5 for each component in the project, building and running Docker images for each one.
By following these steps, you'll be able to build Docker images for each component of the project and run them locally on your machine. Don't forget to replace placeholders like dockerhpe.jar
with the actual image names and adjust ports as needed.
This project is licensed under the MIT License.