Can anyone with experience of deploying CPU intensive applications into 'cloud' environments (like e.g. Linode), comment on whether these environments have been suitable?
It seems to me that with VPS/Cloud hosting, specifications like RAM, Disk space, network, are very well defined, whereas CPU power is rather more of a grey area. And when you need to move to a more powerful machine, you often seem to have to up everything (memory, disk space etc.) - which quickly gets expensive...
So, are these environments appropriate, our would dedicated servers be the more cost effective route?
EDIT:
To clarify, I'm talking about constantly high CPU usage patterns.
Cloud is hosting is that cost effective, since it allows hosting provider to re-use resources that would be idle in case of dedicated server.
If you have an application that is using a lot of resources 24/7 - dedicated servers will be cheaper, since there's no overhead for co-locating many applications on one server.
If your load is high, but eventual - you can use cloud, but you will need to do calculations base on real numbers to determine if it is not high enough and eventual enough to be cheaper in cloud.
It dependso n the task. For a rare task (i.e. something that does not run all the time but for example you ned the capacity for a week and n more) the definition is less rlevant than the fact that you pay per hour.
http://www.geekosystem.com/amazon-cloud-supercomputer/
$1,279 per hour for 300.000 cores ;) THis is cheap if you need it for 10 hours a month or every week - not setup, no hardware that is otherwise unused.
If the application runs long term on full load - it is ridiculous expensive, you are far better off buying the hardware and colocating.
So, it does not depend on how cpu intensive, but like laways on your usage patterns.
Also, it depends on the nature of the work-load.
In addition to what @TomTom said, as an extreme example, if you're going to do a high-number of floating-point computations in the cloud, it might be better to go with a dedicated build of a hybrid machine with lots of graphics cards in it supported by good CUDA libraries.
As @DukeLion mentioned, the advantage of 'cloud' based VPS providers is that it can offer lower costs only if you are willing to share your resources. Otherwise, a dedicated machine route may be better. There are some providers who'll be happy to provide you with both.
An alternative might be a hybrid setup - a dedicated machine for most of the time supported by some VPSes that only kick in in the event of a spill-over. So the VPS is more as a buffer against failure.