Utility computing or cloud computing is a current trend. Being able to access data and applications anywhere is a great value and not having to build your own infrastructure can help you focus on other things that you do that you care more about (more in my previous post on utility computing here).

Even though utility computing is talked about as a single concept, the fact is that different companies in the market have different views on what is important. And their offerings reflect their differing perspectives.

I'll take a look through a few of the most popular cloud computing offerings - from the standpoint of a developer: someone who is going to take one of these and then build something on top of them. I'm not looking at services that exist in the cloud - but rather the platforms that exist that allow companies to build cloud offerings on top of them.

Let's start with a very high-level summary of each and then look at what implications the differences have. So, off we go...

Options: Amazon, Microsoft, and Google

Amazon is probably the "oldest" of these 3, so let's start with them.

Amazon offers "Amazon Web Services" (AWS) which is actually several different offerings:

  1. Elastic Compute Cloud (EC2) - virtual computers
  2. SimpleDB - data storage
  3. Simple Storage Service (S3) - file storage
  4. Simple Queue Service - something you might need when build software - read about it on Wikipedia (yes, queuing in software is exactly like queuing in real life: aka "forming a line and moving through it for service")

S3 is probably the most widely known and used. Basecamp uses S3 to store and serve up any files that you upload to a project and my favorite backup utility JungleDisk uses S3 to backup my files to.

Amazon's approach is agnostic: they give you parts and you can use any or all to combine to make a service. For example, Basecamp uses just S3 - everything else is on their own: servers, databases, application, etc.. The choice is left to the company creating the software.

Microsoft: It's ALive

Microsoft's offering is called "Live Mesh." And this is the newest - they are just talking about it in the last few weeks and all you can do with it is sign up for the beta - you have no guarantee of getting in and you certainly can't write your own programs on it yet.

Contrary to Amazon: it's a single offering. It combines storage and computer - all developers see is an "API." Also contrary to Amazon, there is a program to download: if you are in the beta - you can share files between computers, and use remote desktop...

The file sharing, etc. isn't really the platform, it's the first program (or the first "experience" in Live Mesh speak) that is available for the Live Mesh platform. But the plan is to offer the Live Mesh platform to developers for creating software in the future.

Google: Our way or the highway

Google offers the "App Engine." Like Microsoft's Live Mesh: you can't pick which parts you want: it's a specific set of services + computer all bundled together.

They select the hardware underneath, you get access to some Google services (like membership, data storage, and mail).

Like Amazon: it's available today. It's still relatively new, but it's more than just a plan for how you can build software: it's actually available currently.

Visually

Let's look at the differences visually. I've drawn a stack of services and hardware. At the top, you have the application that a company is building. That touches the cloud computing service in question which then allows particular interactions with the hardware, operating system, and services underneath.

Let's start with Amazon Web Services (click image to view a larger version):

Amazon just gives you nearly direct access to different services. For example: you get and pay for virtual hardware - you add whatever operating system you want to run on top of it. You can interact directly with a variety of services. And again, you can pick and choose which services to use.

Microsoft's Live Mesh looks completely different:

I've illustrated Microsoft's Live Mesh as a layer that attaches on top of the services - the application doesn't see any services or hardware or operating system: you just see the Live Mesh and the API therein. The services, operating system, and hardware are all completely hidden (or " abstracted") by the API. This simplifies interactions at the expense of flexibility.

Google also has a different visual signature that shows its differing approach:

Google's App Engine is also an API: but it's a bit more like existing programming: you are dealing with services separately - if in a limited fashion. The skinny vertical runs through some services that you get - you get access to a select set and, while you can choose to not use some of them, you are paying (presumably eventually) for the entire app engine as a whole: hardware, software, and services.

Woop-dee-doo, what does it all mean, Basil?

Well, the approach says some interesting things about the goals of each company.

