Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests...

47
http://thoughtworks-studios.com / Continuous Delivery @jezhumble #Agile2012, 15 August 2012 Thursday, August 16, 12

Transcript of Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests...

Page 1: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

http://thoughtworks-studios.com/

Continuous Delivery@jezhumble#Agile2012, 15 August 2012

Thursday, August 16, 12

Page 2: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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"

Thursday, August 16, 12

Page 3: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

web 2.0

disrupting traditional businesses

http://code.flickr.com/

Thursday, August 16, 12

Page 4: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

releasing frequently

build the right thingCustomer

developent

Agile productdevelopment

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

Thursday, August 16, 12

Page 5: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 6: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 7: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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.

Thursday, August 16, 12

Page 8: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

releasing frequently

build the right thingreduce risk of release

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

Thursday, August 16, 12

Page 9: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

optimize for mtrs

Thursday, August 16, 12

Page 10: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

optimize for mtrs

MTBF MTRS

Thursday, August 16, 12

Page 11: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

releasing frequently

build the right thingreduce risk of releasereal project progress

Thursday, August 16, 12

Page 12: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

agile manifesto

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

Thursday, August 16, 12

Page 13: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 14: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

So!ware always production ready

Releases tied to business needs, not operational constraints

continuous delivery

Thursday, August 16, 12

Page 15: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

automation

patterns and practices

collaboration

continuous delivery

Thursday, August 16, 12

Page 16: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

con"guration management

continuous integration

automated testing

ingredients

Thursday, August 16, 12

Page 17: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Mainline Server

Develop

Build

Build

pull

Local Workstation

Buildpush

✔Done!

Thursday, August 16, 12

Page 19: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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 DemingThursday, August 16, 12

Page 20: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 21: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

visibility

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

control

feedback

deployment pipeline

Thursday, August 16, 12

Page 22: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 23: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

deployment pipeline

Thursday, August 16, 12

Page 24: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

deployment pipeline

Thursday, August 16, 12

Page 25: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

automate provisioning and deployment

ensure devs, testers and ops collaborate throughout

reducing release risk

Thursday, August 16, 12

Page 26: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

incrementalism

devops

decoupling deployment and release

reducing release risk

Thursday, August 16, 12

Page 27: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

cultureautomation

measurementsharing

devops

Thursday, August 16, 12

Page 28: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

low risk releases are incremental

blue-green deployments

canary releases

dark launching

production immune system

feature toggles

Thursday, August 16, 12

Page 29: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

STATIC CONTENT

/static/1.1

/static/1.0

DEPENDENT SERVICE

1.0 1.1

Abstraction layer Abstraction layer

APPLICATION

Database

Router /Load balancer

Interwebs

Thursday, August 16, 12

Page 30: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

blue-green deployments

Thursday, August 16, 12

Page 31: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

router

web server

app server

DB server

Thursday, August 16, 12

Page 32: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

router

v1.1 v1.1 v1.1

web server

app server

DB server

Thursday, August 16, 12

Page 33: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

router

v1.1 v1.1 v1.1

web server

app server

DB server

v1.2 v1.2 v1.2

Thursday, August 16, 12

Page 34: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

router

v1.1 v1.1 v1.1

web server

app server

DB server

v1.2 v1.2 v1.2

Thursday, August 16, 12

Page 35: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Canary Releasing

Thursday, August 16, 12

Page 36: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Thursday, August 16, 12

Page 37: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Thursday, August 16, 12

Page 38: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Reduce risk of release

Multi-variant testing

Performance testing

canary releasing

Thursday, August 16, 12

Page 39: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

immune system

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

T cells http://www.flickr.com/photos/gehealthcare/3326186490/Thursday, August 16, 12

Page 40: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

release != deployment

Thursday, August 16, 12

Page 41: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 42: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Dark Launching

Thursday, August 16, 12

Page 43: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Thursday, August 16, 12

Page 44: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

Thursday, August 16, 12

Page 45: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

segregation of duties

risk management

SOX, ITIL, COBIT

auditing and compliance

change management

enterprise governance

Thursday, August 16, 12

Page 46: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

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

Thursday, August 16, 12

Page 47: Continuous Delivery - Agile Alliance · different kinds of testing Functional acceptance tests Showcases Usability testing Exploratory testing Unit tests Integration tests System

http://thoughtworks-studios.com/

[email protected]://continuousdelivery.com/

@jezhumble #continuousdelivery

© 2011 ThoughtWorks, Inc.

Thursday, August 16, 12