Sunday, November 12, 2006

The Ur Web 2.0 Post

In the comments of Tarn's blog, Dan asks apropos of nearly nothing, what Amazon EC2 is. While on the one hand, I'm slightly stunned that anybody outside a very small collective of developers has heard of Amazon EC2, Dan also says that he doesn't really understand what I talk about when I talk about Web Services. This is always true of everything I write about. But I'll try again anyway.

Most of the populace that throws around the term "Web 2.0" tends to mean things like YouTube, Flickr, MySpace, and Blogger--things where the content is user-generated. This ilk of websites, while being "new" in some sense, has never struck me as a particular innovation in and of themselves (though the technology that runs them, in many cases, is). To me, Web 2.0 is the process of opening up the platforms on which the web is built, so that the software that powers applications that have heretofore only existed in the browser can be used everywhere--the desktop, your mobile devices, your television, and so on.

When I explain what a web service is at parties, I use the following example. If you, a person, want to know some piece of information about any book out there, you'd go to your browser and surf to and look it up. There you'll find the cover image, all the bibliographic information, some reviews, etc. Now say you're a computer program and you want that same information about a book (because, e.g., you're a library program and you want to be able to display information about a book when somebody scans the barcode). You, alas, do not know how to use a web browser. You could be programmed to read web pages, but web pages come in all sorts of formats and change all the time, and computer programs have to be taught to read each one individually, because they're just that stupid sometimes. So web services are like web pages for software applications--sets of functions that they can call in order to get information that will be returned in a format that they, the software applications, will understand. In the example I just gave, the web service would have a function that, when you send it a book's ISBN, returns a formatted set of information about that book, with its title, author, number of pages, and so on, in a format that the software has been programmed to understand.

Amazon has a free web service called ECS that does exactly what I've just described, as well as many other things. You can sign up for it (and encounter some of my handiwork) here. Then you too could write software applications that are web-integrated and feature-rich and blah blah blah Web 2.0 blah. You are, in fact, using web services all the time--most of the widgets in OSX Dashboard, for instance, make web service calls to get their information. iTunes, when you pop in a CD, is querying a webservice to figure out what album it is so that it can populate the album information.

The nice thing about web services is that they allow you (for a definition of the word "you" that involves "you" being a "software developer") to use the software that Amazon wrote in more ways than just browsing their web site. ECS, for instance, allows you to use their shopping cart software, so that if you're running your own e-commerce website, you can use Amazon's shopping cart instead of writing your own (if written by a more business-oriented person, that sentence would have contained the word "leverage," and probably "synergy," and "core competencies," but I would have had to shoot myself in the head afterwards). The point is, Amazon sells things. They started out with books, then music, then pretty much everything that was a thing, and now they're selling (or in some cases, just giving away) the use of the software that they wrote to sell those things in the first place.

Amazon S3 and Amazon EC2 are the next phase of that: selling something that Amazon has in excess most of the year (hard drive space and server time--Amazon has to have enough hardware on hand to run the website at Christmas when we get vastly more traffic, but the rest of the time these servers are just sitting around). EC2 (or "Elastic Compute Cloud"--which, by the way, was called "Amazon Execution Service" at first, until someone finally noticed that the name was liable to give people the wrong idea about what the product did) allows you to create computer jobs (e.g. you need to render some massive 3-D images, or sift through a mass of data from SETI looking for patterns) and rent time on Amazon servers to perform them, which means you don't have to buy and maintain your own server. And like S3 (which, to review, is a virtual harddrive), it's also a web service, so you can do this from a computer program. Which in turn means you could, e.g., run a website that renders massive 3-D images or analyzes SETI data, host the actual website on your tiny slow machine in your basement, and farm out all the labor and storage out to Amazon, thereby changing the world. Or at least that's the way it looked on paper.


Mita said...

Is it just me, or was this post so completely not about Veronica Mars?

dan said...

I found this post to be lacking in VM as well, and yet it was a great explanation of EC2, which I find quite fascinating. I agree that this is more of a new "shift" in web technology than, say, tagging or something. And that's why I asked about it, because it was discussed at last week's Web 2.0 conference. Truly 2.0.

Amazon started e-commerce, so they might as well start Web 2.0 as well. Changing the world, indeed!