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.

Comments

  • Anonymous
    October 30, 2010
    Very exciting news! This has renewed my interest in Windows Azure.

  • Anonymous
    October 30, 2010
    What happens if a whole development team uses this approach? Will they overwrite eachothers deployment?

  • Anonymous
    November 01, 2010
    Wouter - you can have multiple msdeploy profiles so that multiple developers can use the same project and deploy to different locations.

  • Anonymous
    November 17, 2010
    I am not sure I am clear on this: Will this method by used to deploy a production web application from Visual Studio directly to Azure (like you can do to App Engine from Ecliplse) without going through the lengthy and SLOW process currently used to deploy an application to Azure through the awkward web-based interface and copying and pasting file names from folders into the browser? If that's the case, this is really cool.

  • Anonymous
    November 18, 2010
    Ralph - as I mentioned in the post, this is not for production at all, just a rapid developer update. That said, we've had deploy directly from VS (all async) since June.

  • Anonymous
    November 23, 2010
    The comment has been removed

  • Anonymous
    December 02, 2010
    Jim now that v1.3 of the Tools/SDK are out I am looking for this capability but don't find it. Did it not make it into v1.3 or is it found somewhere else?

  • Anonymous
    December 12, 2010
    Like "Curious George", I too have been waiting for this capability. Azure SDK 1.3 was released a few days ago but I cannot see the option to use web deploy in the Azure publishing dialog. Did this feature not make it into theh 1.3 SDK?

  • Anonymous
    December 12, 2010
    Like "Curious George", I too have been waiting for this capability. Azure SDK 1.3 was released a few days ago but I cannot see the option to use web deploy in the Azure publishing dialog. Did this feature not make it into theh 1.3 SDK?

  • Anonymous
    January 04, 2011
    Hi Bitcrazed and CuriousGeorge - sorry, as you know this didn't make the 1.3 release last November, we're hopeful it will make the next one.  Sorry I can't be more specific.

  • Anonymous
    January 05, 2011
    I don't like complaining and I love Microsoft technologies. But Azure application deployment is just too slow. I can create a new instance of Windows machine on Amazon Web Services, set up the administrator account, connect through RDP, upload my ASP.NET MVC application through Visual Studio and get everything working faster than uploading a new version of an existing app on Azure. I don't know why that is, but, as much as I like using Microsoft products, in this case I have to stick with Amazon until the deployment for Azure is significantly improved.