continuous delivery - goto conference · continuous delivery customer delivery team constant flow...

23
Continuous Delivery Jez Humble, ThoughtWorks Studios @jezhumble #continuousdelivery JAOO 2010, Århus

Upload: dangduong

Post on 27-Feb-2019

228 views

Category:

Documents


1 download

TRANSCRIPT

Continuous Delivery

Jez Humble, ThoughtWorks Studios@jezhumble #continuousdeliveryJAOO 2010, Århus

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

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