• Post Reply Bookmark Topic Watch Topic
  • New Topic

Obtain server specifications based on application

 
Andres Delrotti
Ranch Hand
Posts: 178
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello,

This is my dilemma. We are to deploy to a new server, a new java executable file which does heavy processing (batch). Development hasn't really started yet and the design phase is just beginning. Now the client is asking us to give them the minimum server specs to be able to run our application......asap!

I'm thinking this can't be done without performance testing, which will be after development. Is there a better and faster way to be able to assess this?



Cheers,
Andres

 
Ulf Dittmer
Rancher
Posts: 42970
73
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes, I think they have it backwards. They need to state upfront what data volumes they need to be able to handle in what amount of time, and then it is your task to design and implement a system that can do that (which may require more than one server, so that's something to keep in mind).
 
Jayesh A Lalwani
Rancher
Posts: 2762
32
Eclipse IDE Spring Tomcat Server
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes, this is a very common problem with applications that do a lot of backend processing. At the onset of the project, there are 2 things that are knows

a) You are building an application that you know will use resources.
b) You have some requirements that indicate what load you will get, and what is the expected performance

Now, these requirements kick off 2 efforts
a) the software development effort that results in the development of the software
b) the infrastructure acquisition effort that results in setup of the hardware that the software can run on

The problem is to know if the application will meet the performance requirements, the software developers want to know what hardware is going to available to them, and the infrastructure guys need to know how much resources the software will take. It's a catch-22 situation. Both sides look at each other "Well, you tell me how much hardware you have" "No, you tell me how much resources you need" "No you first" "No, you first". You can;t really hold off hardware acquisition until the need of the project because it takes significant time to purchase hardware. A lot of software developers underestimate the complexity of deciding what hardware to get. To them getting hardware is like buying a laptop. It's not

To solve this problem, usually you come up with estimates for resource usage before you start coding, and you size your hardware based on those estimates and add some buffer. Then you deploy your software, measure performance, and adjust accordingly. Hardware size estimation works on the same principles as Time estimation. It is an estimate. If you are building something that is very similar to something you have built before, then you use what you have built before as a baseline. If you are building something completely new, then you need to work on prototypes that help you estimate resource usage

Or a different tactic you can take is design your software for scalability. If you have designed for scalability, you can "rent" hardware from cloud providers. So, you can try to come up with estimates for how much hardware you need to buy. Buy the minimum amount of hardware that will get you up and running, and rent additional hardware from the cloud. Then, when you are sure you really want to buy more hardware, you go and buy it. This allows you to defer the hardware decision to a later stage. However, you need to design your application for the cloud.
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!