Delivering software fast, furiously, and continuously are some of the great promises that come to mind when thinking of DevOps. The goal is to achieve the ultimate results repeatedly and repeatable throughout the whole Software Development Lifecycle. Great business alignment, the proper team, good processes, and the right tools, are key success factors in DevOps. The choice of your deployment platform is at least as important to the success of your solution.
On our architect evangelism team we get a lot of opportunity to share experiences and learn from and with customers and partners. Recently one of my peers, @cloudbeatsch, published a great article on the Microsoft Architecture portal. Based on real world experience, his paper, Continuous Deployment using Azure Web Sites, focuses on the different aspects involved in developing and implementing a deployment and release strategy using Microsoft Azure Web Sites.
He nicely summarizes his piece like this:
”The first thing to remember is that deployment does not equal release:
As part of continuous deployment, we trigger the deployment pipeline as soon as a check-in happens. If the check-in unit tests and integration builds are successful, we run the integration tests and—only after this step—deploy the artifacts to the staging environment (just to then perform more tests, such as smoke and acceptance tests). If all tests are passed, the new release can be rolled out across the production environment. Having such a deployment strategy in place becomes handy when instant releases (like bug fixes) are required. The goal is to fully automate this deployment pipeline to shorten the time (and pain) from check-in to release. While doing so, the solution must be able to respond to requests at all times, even when in the process of deploying or testing a new release. To achieve zero downtime, we commonly take advantage of two deployment strategies: blue-green deployment and canary releasing.”
The main topics covered in depth are the following:
- Deployment and release strategies: Common release deployment strategies independent of the underlying technologies.
- Deployment and release strategies for Microsoft Azure Web Sites: Detailed release and deployment strategies for Microsoft Azure Web Sites, including the use of Git and Microsoft Visual Studio Online.
- Scripting the configuration and deployment of Microsoft Azure Web Sites: Details on how to build an automated deployment pipeline using the Microsoft Azure Command Line Interface (CLI) and Windows PowerShell scripting.
- Managing releases using the Service Gateway: Using the Service Gateway to implement advanced release strategies.
- Scripting example: A comprehensive example of all previously discussed topics.
The document is full of useful suggestions around specific tools for A/B testing, swapping between production and staging, and building out your deployment pipeline using Git.
@cloudbeatsch made all code available via its own Github repository. The document closes with a rich set of resource links. My verdict: Definitely worth your time.