what continuous delivery means for version control

44
@jezhumble 10 september 2014 continuous delivery

Upload: perforce

Post on 28-Nov-2014

1.824 views

Category:

Technology


1 download

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

@jezhumble 10 september 2014

continuous delivery

Page 2: What Continuous Delivery Means for Version Control

scrum-

fall

water-

Page 3: What Continuous Delivery Means for Version Control

s

Page 4: What Continuous Delivery Means for Version Control

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

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

architecture

patterns and practices

collaboration

continuous delivery

Page 7: What Continuous Delivery Means for Version Control

configuration management

continuous integration

automated testing

ingredients

Page 8: What Continuous Delivery Means for Version Control

Mainline Server

Develop

Build

Build

pull

Local Workstation

Buildpush

✔Done!

© @martinfowler

Page 9: What Continuous Delivery Means for Version Control

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

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

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

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

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

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

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

Continuous Integration

Feature Branch

© @martinfowler

Page 17: What Continuous Delivery Means for Version Control

Feature Branch

Release Branch

Experimental Branch

© @martinfowler

Page 18: What Continuous Delivery Means for Version Control

Grand Prize Fight

© @martinfowler

Page 19: What Continuous Delivery Means for Version Control

BAM

Feature Branching

Continuous Integration

Big Scary Merge

© @martinfowler

Page 20: What Continuous Delivery Means for Version Control

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

BAM

Feature Branching

Continuous Integration

Big Scary Merge

BIFF Untrusted Contributers

© @martinfowler

Page 22: What Continuous Delivery Means for Version Control

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

[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

Branch by Abstraction

© @martinfowler

Page 25: What Continuous Delivery Means for Version Control

Application

New!Library

Library

© @martinfowler

Page 26: What Continuous Delivery Means for Version Control

Application

New!Library

Library

Interface implements

© @martinfowler

Page 27: What Continuous Delivery Means for Version Control

Application

New!Library

Library

Interface implements

© @martinfowler

Page 28: What Continuous Delivery Means for Version Control

Application

New!Library

Library

Interface implements

© @martinfowler

Page 29: What Continuous Delivery Means for Version Control

Application

New!Library

Interface implements

© @martinfowler

Page 30: What Continuous Delivery Means for Version Control

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

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

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

continuous integration

Jason Leyba | http://www.infoq.com/presentations/google-test-automation

Page 34: What Continuous Delivery Means for Version Control
Page 35: What Continuous Delivery Means for Version Control

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

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

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

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

infrastructure as code

Page 40: What Continuous Delivery Means for Version Control

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

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

time to restore service

http://martinfowler.com/bliki/PhoenixServer.html

Page 43: What Continuous Delivery Means for Version Control

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

questions@jezhumble | [email protected] http://continuousdelivery.com/

!

© 2014 Chef, Inc. & ThoughtWorks, Inc.