6

According to Jez Humble, Continuous Delivery involves "ensuring our code is always in a deployable state" [1], and according to Humble's Thoughtworks colleage Martin Fowler "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." [2]

My question is about what deployable means. If it means simply 'able to be deployed', then a process with no testing is CD. If it means 'good to deploy', then why wouldn't the business sponser be assumed to be requesting that all versions are deployed to production at the first convenient opportunity?

If the business sponsor doesn't request deployment to production because the current version includes a change which they are not yet ready to release is that a discontinuity of delivery?

If so then presumably to do CD any changes to released software which are not pre-approved for release as soon as ready would need to be hidden behind feature toggles or similar until approved by the sponsor.

[1] https://continuousdelivery.com/
[2] https://martinfowler.com/bliki/ContinuousDelivery.html

1
  • I don't have an answer for everthing but I wanted to add a comment about 'good to deploy', you could have legal reasons. Where I work for instance there is a regulatory update that happens every Oct 1. That means a customer walks out the office Sept. 30 having used version x of our software. They walk in the next day and are using version x+1. We usually have that version ready by mid to end August in case there are last minute changes to the regs we need to handle and test, but we don't deploy for legal reasons. Using x+1 early is just as bad as using x after the switch date for customers. Dec 23, 2017 at 13:25

2 Answers 2

1

My question is about what deployable means. If it means simply 'able to be deployed', then a process with no testing is CD.

Assuming that you have some sort of testing process before you deploy, software which hasn't gone through that process yet is not "ready to deploy" - in some companies testing might take several days, and even if testing is quick what happens if you the discover defects?

If it means 'good to deploy', then why wouldn't the business sponser be assumed to be requesting that all versions are deployed to production at the first convenient opportunity?

If deployments are cheap (and confidence in the Dev team is high) then I would hope that is the case. In my company deployments must be done in evenings and weekends, which means overtime is required and so deploying is an expensive activity.

If the business sponsor doesn't request deployment to production because the current version includes a change which they are not yet ready to release is that a discontinuity of delivery?

It doesn't really matter if it's the business sponsor or the software which isn't "ready" yet - either way the software isn't in a state which is suitable for production. Imagine if another unrelated change was requested which should be available sooner than the "blocked" feature, now additional work is required to either revert or feature flag those changes.

If so then presumably to do CD any changes to released software which are not pre-approved for release as soon as ready would need to be hidden behind feature toggles or similar until approved by the sponsor.

Yes.

3

My question is about what deployable means. If it means simply 'able to be deployed', then a process with no testing is CD.

Deployable implies that all the pre-deployment process has been completed. Process will define what "deployable" means. If the process says testing is not necessary, then the software may be deployed without testing. Most processes include running some sort of test plan.

If it means 'good to deploy', then why wouldn't the business sponser be assumed to be requesting that all versions are deployed to production at the first convenient opportunity?

In the simplest case they may very well allow the dev team to deploy to production at the first convenient opportunity, but many businesses are too complex or not automated enough to do this. There are other business activities (outside of the development team) that may need to be performed prior to deployment. For example:

  • A beta phase may need to be completed before deploying to production
  • Sales/support may need to inform existing customers of an upcoming change
  • The business may need to find a manufacturer to produce compact disks with the software on it
  • The business may wish to hold off deployment for more features to be ready

If the business sponsor doesn't request deployment to production because the current version includes a change which they are not yet ready to release is that a discontinuity of delivery?

I don't think so. When we talk about continuous delivery in the software sense, delivery is to the business, not necessarily the end user. If you want to talk about continuous delivery to the end user, it may involve automating the business processes outside of the development team that would otherwise block deployment.

If so then presumably to do CD any changes to released software which are not pre-approved for release as soon as ready would need to be hidden behind feature toggles or similar until approved by the sponsor.

Feature toggles can be used to hide new features before the business is ready for them. Typically I think they would only be used if the business wants to deploy certain changes (e.g. bug fixes, minor changes) without deploying a certain new feature, and the software is at a point where it would be difficult or more effort to extract the feature from the product. I still think that in most businesses the business has the final say of what gets deployed. Even if a new feature is hidden behind a feature toggle, deployment still may have consequences that the business wants to control.

1
  • Lots to disagree with here... Nov 23, 2017 at 5:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.