Today’s post is the third in our series on continuous delivery. In the first post on continuous delivery, we introduced the concept and tied it in to the core principles of Agile. We revealed the three key enablers to continuous delivery as stated by Jez Humble at Agile Alliance 2012. In our second post on continuous delivery, we looked at the three secret ingredients that Jez proposes to support these enablers. For today’s post, we explore the ways to reduce risk during our release cycles.
One of the hallmark ways that risk is reduced through frequent release cycles is by focusing on what the customer wants. By rigorous testing and effective Sprint Review meetings, the team should get very clear direction on what the customer wants. If the product is not progressing as the customer expects, then either these meetings are not very effective or the Product Owner has not clarified the right items from the Product Backlog to be included in the current Sprint. But should these be working effectively, much of the risk associated with release is reduced.
Another concept from Humble is that low-risk releases are incremental. He talks about several approaches that a team can take. Those are listed briefly below:
Feature toggles – this allows a development team to define a small snippet of code that controls whether a feature is turned on or off for a specific release. It can also be flipped in a particular environment (development, test, production) and just as easily turned off. This line of thought requires modularized code with a well-defined entry point. It can be very effective at working on code that may not be fully ready for a release without having to remove it from the code base prior to the release itself. Once a feature is approved, the toggle should be removed so that it doesn’t get accidentally disabled in future releases.
Dark launching – closely resembles feature toggles yet gives the team some control over limited feature deployment. By turning on features to a subset of users (either named or a percentage of your population) without a formal announcement, a development team can get a look at how a feature is performing in a limited environment. This reduces the risk because any encountered problems have not reached all users, and controls are in place to turn the feature off completely.
Blue-green deployment – requires two identical production environments, each with matching infrastructure. The current release is on one set of hardware, and the next release is on the other. At the time of release to production, control is flipped to the new environment by way of network routing. If there are problems, control is switched back by the same routing change. No messy rollback of code – a simple flip of a switch is all it takes to restore service.
Canary releases – this is the concept of coal miners sending canaries into the mine to check for oxygen. If the canary survived, so could the coal miners. The same thing applies when you release to a small test community. If they “survive” through the initial paces of the release, then it can be assumed that a larger population can receive the release as well. This requires not only identifying the canaries but also the systems on which the canaries will test separately from the general population.
In our next and final post on continuous delivery, we’ll summarize everything we’ve talked about and look at the last piece of the puzzle to make continuous deployment a success. In the meantime, consider the following questions:
- Do you have the right infrastructure in place to support continuous deployment?
- Do you have a team of test users who can give you quality, reliable feedback on a release quickly?
- Are you using the proper coding constructs to get started with continuous deployment?
If you paused to answer to any of these questions, let Braintrust Consulting Group help you find and fix the underlying problems. With our experienced team of Scrum coaches, Braintrust can help you overcome these barriers and bring continuous delivery to your shop. Click on the Contact page to hear from one of our product specialists. Or, head over to the Services tab to find out more about our offerings.