Improving Repeatability and Auditability with Continuous Delivery

Billy Korando
97 Things
Published in
3 min readFeb 23, 2020

Handcrafting is valued because of the time and effort involved and small imperfections which give character and uniqueness. While these qualities might be valued in food, furniture, or art, when it comes to delivering code these qualities are serious impediments to an organization’s success.

Humans are not well suited to performing repetitive tasks. No matter how detail-oriented a person might be, mistakes happen when performing the series of complex steps required to deploy an application. A step might be skipped, run in the wrong environment, or otherwise performed incorrectly, leading to a deployment failure.

When deployment failures happen, a considerable amount of time can be spent investigating what went wrong. This investigative process is hindered as manual processes often lack a central point of control and can be opaque. When a root cause is determined, the typical resolution is to add more layers of control to prevent the problem from happening again, but this usually only succeeds in making the deployment process more complicated and painful!

Organizations struggling to deliver code is not new, so to address this organizations have begun to migrate to Continuous Delivery (CD). CD is an approach of automating the steps of delivering code to production. From the time when a developer commits a change to when that change is deployed to production, any step that can be automated should be — testing, change control, the process of deployment, etc.

When migrating to CD, a primary motivation is to reduce the time and effort required to deploy code. While reduced time and effort are significant advantages to CD, they aren’t the only ones! CD also improves the repeatability and auditability of your deployment process. Here is why should care about these qualities:

Repeatable

Automating the steps to deploy code means scripting each step so that it can be executed by a computer instead of a human. This greatly improves the repeatability of the deployment process as computers excel at performing repetitive tasks.

A repeatable process is inherently less risky, which can encourage organizations to release more often and with smaller changesets. This can lead to second order benefits of targeting a release to fix specific issues, such as performance. A release can contain only performance changes, which can make it possible to measure if those changes improved, degraded, or had no impact on performance.

Auditable

Automating deployments greatly improves transparency, which naturally improves auditability. The scripts used to execute steps and values supplied to them can be stored in version control allowing for easy review. Automated deployments can also generate reports which can also help with auditing. The improved auditability of the deployment process is what moves CD from a niche concept for start-ups and non-mission critical applications to essential in even the most tightly regulated and controlled industries.

When I first heard about CD I found the deployments on demand concept intoxicating. After reading Continuous Delivery by Jez Humble and David Farley I learnt that the reduced time and effort are in many ways secondary to the repeatability and auditability that CD offered. If your organization has been struggling to deliver code to production, I hope this can help build your case to management for why you should switch to CD.

--

--

Billy Korando
97 Things

Developer Advocate with @IBM. International speaker. Opinions are my own.