Paul McDougall makes an interesting point about the newly announced Windows Azure.

Forget the marketing hype, Windows Azure isn’t the latest Microsoft (NSDQ: MSFT) operating system. It’s a business strategy. One that shows Redmond believes the days in which it can make fat profits from software alone are numbered.

Microsoft is betting that an increasing number of its customers will want their applications on tap — from “the cloud” (i.e., the Internet) — in the years ahead. And it’s going to charge them subscription fees that cover hosting, maintenance, upgrades, and the software itself.

Is this cloud computing? To answer that, we need to do what too few cloud computing advocates have done by defining what the term means. The name “cloud computing” comes from the tradition of using a cloud in a system diagram to represent a network through which parts of a system are connected. Most often this network is the internet, but any other network with internet-like latency and reliability characteristics is probably equivalent for our purposes. The untrusted nature of the internet, along with the need to secure communications across it, is relevant only to the lowest level of distributed or cloud computing, so the first essential characteristic of cloud computing is separation of components across an internet-like network. Of course, that doesn’t distinguish cloud computing from many other things people have been doing across the internet for years – such as viewing this web page. To see what makes cloud computing somewhat new, let’s look at why someone might design a system that relies on a network with such generally undesirable characteristics as the internet. Here are some possibilities.

  • To “outsource” responsibility for the operations and maintenance of some infrastructure piece(s). Again, this website is an example, as are the various kinds of service providers that have been around for years.
  • To ensure that some of your data and/or operational capacity are located “elsewhere” (in geographic terms) to protect against disaster. Again, data replication and backup data centers have been serving this need for a long time.
  • To move some of the data or computation closer to users. Content delivery networks aren’t new.
  • Because it’s the “in” thing to do among your (not very) technical peers.

None of these really differentiate cloud computing from network/distributed computing as it has already existed. There is, however, one thing about cloud computing that is at least somewhat new. It’s the property that has come to be called “elasticity” (e.g. Amazon’s Elastic Compute Cloud, Enomaly’s ElasticDrive). This has less to do with where the resources are than in how they’re allocated. In a traditional system, resources tend to be allocated statically to a user, and sit idle whenever that user doesn’t need them. In an elastic system, resources are allocated to users on demand almost instantaneously, perhaps even under program rather than human control, and freed when no longer needed with the user charged only for the capacity actually used. By borrowing idle capacity from a common pool instead of dedicating a chunk to each user, resources are used more efficiently and fewer resources need to be provisioned. Of course, this same property can be observed in many other areas of computing – multi-user operating systems, virtual memory, SMP, virtualization, and “thin provisioning” of storage (to name but a few examples) all to some degree or another embody this same principle.

What makes cloud computing interesting, then, is the intersection of large-scale distribution and elasticity. With cloud computing, when you need more resources you can not only reach out and grab more but you can grab them anywhere. Sometimes you don’t even care where else that is. There’s a technical part to this, and there’s also a non-technical part around how the accounting is managed; both had to develop to get where we are now, and both need to develop more before cloud computing can really be considered mature.

To get back to the original Azure question as an illustrative case, it is clearly distributed and it is provided as a service (“multi-tenancy” and service-level agreements are common characteristics of cloud computing but not IMO defining characteristics). What is not clear is whether it’s “elastic” in the necessary sense or to the necessary degree. The Fabric Controller allegedly “views all of the data center as fabric of shared hardware resources that can be managed and shared with all the services there” but I can’t tell whether it allows dynamic expansion and contraction of the capacity available to an application or whether it’s just a fancy form of automated upgrades and perhaps some failover functionality thrown in (more like VMware Infrastructure than true cloud computing as I’m defining it) and there is some talk in white papers of programmatically changing numbers of instances via the classic Microsoftian method of editing a config file. I can’t really tell whether Azure is cloud computing or not. It’s very interesting, though, and – contrary to what the people with cloud-computing products or services to sell you might say – there are many interesting things going on that aren’t cloud computing. In fact, the most interesting part of the latest Azure and web-based Office announcements to me is that multiple people can edit a document and see each others’ updates in real time which is a hard problem of a very different sort. Azure is certainly a significant milestone for Microsoft, though, and perhaps for the entire industry.