Hardware resource planning for Springboot application

271 views Asked by At

I need to do hardware sizing (CPU cores, RAM) for a Spring boot application which will be running on Tomcat web-server. The application, to be built from scratch, does not have front-end. It is primarily controller-service-persistence with PostgreSQL as database, exposing the server as REST APIs.

Performance metrics for Production :

Appl. response time < 10msec
Concurrent users - max 5000
Data size upto 100 MB, audit logs - upto 1TB.

If we have a cluster of 3 nodes, how do I arrive at the CPU, RAM requirement for each node? It can be an approx. +- 20%.

I saw some links on stackoverflow in similar topics where solution was : You need to create some load e.g. using Jmeter for a realistic work load of requests and users. Most likely you need to test for 20, 40, 60...users until the system doesn't perform so well.

How do I create load where application is yet to be developed? Is there any rule-of-thumb for an approx. starting point?

1

There are 1 answers

1
Amir Shaikh On

Optimizing Hardware Resource Planning for Application Performance and Scalability


ans: Above mention approaches won't provide accurate performance metrics for your specific application.

Summary:

Effective hardware resource planning plays a critical role in ensuring optimal application performance and scalability. This involves a systematic and iterative evaluation process, taking into account evolving requirements and application performance metrics. Thorough performance testing on the live application is essential to ensure stability and scalability.

Key Points:

  1. Iterative Evaluation and Adjustment: Hardware resource planning should be an ongoing process, continually assessing the application's performance and adapting to changing requirements.
  2. Comprehensive Performance Testing: Rigorous performance testing on the live application is crucial to identify bottlenecks, optimize resource allocation, and ensure stable operation.
  3. Iterative Load Testing: Load testing should be conducted iteratively throughout the application's lifecycle, considering changes in architecture, requirements, and anticipated user behavior.
  4. Application-Specific Load and Performance Characteristics: Each application has unique load and performance requirements influenced by factors such as architecture, user behavior, and specific functional needs.