Professional Documents
Culture Documents
Continuous Delivery
Continuous Delivery
Jez Humble
@jezhumble
http://thoughtworks-studios.com/
agile 101
"Agile" team
Analysis + Design
Centralized QA
IT Operations
Development
Integration + QA
Testing + Showcase
Customer
Iteration
web 2.0
http://code.flickr.com/
releasing frequently
innovate
You can't just ask
customers what
theywant and then
try to give that to
them.
By the time you get
it built, they'llwant
something new.
Steve Jobs
scientific method
Ideas
create hypothesis
deliver minimum
viable product
get feedback
Learn
Build
Code
Data
Measure
(repeat)
Eric Ries, The Lean Startup
releasing frequently
releasing frequently
agile manifesto
production-ready software
Fast, automated feedback on
the production readiness of
your applications every time
there is a change - to code,
infrastructure, or configuration
continuous delivery
Customer
Delivery team
continuous delivery
automation
collaboration
ingredients
configuration management
continuous integration
automated testing
Develop
Local
Workstation
Mainline Server
Build
pull
Build
Build
push
Done!
Develop
Local
Workstation
Mainline Server
Everyone Commits
Build
To the pullMainline
Build
Every Day
Build
push
Done!
build quality in
Cease dependence on
mass inspection to achieve
quality. Improve the
process and build quality
into the product in the first
place
W. Edwards Deming
AUTOMATED
MANUAL
Functional acceptance
tests
Showcases
Usability testing
Exploratory testing
Unit tests
Integration tests
System tests
Non-functional
acceptance tests
(performance, scaling, ...)
AUTOMATED
MANUAL / AUTOMATED
Critique project
Support programming
Business facing
Technology facing
deployment pipeline
an automated implementation of your
systems build, deploy, test, release process
visibility
feedback
control
deployment pipeline
Delivery team
Version control
Check in
Automated
acceptance tests
User acceptance
tests
Trigger
Feedback
Check in
Trigger
Trigger
Feedback
Feedback
Check in
Trigger
Feedback
Trigger
Feedback
Approval
Feedback
Approval
Release
deployment pipeline
deployment pipeline
incrementalism
devops
culture
automation
measurement
sharing
feature toggles
blue-green deployments
canary releases
DEPENDENT SERVICE
1.0
1.1
Database
Abstraction layer
Abstraction layer
STATIC CONTENT
/static/1.1
APPLICATION
/static/1.0
Router /
Load balancer
Interwebs
blue-green
deployments
router
web
server
app
server
DB
server
v1.1
v1.1
v1.1
web
server
app
server
DB
server
router
router
v1.1
v1.1
v1.1
v1.2
v1.2
v1.2
web
server
app
server
DB
server
router
v1.1
v1.1
v1.1
v1.2
v1.2
v1.2
web
server
app
server
DB
server
release !=
deployment
feature toggles
Config File
[featureToggles]
wobblyFoobars: true
flightyForkHandles: false
some.php
<?if ($wobblyFoobars) {?>
... various UI elements
<?}?>
other.php
$fork_handle = ($featureConfig->isOn(flightlyForkHandles)) ?
new flightyForkHander(aCandle) :
new forkHandler(aCandle);
Dark Launching
enterprise governance
risk management
SOX, ITIL, COBIT
segregation of duties
change management
auditing and compliance
questions
jez@thoughtworks.com
http://continuousdelivery.com/
@jezhumble #continuousdelivery