I've been playing with Amazon's S3 and EC2, and they look potentially useful. S3 is the storage system. You pay for storage and transfers. EC2 is the computation system. You pay for virtual computers. Their Getting Started Guide for EC2 is pretty good. It describes step by step how to set up your development environment, then gives you a starter virtual machine to play with. I followed the instructions and got Apache and SSH.

The big advantage of EC2 over running your own servers is that you can get more capacity quickly. In fact it's called Elastic Cloud for that reason. If you're running a web service on a conventional hosting system and then are mentioned on Digg, you're either going to run out of capacity, or you're paying for extra capacity that you're not using most of the time. With EC2, you can monitor for the Digg Effect and add more virtual machines to handle the extra traffic, then release them when the Diggers move on. You only pay when you use the machines.

For my own projects though, I'm never going to get hit by Digg. I was hoping to use EC2 as a cheap low-capacity server. I misunderstood the pricing though. I thought it was $0.10/CPU-hour, but it's actually $0.10/clock-hour. When my server is sitting idle, I'm still getting charged. At $0.10/hour, that's over $70/month, and that's a bit too much to pay for an idle server. I'll instead use my Mac Mini at home.

I might still use S3 for off-site backup. I have regular backups at home, but all the backups are … at home. If anything happens to my home, I lose all copies of all my data. S3 charges for storage, uploads, and downloads, and I estimate that after I upload all my photos, I'd pay $4.50/month. That's pretty reasonable for off-site backup. I haven't investigated whether there are off-the-shelf backup solutions for S3. I want something portable (Linux, Windows, Mac) and command line (so I can automate it). I might end up writing my own quick&dirty scripts for this.

If you're starting a web service, you should definitely take a look at S3 and EC2. They're fairly cheap, and the reliability and flexibility may be worth a lot to your company.

Labels: ,

5 comments:

Amit wrote at Monday, July 2, 2007 at 8:56:00 PM PDT

I should add: it looks like every virtual machine gets its own external IP address, but if you have lots of virtual machines, you don't need all those IPs. Amazon has a NAT approach to conserve IPs. I suspect they don't offer very low cost machines because they're limited by IPs in IPv4. It might be useful for them to offer a lower cost virtual hosting solution that forwards requests to virtual machines that do not have an external IP.

Alok wrote at Tuesday, July 3, 2007 at 3:02:00 PM PDT

At what price point will you be willing to:

1. Pay for a 1 cpu-execution-hour.
2. Charge for providing a 1 cpu-execution-hour?

Before you consider its all non-sensical because of ever fluctuating prices ... And add to that the price of pricing it!

$70/month does seem to be a bit high, but you do get dedicated hardware?

Amit wrote at Tuesday, July 3, 2007 at 4:47:00 PM PDT

Hi Alok,

I think I would be willing to pay $1 per CPU-hour, but it depends on what I'm actually doing with it.

$70/month is high because I'm not doing much — I'm not getting much value, nor am I using many resources. However if I had a busy database or computation or some other task that actually used lots of resources, I think $70/month would be a good price.

Amit wrote at Thursday, July 12, 2007 at 9:17:00 AM PDT

It looks like Dare Obasanjo has looked at EC2 and S3 a lot more carefully than I have, and come to the conclusion that it's not a great choice for the kinds of apps I'd be interested in writing.

Amit wrote at Thursday, January 5, 2012 at 10:30:00 AM PST

Since looking at EC2/S3 in 2007, they've added micro instances (which seem like the right size for me), reserved instances (which allow you to pre-pay for a lower cost), and elastic block store (which gives you persistent storage). It's now at a price point where I can use it for my hobby projects.