I recall some benchmarks showing Google's cloud offering (Compute Engine) had better CPU performance than EC2. There are other providers (e.g. Digital Ocean) that might be worth a look -- I expect their hardware is on average much newer than Amazon's.
It really depends on how much your time is worth vs the cost of the jobs you want to run. EC2 is the IBM (or Microsoft, depending on your age) of cloud offerings -- you won't be fired for choosing it, but you might be able to shave some time and $s off by going elsewhere.
If you do regular CPU work (24/7), you may be better off getting dedicated servers (with raw CPU grunt) for far cheaper cost per month.
For our service we are going to use a co-lo server for our processing with an Elastic Beanstalk frontend and use a VPC + OpenVPN setup to bridge the two. We will incur some bandwidth charges because of this, but the cross talk between the boxes is actually minimal, since the client will post directly to the co-lo box(es) when it needs to upload, etc.
Amazon is a huge premium over physical hardware. You use them when a) you want to scale immediately, b) you have financial reasons for not buying your own gear for long-term use (1-3 years), and c) you don't mind paying the premium.
It's really cheap to try and see if it's good enough for you.
ass.
This HNer runs core services on spot instances and claims at least a 70% savings:
I frequently want quick and easy access to a bunch of instances, but I don't expect to use any single instance for very long. For example, I might partition my data into 30 pieces, and I want to simultaneously operate on each partition for five minutes.) Since Amazon charges a 1 hr minimum for each instance you set up, I'd pay for 30 hours.
I'm experimenting with a switch to PiCloud. PiCloud charges twice as much per hour, but they only charge for the time I use (150 minutes in this example).
PiCloud has the additional advantage of being vastly easier to use than ec2.
There are use cases for ec2 (and elastic map-reduce)...
If your load requirements are mostly fixed and spread out evenly, alternatives including buying your own hardware may be cheaper.
If you do a lot of number crunching in short (hours or days) bursts, EC2 can be significantly cheaper, as you are not paying for the idle time. Of course, if the numerical computation is scalable across computers, it can be made bursty - instead of running one average server for a month, you could use 30 servers for a day and get the results faster for the same total cost.
The slightly harder: go for technologies that help you spread the load, so you spawn several instances that run simultaneously, run for some time and them stop, costing you maybe what would cost you for 1 instance/month but giving you the results faster
The even harder way is going for spot instances and orchestrating the sharding and reassembly of results
Is EC2 a good choice if you just want to do that? Or what would you guys use for that?