Amazon Web Services has received a lot of coverage since it launched. I've held off investigating it, since it smelt like one of those shiny things that end up distracting me from my core work. Last week I realized I was hitting the limits of my cheap dedicated server and needed some sort of change, so I decided to dip my toe into AWS. Two days later I had a big smile on my face, and my whole service switched over. I was surprised at how much it offered to an early-stage startup like mine. Here's some unexpected benefits of the change:
It saves me time on administration
I had to spend a few hours upfront creating a custom AMI disk image with all the software I needed pre-installed, and a couple of EBS volumes for my site code and database files. With that done, it is literally a 30 second job to create a new server instance, mount the volumes and have a new copy of the site running. With one click I can create a remotely stored backup of all my data. No early-stage startup could afford to create the infrastructure to make things this easy themselves. As a big bonus, the wonderful ElasticFox Firefox extension gives you a very fast way to manage all your services too. It's already saved me hours of messing around.
I can rapidly prototype
Having an easy way to revert to frequent backups means I can stop worrying about trashing my system and try out risky changes without fear. A straightforward way of creating new servers lets me leave a production version running while I try out something scary on a development machine. It's like the difference a version control system makes for source code. Suddenly I'm able to rapidly develop new systems, safe in the knowledge I can quickly back out my changes if they prove to be a mistake. This has helped me add new features much faster than before.
I'm only paying for what I use
If I need to do some processing on the 500,000 emails in the Enron database, having a blazingly-fast machine can save me a lot of waiting. With EC2 I pay by the hour, so I can pay $1.60 for 120 minutes of their fastest machine, and then switch back to something much cheaper for standard web serving. This flexibility lets me keep my costs very low, without compromising performance.
There is one very tempting reason to move to Amazon, but I think it's a trap:
If you're an engineer at an early-stage startup, it's a lot of fun to spend time building to cope with a million visitors. After all, look at Twitter's troubles, wouldn't they have been better off with a more scalable architecture? No, premature scalability is a company-killing mistake. Having too many visitors to your site is a great problem to have, and at that point you'll have people throwing money at you, you can use that to re-engineer. Most companies die before that point because they don't release, and time spent on scalability is time taken from features, bug-fixing and actually getting the damn thing shipped.
If the only appealing thing about AWS for your unreleased project is scalability, forget it and focus on development.