Continuous Distribution and Deployment

In previous post, we discussed about Continuous Integration, its evolution, CI best practices and the advantages it offers to the developer community as well as to the consumers. In this part, we will discuss Continuous Distribution and Deployment.

Continuous distribution (a.k.a. delivery) can be defined as a practice of keeping code base deployable at any point by making sure application passes all automated tests and is ready to push into production or making package available for developers to download.

 



Once the production build is done and tested, the artifacts are ready for deployment. In case where the end product is a package (e.g. a tar archive or an executable), it is uploaded to a public repository where all stakeholders can then obtain it from that repository.

In cloud computing scenario, the end product could be a service which can be deployed to cloud. These services then can be consumed by others.

How to deliver these artifacts, how to deploy them, where to deliver/deploy is specified by adding a few more steps to the CI pipeline.

Continuous deployment is closely related to CI and is an extension to the existing CI. Most of the existing CI engines do provide some sort of deployment facility as well. It deals with automatic release of application to test or production environment (a.k.a. "push button deployment").

Continuous delivery ensures that the code checked in on the main branch is always deployable thereby reducing time to market. It facilitates a shorter user feedback loop which in turn ensures that the right product is made available all the time.

Continuous delivery improves productivity and higher efficiency due to shorter deployment cycles and less time spent on debugging. This also ensures reliable releases of higher quality.

We will discuss about CI engines in the next part.

Comments

Popular posts from this blog

Security in Linux Kernel - Part 2

Security in Linux Kernel - Part 3

Trusted Platform Module