All notes


MartinFowler: CD.


Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.

You're doing continuous delivery when:

The key test is that a business sponsor could request that the current development version of the software can be deployed into production at a moment's notice, and nobody would bat an eyelid, let alone panic.


Build, Deployment, and Environment Provisioning.

We achieve all this by ensuring our code is always in a deployable state, even in the face of teams of thousands of developers making changes on a daily basis. Every developer should have his/her own production environment for testing deployability.

Deployment Pipeline

To achieve continuous delivery you need:

Deploy to a subset of users

User feedback does require you to be doing continuous deployment. If you want that, but don't fancy getting new software to your entire user base, you can deploy to a subset of users. For example, deploy the system orderly to:

  1. employees.
  2. an invited set of premium customers.
  3. all customers.

Continuous Deployment

Continous Deployment means that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day. Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery.


The principal benefits of continuous delivery are: