InfoWorld: Could you give me a quick sketch?
Russinovich: Sure. When it comes to virtual machines, which are really the building blocks of the cloud, we've got pools of servers, we've got something called a fabric controller, which is like the brain.
InfoWorld: Right. The Azure fabric.
Russinovich: The Azure fabric. And that manages a pool of machines. And then there's an application front-end, a virtual machine deployment front-end we call RDFE — Red Dog Front End. Red Dog is a carryover from Microsoft from Azure's code name.
Here's what happens when a customer deploys a PaaS application (what we call a Cloud Service, a collection of virtual machines) or when they deploy IaaS as virtual machines: It goes to RDFE, then RDFE finds a fabric controller that has, based on heuristics, the best utilization and capacity available for the deployment and gives the deployment to the fabric controller, which then goes and finds servers to deploy the virtual machines onto.
It uses a bunch of heuristics as well as constraint satisfaction to figure out which servers are the ones that the virtual machines should land on. We've got the concept of update domains and fault domains, so that when the infrastructure is being updated we don't take down the whole application. We split the application across different servers so that when we're servicing the infrastructure of the servers, it's only taking down a slice of the application.
InfoWorld: Is that through componentizing applications as well?
Russinovich: If you look, for example, at our PaaS platform, we've got two virtual machine object types called Worker and Web Role. They're really layered on top of virtual machines. So you would take a piece of code, you would say: I want to run it in my Web front-end from my application. The developer writes it, packages it up, and gives it to us.
Now, what we do is create a virtual machine and then stick that code in it. And that code is a stateless programming model, so anything that it writes to the local store on that server is treated as cache — temporary, ephemeral storage. They would use an external durable store like Windows Azure Storage or Windows Azure Database to store its data. And then when they're in that programming model — the PaaS program model — a developer to scale out can simply say: I want ten of those, I want 100 of those. And then the fabric would go and scale that out to 100 virtual machines.
As it's scaling that out, you can request up to 20 update demands, which means we would spread you across at least 20 servers — likely way more than that because of the way the allocation works. But then that means that when we update a server only one twentieth of your front-end will go down while it's being updated.
Sign up for Computerworld eNewsletters.