Amazon.com is on a roll. In March, the company launched the Simple Storage Service (S3), a metered disk in the cloud that I praised here and discussed in more detail on my blog. So in July, when the Simple Queuing Service (SQS) emerged from, developers were so busy with S3 that they hardly noticed.
Nobody was satisfied with just a disk in the cloud. Everybody wanted services in the cloud, too. Openfount's Queued Server skinned the cat one way, by parking AJAX applications on S3 and implementing a simple protocol for communicating with services elsewhere. The ever-inventive Les Orchard skinned the cat another way, creating an AJAX/S3 Wiki that has both code and data residing on S3.
Could true services in the cloud be far behind? Sure enough, they weren't.
This morning I fired up my first instance of a Xen-based virtual Linux box on Amazon's just-announced grid, the Elastic Compute Cloud (EC2). I logged in as root and copied over a little Python-based search service that I run on my own server at home, along with the several XML data files that it searches. I fired up Python, pointed a browser at the domain name that EC2 had assigned to my virtual server, and ... it just worked. As I wrote on my blog, where I also posted a screencast showing my service running on EC2: Wow!
Although EC2 operates under the rubric of Amazon Web Services, by the way, I suspect that the only Web services many developers will use in connection with Amazon's grid are those encapsulated by the Java-based API toolkit used to provision, launch, and terminate virtual instances of Linux. My search application on EC2, for example, used Python's built-in HTTP server. Alternatively, it could have used the Apache server that's built into all standard EC2 images. Or I could have built a custom Amazon Machine Image including some nonstandard server.
As the blogosphere quickly noted, the EC2 rate of a dime per instance-hour works out to US$72 per month for the equivalent of a 1.7Ghz Xeon CPU with 1.75GB of RAM and 160GB of local disk. And that doesn't include bandwidth, billed separately at the S3 rate of 20 cents per gigabyte. So for now, if you want to park one box on the Internet and leave it running indefinitely, better deals can be had from dedicated hosting providers. As the service's name suggests, though, if you need an elastic capability that can nimbly grow or shrink, EC2 is the only game in town.
But not for long. Earlier this week, I met with the folks at 3Tera to discuss their AppLogic grid system. It's a kissing cousin to EC2, but with a more sophisticated approach to configuring and managing bundles of Linux applications along with other so-called virtual appliances that encapsulate firewalls and load balancers. The AppLogic management console is a slick AJAX application that you use to wire up collections of these virtual appliances and clone them for reuse.
Way back in 2002, I thought Web services would be the vector for Internet-scale grid computing. It looks like I got that wrong. A Web service is a fairly general construct, but an entire virtual machine is far more general. And since Linux is the OS of choice for cloud-based virtual machines, last week's suggestion that Microsoft get cracking on portable Avalon and open XAML makes even more sense this week.