Skip to content

Instantly share code, notes, and snippets.

@efleming969
Created July 8, 2014 17:42
Show Gist options
  • Save efleming969/78f4616ec3b3185fe277 to your computer and use it in GitHub Desktop.
Save efleming969/78f4616ec3b3185fe277 to your computer and use it in GitHub Desktop.

Continuous Delivery

Feedback is one of the key tenants of Agile software development. We emphasize the need for creating tight feedback loops in order to steer our efforts in the "right" direction and to ensure that the customer is getting what they need.

There are many practices within the software engineering community and specifically within the Agile community, that can help facilitate these shorter freedback cycles. "Continuous Delivery" is one such practice that can enable quick feedback at any point in the development process and is typically a penultimate sign of a well functioning team.

Significant credit for starting the "Continuous Delivery" movement can be attributed to Jez Humble, Chris Read, and Dan North for their 2006 article "The Deployment Production Line" where they layout the core concepts and benefits of deploying working software with "a single push of a button". I'll leave the historical details as an exercise for the reader.

The definition of "Continous Delivery", however, is quite elusive in the wild. I find many people confusing the term with "Continuous Integration" and "Continuous Deployment" and while these are certainly related, there is a subtle distinction.

"Continuous Integration" is the automated process of building, testing, and integrating various pieces of a system before any deployment can take place. This process inherintely provides an automated feedback mechanism that can increase the team's confidence and encourage its agility. Most teams initially pursue "Continuous Integeration" during their Agile transformation, but stop short of evolving it towards a "Continuous Delivery" mindset.

"Continuous Deployment", on the other hand, is the technical capability of pushing a product increment into production in a completely automated fashion, void of any business decision to do so or not.

In Martin Fowler's 2013 blog post [1] on the subject, he suggests that "Continuous Delivery" is the ability to push a product increment into production, but only if it makes sense for the customer to accept that change at a particular moment in time. Therefore, "Continuous Delivery" is more of a mind set that combines the technical practices of "Continuous Integration" and "Continuous Deployment" with the added fexibility of selective deployment.

So, Where is your team? Are you able to elicit the necessary feedback from customers? Are your releases painful and stress inducing? If so, then I challenge you to take a serious look at your current practices, evolve towards a "Continuous Delivery" mindset and enable your team to respond to change versus following a plan.

[1] http://martinfowler.com/bliki/ContinuousDelivery.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment