Why does Azure deployment take so long?

DeploymentAzure

Deployment Problem Overview


I'm trying to understand why it can take from 20-60min to deploy a small application to Azure (using the configuration/package upload method, not from within VS).

I've read through this situation and this one but I'm still a little unclear - is there a weird non-technology ritual that occurs while the instances are distributing, like somebody over at Microsoft lighting a candle or doing a dance?

Deployment Solutions


Solution 1 - Deployment

As a fellow Azure user, I share your pain - deploying isn't "quick"/"painless" - and this hurts especially when you're in a development cycle and want to test dev iterations on Azure. However, in general deployments should take much less than 60 minutes - and less than 20 minutes too.

Steve Marx provided a brief overview of the steps involved in deployment: http://blog.smarx.com/posts/what-happens-when-you-deploy-on-windows-azure

And he references a deeper level explanation at: http://channel9.msdn.com/blogs/pdc2008/es19

Solution 2 - Deployment

There's a lot that goes on behind the scenes when you deploy an application to the Azure cloud. I don't have any special insight into what's going on behind the curtain, but having worked on the VS tools to upload projects to the Azure cloud, these are my impressions as an outsider looking in:

Among other things:

  1. Hardware must be allocated from the available pool of servers
  2. The VHD of the core OS must be uploaded to the machine
  3. A VM instance must be initialized and booted off that VHD image
  4. Your application package must be copied to the VM and installed
  5. The VM monitor must wait for your service to start up, or fail
  6. The data center load balancer and firewall must be made aware of your application's service endpoints
  7. Once all of that has synchronized, your app is accessible from the web.

The VHD image is probably gigabytes in size, much larger than your app upload. Even on a superfast datacenter network, it takes time to move that much stuff into the VM, unpack it, and boot from it. Also, the load balancer and firewall are probably optimized to make routing requests the highest priority. Reconfiguring the firewall and load balancer is lower priority, and has to be done without interrupting traffic flow.

Also note that all this work only has to be done for a new deployment. Updating an existing deployment rolls out much faster - 2 to 3 minutes instead of 20 to 30 minutes.

Solution 3 - Deployment

Check out this PDC10 video by Mark Russinovich. He goes into great detail on what's going on inside Azure with some insights into the (admittedly slow) deployment process.

Original link is no longer working. Here's another link to a version of the same presentation: https://channel9.msdn.com/events/Build/BUILD2011/SAC-853T

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionemptysetView Question on Stackoverflow
Solution 1 - DeploymentStuartView Answer on Stackoverflow
Solution 2 - DeploymentdthorpeView Answer on Stackoverflow
Solution 3 - DeploymentBrentDaCodeMonkeyView Answer on Stackoverflow