When talking about DevOps best practices, CI/CD are acronyms commonly seen. They invite us to become part of a new culture, applying a set of operating principles and incorporating procedures which boost software development teams to deliver new features frequently and positively.
CI means Continuous Integration and CD stands for both Continuous Delivery and Continuous Deployment, although these last two have many differences.
Continuous Integration is when developers merge their changes to the main branch as frequently as possible. These improvements are built and automatically tested at every submitted change. This alleviates issues that could happen when having a formal release date when all changes are merged at once and there is a likelihood of application disruption when new commits are integrated to the main branch. For this process to run smoothly, the team needs a clearly defined mechanism to integrate and validate its changes.
Technically speaking, CI aims to establish a consistent and automated way to build, package, and test applications. This inevitably leads to better collaboration and software quality.
Continuous Delivery occurs right after CI with the purpose of releasing new changes to customers instantly in a sustainable way, which means that your release process is properly automated and can be run on demand. This should be performed promptly to discover and troubleshoot problems.
Continuous Deployment takes place when every change satisfies all steps of the production pipeline and is then automatically released to the customer environment. This enables quicker customer feedback on new features and relieves the team’s pressure regarding release dates.
In other words, the difference between Continuous Deployment and Continuous Delivery is that the former releases code on demand whereas the latter performs the same task automatically.