Continuous Integration vs. Continuous Delivery vs. Continuous Deployment

Comparisons made between CI vs. CD vs.CD

Posted by Mr.Humorous 🥘 on October 11, 2018

1. What is Continuous Integration?

Developers merge/rebase their changes to project’s main branch as often as possible. Their changes are validated by creating a build and then running a series of automated tests against the build.

2. What is Continuous Delivery?

It is an extension of CI to automate release process and therefore allows simple deploymentment by just clicking a button.

3. What is Continuous Deployment?

One step further than Continuous Delivery to remove button click by automatically releasing new changes as long as there is no failed test.

4. Full pipeline illustration

CI-CD-CD Illustration

5. Benefits Comparison

Practice What You Need (Cost) What You Gain
Continuous Integration
  • Write automated tests for each feature, improvement or bug fix
  • A CI server that can monitor the main repository and run the tests automatically for every new commit pushed
  • Merge changes as often as possible
  • Less bugs get released as regressions are captured early by automated tests
  • Building the release is easy as all integration issues have been solved early
  • Developers are notified once their changes break the build and can fix it before making any context switch
  • Testing costs are minimized as CI server can run many tests in seconds
  • QA team spends less time testing and can focus on quality improvements
Continuous Delivery
  • Strong foundation in CI and test suite needs to cover enough of codebase
  • Deployments need to be automated with a manual run trigger
  • Feature flags to guard incomplete features
  • No complicated deployment thus no need to prepare for a release
  • Release more often leads to accelerated feedback loop with customers
  • Way less pressure on decisions for small changes, hence encouraging iterating faster
Continuous Deployment
  • The quality of test suite determines the quality of releases
  • Documentation needs to be in sync with the pace of deployments
  • Feature flags are necessary in the process of releasing significant changes
  • Faster development since no need to pause for releases
  • Releases are less risky and easier to fix since only small batch of changes are deployed
  • Customers notice a continuous stream of improvements as quality increases every day