CI/CD Is Not A Progression

Feb 06, 2018

In marketing materials from the world of Continuous Integration and Continuous Delivery (CI/CD) , one often comes across the idea there is a progression from continuous integration* (good) to continuous delivery** (better) to continuous deployment*** (best). The progression typically goes as follows:

  1. First, you write tests and implement continuous integration to ensure your tests are run when new code hits your main branch.
  2. Once your test suite is bulletproof and you are practicing continuous integration flawlessly, you can deploy code using continuous delivery techniques.
  3. Finally, your testing, integration, and delivery practices are so good you implement continuous deployment, wherein any code that passes all automated tests is automatically deployed to production.

Getting continuous deployment going is certainly a great goal in some situations, but this progression doesn’t suit everyone. Hiding in-progress work behind feature flags — which is often part of continuous deployment — may make adding functionality more cumbersome and, in the case of refactoring, necessitate maintaining multiple code paths to accomplish the same goal. An organization with deployment constraints (operating in a highly regulated environment, for example) may not need to fully implement continuous delivery, but might automate its release process with great results. Web apps that don’t have a substantial user base may not care about having the latest revision out on prod. The list goes on.

The good news, though, is organizations can reap benefits by implementing continuous integration and continuous delivery techniques in whatever form and order is best for them. Continuous delivery practices — primarily, automating the deployment and release processes — let business priorities drive deployment decisions, instead of vice versa. These practices can be implemented without continuous integration, although CI certainly gives software organizations the ability to confidently deliver code.

Similarly, teams can make huge improvements by implementing continuous integration without putting any thought towards continuous delivery. The wins are well-documented, but I’ll say it again: it is best practice to write good tests alongside your code, merge code frequently, and run all of your tests when code is merged. Some organizations may never reap the benefits of full continuous delivery, but can still implement continuous integration with great results.

To me, the best practices are clear:

  • Write tests and run them when code is merged
  • Make deployment frictionless

Apart from that, organizations have to think critically about which of these techniques can help them deliver quality software to the right people at the right time.


* Continuous Integration: “a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily,” says Martin Fowler. It generally involves running automated tests that run every time a patch is merged (“integrated”) into the repository’s main branch of code.

** Continuous Delivery: a software development practice “in which teams produce software in short cycles, ensuring that the software can be reliably released at any time.”

*** Continuous Deployment: automatically deploying every passing build to production.


You May Also Like

These Stories On Technology

Josh Seiden, the fourth speaker in Stride's Leadership through adversity speaker series, spoke about the value of focusing on outcomes, defined as: "measurable changes in behavior that drive business results."   read more

To start his talk, psychiatrist and psychoanalyst Dr. Kerry Sulkowicz admitted to being at a bit of a loss when asked about best practices for leading through a pandemic. "The honest answer is I don't know," he stated, "because none of us has lived ... read more

Taking direct aim at the narrative of the "all in" entrepreneur who takes extreme risks and depletes their bank account before ultimately succeeding, noted NYC VC Charlie O'Donnell started his Stride Consulting “Leading through Adversity” talk on May ... read more

In response to these unprecedented times and the challenges that they are bringing to company leaders, Stride Consulting launched a speaker series entitled “Leading through Adversity” on May 26th. In the series, experts from around the globe, from a ... read more

Get Email Updates