Hi all,
I am curious as to how do everyone approach the question of the following nature:
'we need to create Application A (eg. ecommerce site). It will use technology B (eg. java). It has to support C (eg. 200) number of concurrent users. What kind of hardware do we need?'
Hardware specification would involve the number of CPU required, and perhaps amount of memory for a basic answer.
To simplify my example, I will stick with Java technology in my question, but I really would like a technology-neutral advice.
I understand that such a question involves many additional factors. Eg, a different framework (Wicket vs Struts vs Spring vs pure EJB J2EE architecture), number of distributed tiers (one box setup or 3 tier setup).
But given that a person might have no prior experience with the given technology (or maybe no opportunity to do a load test of finding out what the required hardware is), and such a question always comes up during an initial project discussion (and an answer is essential as a baseline to move forward), how do you go about giving an answer?
I had thought about solving the memory required problem by estimating the amount of memory each user session might take, but there will definitely be framework/virtual machine overhead.
But in general, I just cannot seem to reason out a good solution to this question, which always seem to pop up. A load test would definitely help solve it, but then by that point the project is already ready, and this is a question a client would usually want an answer to before committing to a project.
Do hope that the community can advise on good approaches to this.
Thanks.