I wish to set up a CPU-intensive time-important query service for users on the internet. A usage scenario is described below.
Is cloud computing the right way to go for such an implementation? If so, what cloud vendor(s) cater to this type of application?
I ask specifically, in terms of:
1) pricing
2) latency resulting from:
- slow CPUs, instance creations, JIT compiles, etc..
- internal management and communication of processes inside the cloud (e.g. a queuing process and a calculation process)
- communication between cloud and end user
3) ease of deployment
A usage scenario I am expecting is:
- A typical user sends a query (XML of size around 1K) once every 30 seconds on average.
- Each query requires a numerical computation of average time 0.2 sec and max time 1 sec on a 1 GHz Pentium. The computation requires no data other than the query itself and is performed by the same piece of code each time.
- The delay a user experiences between sending a query and receiving a response should be on average no more than 2 seconds and in general no more than 5 seconds.
- A background save to a DB of the response should occur (not time critical)
- There can be up to 30000 simultaneous users - i.e., on average 1000 queries a second, each requiring an average 0.2 sec calculation, so that would necessitate around 200 CPUs.
Currently I'm look at GAE Java (for quicker deployment and less IT hassle) and EC2 (Speed and price optimization) as options.
Where can I learn more about the right way to set ups such a system? past threads, different blogs, books, etc..
BTW, if my terminology is wrong or confusing, please let me know.
I'd greatly appreciate any help.