Continuous delivery is becoming an increasingly prevalent term in the software development community as organizations look for more ways to accelerate their releases and improve software quality. The practice is focused on deploying constantly and making product refinement an ongoing pursuit rather than something constrained to specific large updates. Like agile and DevOps – both of which are complementary practices – continuous delivery is largely an organizational change, but it is one that is facilitated primarily by increased automation. Tools like static analysis software help cut down on testing time and ensure that new features can be delivered with consistency.
Embarking on a continuous delivery program requires careful planning and the understanding that it’s not necessary to treat it as an all-or-nothing transition, XebiaLabs executive Andrew Phillips wrote in a recent column for SD Times. He recommended organizations set clear goals and define the entire management process for new releases. Additionally, companies should consider the tools they already have implemented that are helping to accelerate release schedules. If they are already using automated source code analysis, for instance, it may be possible to move to a continuous delivery model with very little adjustment. For those that don’t have such tools in place, automating manual processes like testing and provisioning is one of the first steps toward a more continuous model.
“With automation, you save on time and resources, you can introduce reliability into the process, and you can mitigate the risk of rolling out new features quickly,” Phillips wrote. “Cutting out manual processes reduces the room for error and results in a higher quality end product. Bugs can be identified and dealt with earlier in the process when it is cheaper to fix them.”
Once this level of automation is introduced, it becomes much easier for businesses to meet fast, frequent delivery goals. Additionally, if companies introduce a DevOps model, in which barriers between the operations and delivery departments are reduced, some of the organizational practices that slow down delivery can be overcome as well.
Avoiding too much acceleration
With continuous delivery processes fully implemented, companies may reach a point where new deployments are almost constant, which can introduce some issues of its own. Having version control and thorough documentation in place is an important protective measure with continuous deployment so that it’s always possible to quickly reverse changes or refer to previous versions of code, The Register’s Adrian Bridgwater explained in a recent article. Additionally, having some manual process in place to slow things down slightly can help avoid problems that might slide through a fully automated deployment system undetected.
“There might be a 10 percent human factor in continuous delivery and change management in industry areas such as defense,” Mark Warren, European marketing director for Perforce, told The Register.
For instance, adding in a peer code review step or giving engineers the option to request a code review at any point can help introduce extra clarity into the process and offer just enough delay to avoid a flawed rollout. The process also changes slightly for vendors building integrated hardware and software products, as hardware by necessity introduces a prototyping step, Bridgwater noted. Developers need to make sure they deliver a version of embedded software for a hardware prototype that is relatively stable and not designed to be constantly revised, as such products do not facilitate such release approaches.
Nonetheless, while it is important to understand the limitations of continuous delivery, introducing more automated tools into the development process can offer businesses substantial benefits when it comes to speeding up release cycles and building in the ability to constantly revise application releases. With static analysis augmented by occasional manual code review, companies can put out software quickly while maintaining quality standards.