Continuous delivery (CD) is an increasingly popular development approach that enables software to be released to production at any time rather than on a scheduled basis. Spurred by automation and a growing need for more frequent software updates, CD is on the path to becoming a mainstream software development methodology.
Delivering new software features faster while making sure that services are solid and secure is a key differentiator for every business today, observed Tracy Miranda, executive director of the Continuous Delivery Foundation, a neutral resource for CD tools, support, and information. "Continuous delivery is critical to how teams deliver value and how organizations maintain business agility," she noted.
For decades, enterprise software providers have focused on delivering large quarterly releases. "This system is slow because if there are any bugs in such a large release, developers have to sift through the deployed update in its entirety to find the problem to patch," said Eric Johnson, executive vice president of engineering for open-source code collaboration platform provider GitLab. Enterprises committed to CD rapidly deliver a string of highly granular releases. "This way, if there are any bugs in a new individual release they’re easily and swiftly addressed by developers' teams.
Most developers appreciate CD because it helps them deliver higher quality work while limiting the risk of introducing unwanted change into production environments. CD ensures that the entire software delivery lifecycle from source control, to building and testing, to artifact release, and ultimately deployment into real environments, is automated and consistent, explained Brent Austin, director of engineering at Liberty Mutual Insurance.
High levels of test automation are critical in CD, allowing developers to confidently introduce changes quickly with high confidence and higher quality. "CD also helps developers think in small batch sizes, which allows for easier and more effective rollback scenarios when issues are found and makes introducing change safer," Austin said. "Ultimately, developers are more empowered and happier when they know they can meet the demands of the business without being held up by inefficient and inconsistent software delivery processes and procedures," he noted.
CD benefits end users by delivering new features faster, and in many cases, at lower cost. "When software releases are done in a consistent and automated way, the cycle time of getting from idea to source to production is significantly decreased," Austin said. The result is products that deliver more value. "With the delivery process automated and consistent, you eliminate much of the fixed cost of incremental delivery, which should lead to lower costs over time," he observed.
CD also helps to lower the risk of developer burnout. "Research ... shows that CD improves employee job satisfaction and creates a high-trust culture where developers identify closer with their organizations," Miranda said.
Most successful CD transitions begin by identifying bottlenecks and other common issues hampering existing software delivery pipelines. "Companies can easily find the hiccups in inefficient pipelines by checking for flags like the runtimes of the jobs, stages and the total runtime of the pipeline itself," Johnson noted. "Companies should then begin ... integrating automation into the pipeline to alleviate these bottlenecks," he advised.
Software providers, meanwhile, need to design the optimum CD release schedule for their teams. Johnson advised aiming for a consistent release rate, including easily identifiable bug fixes. GitLab, for instance, supplies monthly releases. "It gives customers something to look forward to, enables us to constantly evolve our product, and gives dev teams a common goal to work toward," he said.
Another important initial step is selecting a CD orchestration tool—essential for building and establishing a reliable, efficient workflow. "Next, create production-like environments and implement continuous testing," recommended Venky Chennapragada, DevOps architect at business and IT advisory firm Capgemini North America. "Then, design and implement promotion-quality gates from quality assurance and production environments and, finally, automate the workflows."
Austin advised using Continuous Integration (CI) as a way to automate the integration of code changes from multiple contributors into a single software project. "Get success with the basics, show your teams the power and benefits gained from a consistent and automated build, test, and release process," he said. "Introduce test automation, continuous testing, and transition your teams away from treating testing as a separate process to one that happens automatically in your pipeline."
Integration and maintenance costs can rapidly emerge as a CD adoption barrier. "Enterprises looking to make the transition need to be sure they don’t underestimate how much of their overall IT budget will go to support the teams of engineers needed to integrate and maintain complex toolchains," Johnson said. "Underestimating cost and not providing the support teams necessary to keep toolchains well maintained could stop an enterprise from reaping the benefits of CD before it even starts."
A critical mistake many software organizations make is believing there's a magic software stack that will solve every need or challenge encountered on the path to successful CD. "It’s critical to listen to your engineering and DevOps teams ... and to assess whatever stack you're using as it gains adoption within your organization," said Will Blew, software engineering manager at cloud hosting service Linode. "If something isn’t working, change it before it's more of a problem than a solution."
Finally, don’t forget the essential role security must play in the software delivery lifecycle and its importance in any successful CD initiative. "Thinking about security as a separate function will continue to impact the ability for developers to increase delivery speed, especially in compliance-heavy industries," Austin said. He advised automating security testing and making it an integral part of the software delivery process, ensuring that developers receive feedback on security issues quickly and efficiently. "This will empower them to address issues early, and ultimately, deliver a higher quality product for the business," he noted.
For more on continuous delivery, follow up with these articles: