Continuous Delivery

Post on 11-Sep-2014

32 views 3 download

Tags:

description

Originally given at CITCON 2010. See me present this at DevOpsDays Hamburg 2010 here: http://www.infoq.com/presentations/Continuous-Delivery For more on continuous delivery, visit http://continuousdelivery.com/

Transcript of Continuous Delivery

http://thoughtworks-studios.com/

continuous delivery@jezhumbleBerlin, 4 october 2012

Tuesday, October 9, 12

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"

Tuesday, October 9, 12

social

disrupting traditional businesses

http://code.flickr.com/

Tuesday, October 9, 12

releasing frequently

1. build the right thing

Eric Ries, “The Lean Startup” http://bit.ly/8ZoX5F

Customerdevelopment

Agile productdevelopment

Tuesday, October 9, 12

innovateYou can't just ask

customers what they want and then

try to give that to them.

By the time you get it built, they'll want

something new.Steve Jobs

Tuesday, October 9, 12

scienti!c method

create hypothesis

deliver minimumviable product

get feedback

(repeat)Eric Ries, “The Lean Startup” http://bit.ly/8ZoX5F

Ideas

CodeData

Build

Measure

Learn

Tuesday, October 9, 12

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?”

Mary and Tom Poppendieck, Implementing Lean Software Development, p59.

Tuesday, October 9, 12

releasing frequently

1. build the right thing2. reduce risk of release

John Allspaw: “Ops Metametrics” http://slidesha.re/dsSZIr

Tuesday, October 9, 12

optimize for mtrs

Tuesday, October 9, 12

optimize for mtrs

MTBF MTRS

John Allspaw: “Building Resilience in Web Development and Operations” http://www.usievents.com/en/conferences/8-paris-usi-2011/sessions/968-john-allspaw

Tuesday, October 9, 12

releasing frequently

1. build the right thing2. reduce risk of release3. real project progress

Tuesday, October 9, 12

agile manifesto

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software

Tuesday, October 9, 12

production-ready so"ware

Fast, automated feedback on the production readiness of your applications every time there is a change - to code, infrastructure, or configuration

Tuesday, October 9, 12

So"ware always production ready

Releases tied to business needs, not operational constraints

continuous delivery

Tuesday, October 9, 12

automation

patterns and practices

collaboration

continuous delivery

Tuesday, October 9, 12

con!guration management

continuous integration

automated testing

ingredients

Tuesday, October 9, 12

Mainline Server

Develop

Build

Build

pull

Local Workstation

Buildpush

✔Done!

Tuesday, October 9, 12

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 DemingTuesday, October 9, 12

di#erent 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

Tuesday, October 9, 12

visibility

an automated implementation of your system’s build, deploy, test, release process

control

feedback

deployment pipeline

Tuesday, October 9, 12

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

Tuesday, October 9, 12

deployment pipeline

Tuesday, October 9, 12

deployment pipeline

Tuesday, October 9, 12

automate provisioning and deployment

ensure devs, testers and ops collaborate throughout

reducing release risk

Tuesday, October 9, 12

incrementalism

devops

decoupling deployment and release

reducing release risk

Tuesday, October 9, 12

cultureautomation

measurementsharing

devops

Tuesday, October 9, 12

low risk releases are incremental

blue-green deployments

canary releases

dark launching

production immune system

feature toggles

Tuesday, October 9, 12

STATIC CONTENT

/static/1.1

/static/1.0

DEPENDENT SERVICE

1.0 1.1

Abstraction layer Abstraction layer

APPLICATION

Database

Router /Load balancer

Interwebs

Tuesday, October 9, 12

blue-green deployments

Tuesday, October 9, 12

router

web server

app server

DB server

Tuesday, October 9, 12

router

v1.1 v1.1 v1.1

web server

app server

DB server

Tuesday, October 9, 12

router

v1.1 v1.1 v1.1

web server

app server

DB server

v1.2 v1.2 v1.2

Tuesday, October 9, 12

router

v1.1 v1.1 v1.1

web server

app server

DB server

v1.2 v1.2 v1.2

Tuesday, October 9, 12

Canary Releasing

Tuesday, October 9, 12

Tuesday, October 9, 12

Tuesday, October 9, 12

Reduce risk of release

Multi-variant testing

Performance testing

canary releasing

Tuesday, October 9, 12

immune system

what if someone replaced your “buy” button with spacer.gif?

T cells http://www.flickr.com/photos/gehealthcare/3326186490/Tuesday, October 9, 12

release != deployment

Tuesday, October 9, 12

feature toggles

[featureToggles]wobblyFoobars: trueflightyForkHandles: false

Config File

<?if ($wobblyFoobars) {?> ... various UI elements<?}?>

some.php

$fork_handle = ($featureConfig->isOn(‘flightlyForkHandles)) ? new flightyForkHander(aCandle) : new forkHandler(aCandle);

other.php

Stolen from Martin Fowler http://martinfowler.com/bliki/FeatureToggle.html

Tuesday, October 9, 12

Dark Launching

Tuesday, October 9, 12

Tuesday, October 9, 12

Tuesday, October 9, 12

segregation of duties

risk management

SOX, ITIL, COBIT

auditing and compliance

change management

enterprise governance

Tuesday, October 9, 12

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

Tuesday, October 9, 12

http://thoughtworks-studios.com/

questions

© 2012 ThoughtWorks, Inc.

@jezhumble | jez@thoughtworks.comhttp://continuousdelivery.com/

ThoughtWorks is hiring!http://jobs.thoughtworks.com/

Australia | Brazil | Canada | ChinaGermany | India | Singapore | South AfricaUganda | UK | USA

Tuesday, October 9, 12