By Andrew Phillips, XebiaLabs
Say hello to happier customers and goodbye to release surprises.
Across the board, organizations are looking to simplify and accelerate their release process: to get more features to their customers faster, at less cost, with less effort and greater reliability.
The current reality of application releases is that getting a new version from code drop through testing, acceptance and all the way to go live still requires a mix of automated and manual tasks, all of which have to be scheduled, coordinated and managed.
Automation for many tasks in a typical release is not integrated into the overall release tracking and coordination -- which results in time-consuming overhead to keep the release team’s global picture up-to-date.
Handling the communications divide between Development, QA and Operations introduces additional time lags, increases the risk of miscommunications and errors, and generally promotes ineffectiveness.
Given the number of manual tasks still required and the sometimes appalling lack of communications between the various teams, organizations need to adopt practical ways to improve and simplify their process of releasing software.
1. Understand and Define Your Release Process
It seems painfully obvious, but your first step must be to critically analyze the current state of your release management and application delivery process. Look at its pros and cons, be honest about what is broken, and devise a checklist of what needs to be fixed, replaced or abandoned. A great exercise is to do a few, in-depth walk-through sessions with key individuals involved in the software release process.
2. Create Regular Release Cycles
Once you get a picture of the current state of the process, establish a regular release cycle. Ideally, it’s better to have a short release cycle in which small changes are released frequently as opposed to a long cycle that makes each release a Big Beast.
Establishing a release cycle is important in a few respects:
- It creates a routine that all teams can organize around.
- It gives teams plenty of opportunities to discuss and document all release issues on a regular basis.
- It provides a timetable for all stakeholders, especially customers. When people know what to expect they are more likely to be responsive and helpful.
3. Automate and Standardize as Much as You Can
Automation enables you to do repetitive tasks without tying up valuable human resources and subjecting your work to error-prone human actions. Standardizing enables your inputs and outputs to be consistent and predictable every time.
Generally, in a manual-intensive environment, adding a large amount of changes to software introduces risk. Due to the long time gap between releases, there is a high possibility that environments will also have to be changed. Every deployment becomes a “big bang” that touches many moving parts. The chance of hitting some untested combination is high. Every release becomes unique, making it impossible to build confidence by relying on experience from a previous successful release.
An automated release pipeline only has to be configured and tested once, and from thereon can be repeated many times in a row -- for example, once per hour. As releases are proven on a continuous basis, the risk of a poor or error-ridden feature making it to production is minimal, certainly much lower than when operating with an infrequent, manual release process.
4. Build Out and Optimize Your Delivery Infrastructure
Your release infrastructure consists of everything that needs to be in place to create and deploy the software and to enable users to use it.
Typically, the infrastructure includes: build automation and continuous integration, test and deployment automation, and environment provisioning and configuration management. Human services and skills are often part of the infrastructure. For example, you might need to hire programmers with continuous integration experience or release engineers who have worked with DevOps automation tools.
It is critical that you discover, as early as you can, hidden bottlenecks in procuring the required automation or the missing skills. You need to resolve them before they hold up your delivery.
Release management is, of course, key to any software delivery organization. But too often, the importance of accelerating and streamlining the process is ignored, overlooked or downplayed. To accelerate and streamline the release management, smart companies have integrated release coordination and tracking with the new automation coming from DevOps and continuous delivery.
By following my tips above, you should be able to significantly improve and simplify the way your organization releases software. Ultimately, your improved process will produce higher quality software, delivered faster.
About the Author
Andrew Phillips is VP of Product Management for XebiaLabs, a provider of application release automation software for enterprises looking to improve the application delivery process.