Microsoft is clearly trying to launch a new platform. In Ray Ozzie's memo on Live Mesh,1 he talks about the myriad of digital devices that we own: "TVs, game consoles, digital picture frames, DVRs, media players, cameras and camcorders, home servers, home automation systems, our car's entertainment and navigation systems, and more." The idea behind Live mesh is to have a platform that works across all of these devices.

Think of it this way: what if your home thermostat had a "Designed for Windows" sticker on it? Would that suggest anything to you? How about your fridge or your digital picture frame or your closet organizer?

That would suggest to me that they were designed to work together and, as I know from Windows Mobile-based mobile phones, that I would get a similar experience on each Windows-based device. Now draw that out further to cover the devices mentioned. It suggests that there is a single unifying platform across all of them. And a company could build software that encompassed many of them by using the existing Windows platform.

To get Microsoft from "the company that makes Windows and Office" to a company that is has a platform on the web (think Google Docs) would be a major step. But the goals of the Live Mesh platform appear more ambitious: get Microsoft to have a platform that goes from computer through the web to any device. And, as hardware keeps getting faster and smaller and cheaper, increasingly, many home gadgets are looking like small computers or accessories to computers (see my thoughts on the Chumby).

That's the platform play of Live Mesh. But the cloud computing aspect is just the way to get there. If Microsoft makes it easy for companies to write software on their platform2 then they should be able to build some momentum behind this approach.

Google, I think, isn't taking any big swings with its App Engine. This is the natural evolution of their existing cloud computing offerings (the aforementioned Google Docs, also Google Talk, GMail, etc.). They've just lowered the wall a bit to let companies build things on their systems. I don't see this as real alternative to Live Mesh - they have different aims.

When you look at the Live Mesh platform play, Amazon Web Services suddenly looks a lot more similar. Amazon is a platform play as well - just a de-centralized one. With Amazon, the platform an open and à la carte one.

So this is obviously very different. Microsoft is bringing hardware and scalability to the game, just as Amazon is. But Microsoft is trying to woo would-be users with the promise of a system that works across device boundaries. Amazon is just offering the cheapest, most reliable core services.

Both approaches have merit. Microsoft's may be riskier: the value of platform grows as you have more devices on it and more people using it. There are network effects there (just like there are with Windows and Office and there were with DOS before that). Amazon has no network effects: you can use their services to integrate with any other options - it doesn't matter.

Microsoft is betting, hoping to win a new platform that they can ride through this wave of technology. Amazon wants to be the digital electric company. It'll be interesting to watch how each approach pans out.

Also...

I should also mention 2 other cloud / grid computing offerings:

  1. Sun Utility Computing
    Their setup is similar to Amazon's EC2. Like EC2, you pay for compute cycles. The difference is that EC2 is expecting you to run a specific server. Sun allows you to submit "jobs" that then run as fast as possible. It's meant for calculations as opposed to providing services.
    If you want a website where you can list information on the next shuttle launch, pick EC2.
    If you want to figure out when to launch the shuttle next - based on the moon's position, earth's weather patterns, available take-off and approach vectors, pick Sun's Grid.
  2. IBM Grid Computing
    IBM seems to be focused on how to create a grid of computers - and doesn't offer a grid itself. If you are setting up your own grid, this is where to look.

Links

  1. Ray Ozzie is Microsoft's Chief Software Architect - a role Bill Gates used to hold - and will be solely responsible for technical architecture and product oversight when Gates steps down in July 2008
  2. They have historically been good at doing this. One could argue that recently they haven't been as good. Indeed, Joel Spolsky has argued just such a thing: http://www.joelonsoftware.com/articles/APIWar.html

Update March 15, 2009: just transferred this post from blogger to my new domain: jeffreypriebe.com. The server running the blog software is running on Amazon EC2. Virtual and in the cloud. Works like a dream.

Monday, May 26, 2008, 12:00 AM

tagged: google, microsoft, amazon, cloudcomputing, livemesh, amazonwebservices, googleappengine