what continuous delivery means for version control
DESCRIPTION
Continuous delivery is on its way to becoming standard practice for software projects where quality, stability, and time-to-market are paramount. In this talk, Jez will explain the why and what of continuous delivery, discuss the effect of continuous delivery on version control process and practice for teams of all sizes, and explore the implications for practitioners.TRANSCRIPT
![Page 1: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/1.jpg)
@jezhumble 10 september 2014
continuous delivery
![Page 2: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/2.jpg)
scrum-
fall
water-
![Page 3: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/3.jpg)
s
![Page 4: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/4.jpg)
what is continuous delivery?
reduce the cost, time, and risk of delivering incremental changes to users while improving quality
![Page 5: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/5.jpg)
production-ready software
fast, automated feedback on the production readiness of your applications every time there is a change — to code, infrastructure, or configuration
![Page 6: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/6.jpg)
architecture
patterns and practices
collaboration
continuous delivery
![Page 7: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/7.jpg)
configuration management
continuous integration
automated testing
ingredients
![Page 8: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/8.jpg)
Mainline Server
Develop
Build
Build
pull
Local Workstation
Buildpush
✔Done!
© @martinfowler
![Page 9: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/9.jpg)
Mainline Server
Develop
Build
Build
pull
Local Workstation
Buildpush
✔Done!
Everyone Commits To
the Mainline Every Day
© @martinfowler
![Page 10: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/10.jpg)
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
Feature Branching
© @martinfowler
![Page 11: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/11.jpg)
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
G1-6
P1-5
P1-5
G1-6
Feature Branching
© @martinfowler
![Page 12: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/12.jpg)
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
G1-6
P1-5
P1-5
G1-6
Feature Branching
© @martinfowler
![Page 13: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/13.jpg)
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
G1-6
P1-5
P1-5
G1-6
Feature Branching
© @martinfowler
![Page 14: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/14.jpg)
P1 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
Continuous Integration
© @martinfowler
![Page 15: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/15.jpg)
P1 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
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
G1-6
P1-5
P1-5
G1-6
Continuous Integration
Feature Branch
© @martinfowler
![Page 16: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/16.jpg)
Continuous Integration
Feature Branch
© @martinfowler
![Page 17: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/17.jpg)
Feature Branch
Release Branch
Experimental Branch
© @martinfowler
![Page 18: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/18.jpg)
Grand Prize Fight
© @martinfowler
![Page 19: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/19.jpg)
BAM
Feature Branching
Continuous Integration
Big Scary Merge
© @martinfowler
![Page 20: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/20.jpg)
P1 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
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
G1-6
P1-5
P1-5
G1-6
Continuous Integration
Feature Branch
© @martinfowler
![Page 21: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/21.jpg)
BAM
Feature Branching
Continuous Integration
Big Scary Merge
BIFF Untrusted Contributers
© @martinfowler
![Page 22: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/22.jpg)
BAM
Feature Branching
Continuous Integration
Big Scary Merge
BIFF Untrusted Contributers
POW !
In-progress features
© @martinfowler
![Page 23: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/23.jpg)
[featureToggles]wobblyFoobars: trueflightyForkHandles: false
Config File
<toggle name=wobblyFoobars> ... various UI elements</toggle>
some.jsp
forkHandle = (featureConfig.isOn(‘flightlyForkHandles)) ? new FlightyForkHander(aCandle) : new ForkHandler(aCandle)
other.java
Feature Toggles
© @martinfowler
![Page 24: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/24.jpg)
Branch by Abstraction
© @martinfowler
![Page 25: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/25.jpg)
Application
New!Library
Library
© @martinfowler
![Page 26: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/26.jpg)
Application
New!Library
Library
Interface implements
© @martinfowler
![Page 27: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/27.jpg)
Application
New!Library
Library
Interface implements
© @martinfowler
![Page 28: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/28.jpg)
Application
New!Library
Library
Interface implements
© @martinfowler
![Page 29: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/29.jpg)
Application
New!Library
Interface implements
© @martinfowler
![Page 30: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/30.jpg)
BAM
Feature Branching
Continuous Integration
Big Scary Merge
BIFF Untrusted Contributors
POW !
In-progress features
KA-POW!
No Refactoring
© @martinfowler
![Page 31: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/31.jpg)
P1 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
P1 P2
G2G1
B1
B1
B1
P1-2
G1-2
G3 G4
P4
B2
P5
G5 G6
B2
P3-4
G3
B2
P3
Professor Plum
Reverend Green
Mainline
G1-6
P1-5
P1-5
G1-6
Continuous Integration
Feature Branch
© @martinfowler
![Page 32: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/32.jpg)
BAM
Feature Branching
Continuous Integration
Big Scary Merge
BIFF Untrusted Contributors
POW !
No Refactoring
KA-POW!
In-progress features
© @martinfowler
![Page 33: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/33.jpg)
continuous integration
Jason Leyba | http://www.infoq.com/presentations/google-test-automation
![Page 34: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/34.jpg)
![Page 35: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/35.jpg)
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
![Page 36: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/36.jpg)
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
![Page 37: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/37.jpg)
visibility
an automated implementation of your system’s build, deploy, test, release process
control
feedback
deployment pipeline
![Page 38: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/38.jpg)
deployment pipeline
Delivery team Version control Build & unit tests
Automated acceptance tests
User acceptance tests
Release
Check in
Feedback
Trigger
Check in
Feedback
Trigger
Trigger
Check inTrigger
Trigger
ApprovalApproval
Feedback
Feedback
FeedbackFeedback
![Page 39: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/39.jpg)
infrastructure as code
![Page 40: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/40.jpg)
high performing IT is a competitive advantage
“Firms with high-performing IT organizations were twice as likely to exceed their profitability, market share and productivity goals.”
http://bit.ly/2014-devops-report
![Page 41: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/41.jpg)
lead time
“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?”
Mary and Tom Poppendieck, Implementing Lean Software Development, p59.
![Page 42: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/42.jpg)
time to restore service
http://martinfowler.com/bliki/PhoenixServer.html
![Page 43: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/43.jpg)
highest correlation with IT performance
!
• “Our app configurations are in a version control system” • “Our system configurations are in a version control system” • “Our app code is in a version control system” • “We get failure alerts from logging and monitoring systems” • “Developers merge their code into trunk daily” • “When development and operations teams interact, the outcome is
generally win/win.” • “Developers break up large features into small, incremental changes.”
![Page 44: What Continuous Delivery Means for Version Control](https://reader034.vdocuments.site/reader034/viewer/2022051817/547b9cb9b4af9fa0158b4f25/html5/thumbnails/44.jpg)
questions@jezhumble | [email protected] http://continuousdelivery.com/
!
© 2014 Chef, Inc. & ThoughtWorks, Inc.