Continuous Delivery

Continuous Delivery (CD) refers to changes in the application code of software at the time of distribution and implementation of the software. Continuous Delivery is preceded by Continuous Integration (CI), which in turn is responsible for continuous integration within the building or test process. Test processes that have already run successfully flow into the software release through continuous delivery.

General information[edit]

The main advantage of continuous delivery is that it checks the code for user acceptance and checks the development and production environment. In the development environment, the functions of the software code are tested, including the business logic.

Continuous Delivery is a process that is not completed, but gives developers regular feedback on the ongoing processes so that they can make corrections at short notice before other aspects are included in the development of the processes. As a result, productivity is increased and developers can concentrate on the tasks that serve the development process. Continuous delivery also helps when the iterative development process becomes difficult due to increasing project complexity. In this case, Continuous Delivery allows developers to streamline the project and deliver releases more frequently. This makes the project more manageable, predictable, reliable and flexible.

Advantages of Continuous Delivery[edit]

With software releases, the industry no longer relies on manual testing, but on tools such as analytical feedback methods, continuous monitoring, integrated testing and continuous delivery. What they have in common is the approach to improving response times, and continuous delivery plays an important role here. Continuous Delivery is used in both small start-ups and large corporations. The main advantages of continuous delivery can be summarized as follows:

  • Shorter reaction times: These affect both internal and external stimuli that require rapid reactions. This can be a market segment that suddenly changes direction, or a security gap that has been discovered at short notice and needs to be rectified. These and many other events require a fast response, which is made possible by continuous delivery.
  • Minimizing risk: The delivery of releases is very time-consuming in most companies. New features, fixed bugs and many other factors lead to significant quality assurance efforts and increased work for the building and release teams. Through continuous delivery, the software is constantly delivered, even if not to the customer, but mostly as a test within the team. This minimizes risks without affecting the customer. Companies that work with continuous delivery can identify and respond more quickly to shortcomings and errors or weaknesses.
  • More efficiency, lower costs: Especially around the delivery of releases, the resulting costs are often not transparent. Continuous Delivery ensures transparency right up to the decision makers. The pipeline generated by the system generates a cycle that leads to a clear and transparent software delivery dynamic that provides concrete information about how long it will take and how much it will cost to release.
  • Flexibility in release options: In order to integrate continuous delivery, the infrastructure must first be expanded and adapted to the software-architectural and operational context. Afterwards, the advantages become quickly visible regarding the delivery of fixes and features. Custom feature sets can be rolled out to user groups or customers to ensure they work the way they were scaled before. In addition, features can be developed and tested, but the product itself remains inactive for delivery as large releases.

Disadvantages of Continuous Delivery[edit]

The higher speed of continuous delivery can also be detrimental. Teams might optimize for the wrong goal and not, as planned, achieve the best possible quality. The infrastructure required for continuous deployment can lead to errors that are not detected by automated tests, which can lead to crashes or incompatible elements.

Continuous delivery can ultimately lead to the teams involved losing sight of whether everything really works the way it should. For example, if little or no attention is paid to test metrics as a project moves through the deployment pipeline, it hinders or impedes measurement and evaluation of the project's progress and overall value.

Significance for development[edit]

When used correctly, continuous delivery is very advantageous. The early feedback allows developers to gain important insights at a very early stage of the project. This makes it possible to optimize development processes in good time, leading to a general improvement. Continuous delivery is suitable for countering outdated codes.

New versions of software are often built on the same version. This can lead to conflicts between existing and new features. With continuous delivery, teams are encouraged to constantly redirect their code in the direction of production, enabling the quality department to provide early tests, feedback and ultimately to ensure that the version delivered to the customer finally works.