This post originated from an RSS feed registered with Agile Buzz
by Martin Fowler.
Original Post: Bliki: ContinuousDelivery
Feed Title: Martin Fowler's Bliki
Feed URL: http://martinfowler.com/feed.atom
Feed Description: A cross between a blog and wiki of my partly-formed ideas on software development
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.
Your software is deployable throughout its lifecycle
Your team prioritizes keeping the software deployable over working on new features
Anybody can get fast, automated feedback on the production readiness of their systems any time somebody makes a change to them
You can perform push-button deployments of any version of the software to any environment on demand
You achieve continuous delivery by
continuously integrating the software done by the development team,
building executables, and running automated tests on those
executables to detect problems. Furthermore you push the executables
into increasingly production-like environments to ensure the
software will work in production. To do this you use a
DeploymentPipeline.
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.
To achieve continuous delivery you need:
a close, collaborative working
relationship between everyone involved in delivery (often referred
to as a "DevOps culture" [2]).
extensive automation of all possible parts of the delivery
process, usually using a DeploymentPipeline
Continuous Delivery is sometimes confused with Continuous
Deployment. Continuous 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.
Continuous
Integration usually refers to integrating, building, and testing
code within the development environment. Continuous Delivery builds
on this, dealing the the final stages required for production
deployment.
For more information see the resources on my guide page, in particular the book.
1:
These indicators were developed by the Continuous Delivery
working group at ThoughtWorks
2:
Despite the name "devops" this should extend beyond developers
and operations to include testers, database teams, and anyone
else needed to get software into production.