A key developer of Microsoft's Azure platform was Microsoft corporate vice president Amitabh Srivistava, who discussed the effort with InfoWorld US editor in chief Eric Knorr and editor at large Paul Krill at the recent Microsoft Professional Developers Conference in Los Angeles.
InfoWorld: So you would develop locally on your machine. The whole deployment phase is then automated onto the platform?
Srivistava: Yes. And the same bits that you have been developing on your machine, exactly the same bits get deployed to the cloud. Once you have developed and you have been testing on a development machine, you see it working and you say, "OK, looks pretty good, let's go try it on the real stuff." Then you don't have to compile again. And we provide a very effective, very distributed storage that consists of mostly things like blobs, tables, a management system, and a lot of computation all designed to be scalable and available.
Does this mean a diminishing of shrink-wrapped, boxed software? Are people going to be buying online? Deploying online?
I really don't think it's an either/or proposition. I see it more as an extension of the server to the cloud. And clearly yes, some things that are running on premises, on server, will move to the cloud. But on the other hand, you're also opening up new opportunities because a certain class of applications will be written where they'll be doing part of the things on premises and part of the things on cloud. People have some data they're not going to move to the cloud no matter what happens. They're going to keep it on premises. Certain functions are not going to go away. [And] there are clear advantages [that] the cloud brings. If you marry the two together, you're opening up a new class of applications. I think it's going to be an interesting dynamic and I think it's net-additive...
What we are trying to do with Windows Azure is to really build an operating system for the whole cloud that is not a single machine. By managing the cloud, you're taking care of the lifecycle management of your services, you're offering lots and lots more value.
It seems with all the stuff that you've added here to the Azure platform, it's really potentially a richer development environment than your average Microsoft customer would set up on premise.
You should not think of it as a monolithic platform. Even the second-layer things are all à la carte. You can call OpenID and not use Live ID if you don't want to. Because we [have these] interfaces, you can call in our service model, services can interact through interfaces there. So it's not monolithic. Now, because a lot of these services are available, yes, it's a very comprehensive platform. [But] you can pick and choose and you can even use third-party stuff whenever you want to. It's very open. And you can even come back and say, "I won't use anything else except Windows Azure and everything else I'm going to get from the outside" and that's fine, too.
So what happens next? I understand there's going to be some road map laid out next year for Azure.
We are opening up with managed code today. We're going to open up native code after that. We'll definitely have that. Right now we are in one datacentre location. We will give the option for people to keep their data in multiple locations, slowly do it in the US and then go international. [We] will have more than one data location in the calendar year 2009. Clearly we will be adding more features to each of the subsystem that we have got, like tables and storage systems and things like that. And we're going to have more service models.
It seems to me that having covered the early web services, protocol development, and all of that, we went from a bunch of standards and the idea that we would build applications across the internet, and that was way, way ahead of its time, and it never really happened. Then it sort of evolved more into SOA inside the firewall. In a way, this seems like we're going back to the original model of web services, the idea of applications across the internet. Is it time now?
One of the things that we did when we were building Windows Azure was we spent almost six months just looking at what the world needed. Inside Microsoft, we have over 160 or so services ourselves. There is no platform, so every service is written as a silo. Every service just goes and manages the whole thing by [itself].
Now here what happens is that Windows Azure owns all the datacentre resources, it's one computer. You come in and you say, "Hey, I want 1,000 machines." I give you 1,000. Somebody else comes in and says, "I want 1,000." I give him 1,000. Then he says, "Hey, I don't want 800 of them, take them back." I take them back. Somebody else comes in. I can move the resources back and forth around across the whole thing there, so it cuts costs. Efficiency comes into play. By automating all of those things there, the [operations and expenses] goes down, because I don't need as many humans running around managing those things there. So there's a lot of efficiencies and things like that coming along.
So that's all dynamic provisioning? It's all using Hyper-V?
No, we have our own hypervisor, which we have designed specifically for the design point. We just call it Windows Azure hypervisor, but a lot of the advancements we are making are moving into Hyper-V, [so] the same thing will be available to the on-premises customer. The virtualisation support that you get in hardware like NPT and EPT, the nested page tables that are there. We are taking a lot of advantage of that, so that's what [Microsoft engineer] Dave Cutler has done in really optimising the thing out, so the overhead of the hypervisor is extremely low. And when the hypervisor overhead is low, then we can get maximum utilisation by dividing the machine.
Do you expect people to develop multitenancy apps?
Is the framework evolving in that direction to make that easier?
Yes. But my feeling is that we will welcome both, so we don't care. The way we have designed the system is that if a person is developing a multitenancy app, that's fine.
What features would enable multitenancy on the platform?
The biggest element that you get if you have [multitenancy], because we have multiple tenants that are going on, one is security becomes a very big feature. And so we have multiple levels of security in place. We have VLANs, we put IP filters. And each tenant runs in its own VM in the hypervisor, so we completely go back and isolate each of the tenants out so that they cannot interfere with each other. The second element comes out if a tenant acquires just a fraction of a machine. Each tenant could require different compute powers. We have the power to do that because one tenant can come back and say, "Oh, I only want one-eighth of a machine." One tenant comes back and says, "Hey, I want a whole machine." We can dynamically give them whatever they need.