Rapid Developer Deploy to Windows Azure

At PDC10, I did a session Building, Deploying and Managing Windows Azure Applications that covered the end to end experience of using Windows Azure.

To watch the recording, go to https://player.microsoftpdc.com/session click on “Guide”, my session is at 1130 on Thursday.

As part of the session I was able to show some of the cool new features we have coming in our next release (coming sometime in November or December of 2010) and I’m following up with a series of blog posts.

The first in this series is showing the rapid developer develop feature.

As part of developing a web site that runs on Windows Azure, it is really common for the developer not only to iterate on F5 but also to iterate in the cloud.

Today, iterating on the cloud requires a full redeployment which can be a lengthy operation.  We set out to make this scenario better.

I’ll start with a Cloud Service that has a single Web role and I’ll just use the default ASP.NET template.

image

To enable rapid developer deploy, right click on the Cloud Service node in Solution Explorer, select publish and on the publish dialog, enable remote desktop (post coming soon) and select the checkbox to “Enable Web Deploy”:

image

Once the deployment has completed, view the web page in IE:

image

and you’ll see the standard ASP.NET template.  Since at the time of this writing, this is not live, you’ll see that I’m showing this in one of our test clusters, cloudapp-preview.net.

image 

From here, I can go back and make any changes I want to my web site. In this case, I’ll just update the text on that main page.

image

Hit “save” and right click on the WebRole1 project this time and select publish.

image

This will bring up a dialog where the settings to deploy to the web role are already setup.  Make sure you fill out the username/pass at the bottom of the dialog.

image 

Note: The settings for this profile are saved to the project folder, in my sample they are saved in a file called WebRole1.Publish.xml.  The tools created this file on your behalf.

After the web deploy publish completes – really in the matter of seconds (depends on the extent of the changes and payload of course) – I can go back to IE, refresh the browser and…

image

The changes were deployed to the Windows Azure.  Yes, in the matter of seconds.  As someone that iterates a lot on the cloud, I’m really happy we have this feature coming in v1.3.

What’s Going On?

The checkbox on the cloud service deploy dialog sets up MS deploy on the web role instance which we then use the standard VS tools for MS deploy to deploy to that instance. 

We need to have Remote Desktop enabled, not because it uses remote desktop but because it needs a user account.  This requirement is likely to be removed over time.

Why Developer Deploy?

The reason why this is supported only for a single instance developer scenario is because we’re only modifying the instance, we’re not modifying the package that Windows Azure will use to create new instances.

Additionally, because Windows Azure instances are stateless (to support scale out) an OS update or other management operation can result in that instance being replaced by a different instance which means that the changes you made through web deploy will be lost.

As you can imagine, those behaviors are not acceptable for production but are totally fine for the developer scenario.

We’ll eventually get a full story around this but didn’t want to wait to solve the developer case first.

Finally

This will be coming between now and the end of the year (2010) – let me know what you think.