1. The ability to scale easily. This is going to depend on your application's traffic pattern. Is it predictable? If not, how costly is a failure due to an unforeseen spike? For us, since we host other people's communities, it's very important that we be able to scale easily. I'm willing to pay a premium for this.
2. Amazon builds into their pricing the cost of handling the day to day routine failures and the bigger 'oh shit' failures. Again, I'd rather pay for this directly rather than having it as a liability by either (a) paying someone on my staff to worry about it, or (b) ignoring it all together turning it into a hidden liability.
3. The Amazon architecture allows us to do things that we can't do elsewhere easily. For example: easily moving IPs between instances with Elastic IPs. This makes doing certain types of upgrades much easier. We boot a new instance with new software, make sure it's working, then swap the IP over. Also, the combination of EBS and S3 are a lifesaver for doing backups. Again, we're managing other people's data so I'm happy to pay a premium to do hourly snapshots of my data and continuous backup rotation through S3, with occasional movement offsite using AWS Import/Export.
These are just some examples. Amazon makes many things easier, and only a few things harder, and on the surface appears to cost 'more'. However, I believe when you factor in the true cost of running a site, including all of the time involved in handling failures, designing architectures that have been designed before, performing monkey maintenance (swapping drives, power supplies, whatever), you'll find that the Amazon stack is probably on par or cheaper from a total cost of ownership point of view.
I've used Google App Engine and Azure but am focusing on GAE because of costs and the ability to ignore instances. When I'm not there and the server falls down, the App Engine team will be seriously motivated to get it up. Over time, I expect them to hugely improve reliability without me having to upgrade anything. My VM at Slicehost has been fantastic but is probably less secure than a Google VM.
The crazy thing is that I won't have to pay Google a cent until I get serious traffic.
Then, when you need to explain why, you have an easier time too. There is the 'no one got fired for buying IBM' spect to it, but there is also genuine peace of mind.
[EDIT] The post I was referring to: http://news.ycombinator.com/item?id=860414
And I feel much less stress now that I'm "in the cloud". If a server breaks, one click starts a new instance with the apps and configuration already in place. If a virtual hard drive crashes, one click restores a snapshot.
Here in Germany, hosting is rediclious cheap. You get decent quad core boxes with 12GB RAM for about 70EUR (~100$) including 2-3TB of traffic.
Compared to ec2 it's reeeealy cheap and located in the middle of continental europe. The Dublin/Ireland location of EC2 has a much higher latency and is more expensive than the US instances.
So most startups [1] rent a lot of those cheap boxes in Germany, doing a loadbalancing/failover setup in front of it. done. If you need more hardware: It usually takes <24hrs to get a new box. So just order 1-2 more than you currently need as backup for scaling and faults.
[1] I analyzed that from the most popular hosting provider of http://IsItRails.com
could you tell me the name of that provider? Seems like a delicious option.
Thanks
Hosting something 24/7 on for example Amazon's EC2 is barely cost effective. On the other hand doing regular hosting combined with EC2 for peaks is extremely cost effective.
That myth keeps popping up but is simply not true in many situations. There is a wide corridor of use-cases in the mid-range where EC2 is indeed more cost effective than rented or owned servers. Sometimes dramatically so.
The number of factors involved is obviously quite large, but lets just consider the baseline cost of having a "large" instance running for 3 years straight: $10386 (or as low as $4510 if you commit by reservation).
You'll be hard-pressed to match that figure for a rented or bought server, simply because EC2 is a 50.000 server gig and likely yields slightly more economy-of-scale savings than your setup ever could.
Do you get the bandwidth cheaper elsewhere? Perhaps but probably not significantly.
Do you get storage with similar flexibility and scalability cheaper elsewhere? Highly unlikely.
Oh and housing, power and staff aren't free either. Neither are the premium support contracts with your various suppliers to get same-day replacements for failed hardware.
Once you factor everything in you'll realize that EC2 is not nearly as expensive as it may seem at a glance.
If the server hosting your EC2 instance fails, you just bring up a replacement and continue on your way. If you are on a traditional VPS, you either have to bring up a new instance from backup, or wait for the provider to get things running again, but at least they have some strong motivation to since multiple customers are down. If you have a rented or coloed server, you have to wait for someone to fix it, with shorter guaranteed turn-around times costing you more.
You might be able to make the case that you could deploy an app on a single EC2 instance because in the event of failure, your downtime probably runs much less than an hour. Downtime due to a hardware problem on a rented or coloed server is likely to be much more than that. Maybe that tradeoff is acceptable to keep the costs down, but it is a tradeoff. If you aren't willing to make that tradeoff, your cheaper rented or coloed server is actually two servers, with a rough doubling in costs.
http://unfeatureddocuments.com/content/disaster-and-recovery
For a small startup without a dedicated sysadmin I can't think of anything better than EC2 for handling this kind of thing.
The other advantage I can think of is to see if a better configuration would help scalability needs. For e.g. if I think a x-bit x-core box would work better for my app, there isnt a need to buy the whole thing before knowing it does no good. I could just pick one from the cloud and pay only for usage.