Continuous deployment really pays off

What is CI / CD?

This is a method that regularly delivers apps to customers and automates all phases of application development. The main concepts of CI / CD are continuous integration, continuous delivery and continuous deployment. CI / CD solves the problems that new code integration can cause for DevOps teams (also known as "integration hell").

In particular, CI / CD ensures continuous automation and monitoring over the entire app lifecycle, from the integration and test to the provision and implementation phase. These interrelated practices are often referred to as the “CI / CD pipeline,” and they are supported by agile collaboration among DevOps teams.

What is the difference between CI and CD (and the other CD)?

The abbreviation CI / CD has different meanings. "CI" means Continuous Integration, the automation process for developers. With a successful CI, new code changes for apps are regularly developed, checked and brought together in a common repository. This is to avoid the conflict that too many branches of an app can cause if they are developed at the same time.

"CD" means Continuous Delivery or Continuous Deployment. These are related concepts that are sometimes used interchangeably. While both concepts are about automating further stages of the pipeline, the terms are sometimes used differently to indicate the level of automation.

Continuous Delivery Usually means that app changes made by a developer are automatically tested for bugs and uploaded to a repository (such as GitHub or a container registry), from where they can be deployed by the operations team in a live production environment. This process is the answer to transparency and communication problems between dev and business teams. This is to ensure that new code can be implemented with minimal effort.

Continuous Deployment (the other “CD”) can refer to the automatic release of developer changes from the repository to the production phase, where they can be used directly by the customer. This process is designed to counteract the overloading of operations teams with manual processes that slow application delivery. Continuous development extends the benefits of continuous delivery by automating the next phase of the pipeline.

Sometimes CI / CD only refers to the related practices of Continuous Integration and Continuous Delivery, but sometimes all three concepts of Continuous Integration, Continuous Delivery and Continuous Deployment. The whole thing is made even more complicated by the fact that continuous delivery sometimes also includes the processes of continuous deployment.

Ultimately, however, these details do not get us anywhere. Simply view CI / CD as a process that is often visualized as a pipeline and that includes a high level of continuous automation and monitoring in application development. Depending on the case, the interpretation of the term depends on the degree of automation of the CI / CD pipeline. Many companies work with CI first and then continue the process with automatic provisioning and implementation later, e.g. B. with cloud-native apps.

Continuous integration

In modern application development, multiple developers work on different features of the same app. The simultaneous merging of all source code branches on one day (also known as "Merge Day") can mean a lot of work and time. This is because application changes made by separate developers can conflict with each other if they are made at the same time. This problem can be exacerbated if each developer defines their own on-premise Integrated Development Environment (IDE) rather than as a team creating a common cloud-based IDE.

Continuous Integration (CI) enables developers to consolidate their code changes into a common “branch” or “trunk” of the application much more frequently, sometimes even on a daily basis. Once a developer's changes are merged, they are validated in automatic app builds and different levels of automation tests (usually unit and integration tests). This ensures that functionality has not been impaired. All classes and functions up to the various modules of the app have to be tested. If the automatic check detects conflicts between current and new code, CI can resolve them faster and more frequently.

Continuous delivery

After the automation of builds and unit and integration tests for the CI, the release of the validated code to a repository is also carried out automatically during continuous delivery. So to ensure an efficient continuous delivery process, the CI must already be integrated into your development pipeline. The aim of continuous delivery is a code base that can be made available in a productive environment at any time.

With continuous delivery, every phase - from merging the code changes to delivering production-ready builds - includes automated tests and code approvals. At the end of this process, the operations team can quickly and easily deploy an app in the productive phase.

Continuous deployment

The final phase of the CI / CD pipeline is continuous deployment. As an extension of continuous delivery, in which production-ready builds are automatically released to a code repository, in continuous deployment the release of an app into the productive phase is also automated. Since there is no manual gate upstream of the productive phase in the pipeline, the automated tests for continuous deployment must always be very well thought out.

In practice, Continuous Deployment means that app changes by a developer can go live within minutes of their creation (provided they pass the automatic test). This greatly facilitates the continuous integration of user feedback. All of these interrelated CI / CD practices make application implementation less risky because changes are released in parts rather than all at once. The upfront investment is considerable, however, as automatic tests have to be written for the various test and release phases in the CI / CD pipeline.