Continuous Delivery
Jez Humble, ThoughtWorks Studios@jezhumble #continuousdeliveryDevOpsDays, Hamburg
Agile 101
Iteration 0 1 2 3 4
Analysis + Design
Development
Testing + Showcase
Integration + QA Release and operation
Customer
Centralized QA IT Operations
"Agile" team
The "last mile"
web 2.0
disrupting traditional businesses
http://code.flickr.com/
releasing frequently
feedback from usersCustomer
developent
Agile productdevelopment
Eric Ries, “The Lean Startup” http://bit.ly/8ZoX5F
releasing frequently
feedback from usersreduce risk of release
John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr
releasing frequently
feedback from usersreduce risk of releasereal project progress
agile manifesto
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
production-ready software
Fast, automated feedback on the production readiness of your applications every time there is a change - to code, infrastructure, or configuration
Software always production ready
Releases tied to business needs, not operational constraints
continuous delivery
Customer
Delivery teamConstant flow of new features into production
Completely cross-functional teams
Business units act as VCs
Products, not projects
BUT...
Works great with many small, distributed teams and RESTful architecture
enterprise lean startups
value stream mapping
Product opportunity assessment
Product discovery Development Final testing
and approval ReleaseProduct
planning and estimation
Elapsed time
Value-added time3 days 1 week 10 days 7 weeks 1 week 2
hours
1 week 10 days 3 days 5 days 2 days
deployment pipelineDelivery team Version control Build & unit
testsAutomated
acceptance testsUser acceptance
testsRelease
Check in
Feedback
Trigger
Check in
Feedback
Trigger
Trigger
Check inTrigger
Trigger
ApprovalApproval
Feedback
Feedback
FeedbackFeedback
deployment pipeline
deployment pipeline
principles
• create a repeatable, reliable process for releasing software
• automate almost everything
• keep everything in version control
• if it hurts, do it more often, and bring the pain forward
• build quality in
• done means released
• everybody is responsible for delivery
• continuous improvement
ask this question
• “How long would it take your organization to deploy a change that involved just one single line of code? Do you do this on a repeatable, reliable basis?”
• What gets in the way of getting software out of the door?
Mary and Tom Poppendieck, Implementing Lean Software Development, p59.
smoke test your deployments
only build your binaries once
deploy the same way to every environment
if anything fails, stop the line
keep your environments similar
practices
everybody checks in to mainline
use branch by abstraction for architectural change
use feature bits to switch off incomplete features
continuous integrationP1 P2
G2 G3G1 G4
P3 P4 P5
G5 G6
B1 B2
G1
G1
P1
P1B1
P2
B1
P1-2
G2
G2
P3
G2
P3
B2
P4
B2
G3
P3G3
G3
P4
P4 P5
P4-5
G4
G4 G5 G6
P2
Professor Plum
Reverend Green
Mainline
Diagram invented by Martin Fowler
different kinds of testing
Functional acceptance tests
ShowcasesUsability testing
Exploratory testing
Unit testsIntegration tests
System tests
Non-functional acceptance tests
(performance, scaling, ...)
Business facing
Technology facing
Critiq
ue p
roje
ct
Support
pro
gra
mm
ing
AUTOMATED
AUTOMATED
MANUAL
MANUAL / AUTOMATED
Diagram invented by Brian Marick
canary releasing
data migration
Auditing - see who does what
Visibility and control over locking down
Compliance - automation over documentation
Make it easy to remediate outages
objections
Make it easy for everyone to see what’s happening
Get everyone together at the beginning
Keep meeting
Continuous improvement (kaizen)
people are the key
http://continuousdelivery.com/http://studios.thoughtworks.com/gohttp://thoughtworks.com/
thank you!