As I speak to people in companies across industries, there is a general recognition of benefits of Continuous Delivery—that it allows companies to move fast without sacrificing quality. This sentiment is supported by industry surveys, such as State of DevOps Report.But what is the underlying reason that makes Continuous Delivery such a powerful
Continuous Delivery is defined as automation of software delivery process—from the moment the code is merged in version control to when it is fully operational in production. This includes all aspects of software delivery—compilation, composition, testing, deployment, etc.
Traditional (manual) software delivery process is subject to human judgement and human mistakes, especially when people are under pressure to deliver. This negatively impacts production quality—wrong commands get executed, software is misconfigured, bugs that should have been caught get through to production. In contrast to the tradition approach, Continuous Delivery, through automation, inherently provides for determinism—software delivery is no longer subject to human judgement and human mistakes. This leads to improved quality.
The overall latency of software delivery is also greatly reduced with automation, as it is no longer subject to human delays and hand offs. Compared to the traditional approach, where latency is measured in days, weeks, and months, the latency of fully automated software delivery is so negligible—minutes, hours—that it can be considered zero.
As the cost of delivering software is minimized to almost zero, the software teams can reduce the batch size of their delivery. Since they are no longer limited by the cost of software delivery, software teams can release at will. Thus, the overall speed improves.
Reducing the batch size also has positive impact on quality: less new code to integrate leads to reduced complexity, which leads to fewer bugs.
Companies can utilize Continuous Delivery to improve business agility, as increased speed allows them to react to market challenges and to continuously improve their products by getting them into customer’s hands frequently.
Continuous Delivery provides for determinism in software delivery process, thus improving software quality. It minimizes the cost of software delivery, thus allowing for reduction in batch size, which increases speed and further improves quality. This, in turn, leads to improved business agility.
If you are not yet practicing Continuous Delivery, what are you waiting for?