DevOps for Windows Azure

"DevOps" (Short for Developer Operations) is one of a group of new terms such as "Cloud", "Big Data" and "Data Scientist" - words that are somewhere between marketing and tasks we've actually had around in other forms for years.However, working in a Distributed Environment (Both on and off premises)  like Windows Azure does bring a new set of tasks to the operations we currently perform in Information Technology.

Before I offer some guidance here, I need to carefully define the term "DevOps" as I use it.There are other definitions that involve Application Lifecycle Management (ALM) and standard operations policies, and you're free to use those as well, but this is the definition I'll use for this post:  By DevOps I mean those tasks involved with deploying, managing and monitoring a Windows Azure (or hybrid) project.

Another caveat: This is a non-authoritative, non-comprehensive post. I'll include only an outline of the major tasks, not a complete manual on the topic. There's enough knowledge needed on this topic for at least a whitepaper or two, and perhaps even a book, but for the moment I wanted to get some information out to ensure you have something to work from until those come along.This is primarily a list of resources for a DevOps team.

With all of those caveats in mind, we'll start the discussion after the project is conceived and architected. In most cases the DevOps team (whether that is a dedicated team or simply part of what the current IT Ops team does) is also involved in the design, at least from an information point of view. There's a great overview of the entire process available in poster form here: And you should also read this complete manual in preparation here:


The first task after the design of the project is deployment. The deployment method depends on the type of solution; Windows Azure has the ability to run VM's, software code, or provide services that are already created (such as Active Directory). 


Deploying Virtual Machines:

Manually from the Portal:

Through Scripting:

Copying your own VM's to Windows Azure: 

Using System Center: 

Virtual Networking:,,


Through Visual Studio:

Using CSPack:

Through Scripting:,


Manually from the Portal:

Through Scripting:


Monitoring the system after deployment involves watching the availability and uptime of the system, along with security intrusions and tracking access through code.


Using MetricsHub:

Uptime and Availability through the Portal:

Uptime and Availability through Third Party Vendors:,

Automatic Notification:


Performance Counters: 

Logging Diagnostics PaaS:

Internal Instrumentation for PaaS: 

Third Party Performance Testing:,


Understanding Costs:,

Subscription Management: 

System Center:

Third-Party Tools:

Example of listing your deployments:


Managing the deployment involves Security, Upgrades, Troubleshooting, and High-Availability/Disaster Recovery.

Windows Azure Management Portal: 

Management API's: and


Security Trust Center:

Working with Windows Azure Active Directory:

Windows Azure Authentication:

Deploying a secure ASP.NET MVC application with OAuth:


ALM Process for PaaS: 


Windows Azure Support:

Upgrade and Fault Domains:


Load-Balancing Endpoints for IaaS:

Extending SQL Server HADR to Windows Azure: 

HADR for IaaS:,

Multiple Instances for PaaS: 

Business Continuity for Windows Azure:


When the project is complete, you'll need to remove the VM's in IaaS, or data and code from PaaS and shut down the deployment. Prior to doing that, you should:

  1. Copy all data from the deployment to a local repository
  2. Document the process
  3. Notify Microsoft of your intent to stop the project to work with your representative on billing matters

The primary tool for disposal is the Windows Azure Portal.