Asked if Microsoft is truly innovating in the race towards so-called cloud computing - not just reacting to what companies like Amazon and Google have done - Redmond chief Steve Ballmer pointed to Windows Azure, the company's sky-high development platform.
"I think Azure is very different than anything else on the market. I don't think that anyone else is trying to redefine the programming model," Ballmer said this morning during a cloud-happy speech at the University of Washington, broadcast live over the web.
Azure, he implied, looks further down the horizon than something along the lines of Amazon's Elastic Compute Cloud (EC2), which predates Azure by several years. "I think Amazon has done a nice job of helping you take the server-based programming model - the programming model of yesterday, that is not scale-agnostic - and then bringing it into the cloud," he said.
"On the other hand, what we're trying to do with Azure is let you write a different kind of application, and I think we're more forward in our design points in a lot of things we're doing, and at least right now, I don't see the other guy out there who's doing the equivalent."
Whereas Amazon EC2 offers on-demand online access to compute resources that can run just about anything - spinning up individual server instances for the developer - Azure provides an added a level of abstraction. You don't see the server instances. You see Microsoft's development tools, and they scale up VMs behind the scenes as required.
Microsoft director of platform strategy Tim O'Brien paints "infrastructure clouds" like Amazon EC2 or Rackspace Cloud Servers as mere VM vendors. "If you have an app today that runs on Windows or Linux, Amazon can give you a VM and you can put it up in their data center," he said, during a recent conversation with The Reg. "It's programming-model agnostic. It doesn't matter what tools you use or what frameworks. But there's more work involved."
For O'Brien, this sort of thing is best for quickly prototyping new apps or moving existing apps onto a remote infrastructure. By contrast, he argued, a "platform cloud" like Azure makes life easier for those looking to build new, large applications. "As a developer, you build your app on Windows Azure, and we take care of all the underlying infrastructure for you." It handles scaling, service management, health monitoring, and so on.
But at the same time, Azure restricts what dev tools you can use, and despite Ballmer's claim that no one else is doing this sort of thing Azure is doing, there are some conspicuous services that aren't that far away - most notably Google App Engine.
Google App Engine is also an online platform for building and deploying applications, and it too provides a level of abstraction that hides more of the infrastructure nitty-gritty. Google gives you some choice on what tools you can use - you can now code in Python or Java, for instance - but the list is tightly constricted to conform with Google's famously-distributed back-end infrastructure. And it places equally tight restrictions on the way you code.
For instance, Google App Engine terminates a system request if it takes more than 30 seconds or returns more than 10MB of data. And in order to use Google's proprietary BigTable distributed database, you have to carefully follow its data model, which, yes, breaks things up into tiny pieces.
Ballmer didn't mention Google App Engine. But he did mention another area where Azure will depart from App Engine - and Amazon EC2.