frequent releases reduce risk

154
Releasing Frequently Reduces Risk Owen Rogers Twitter: @exortech http://exortech.com/blog

Upload: exortech

Post on 27-Jan-2015

111 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Frequent Releases Reduce Risk

Releasing Frequently Reduces Risk

Owen RogersTwitter: @exortech

http://exortech.com/blog

Page 2: Frequent Releases Reduce Risk

1 year

Page 3: Frequent Releases Reduce Risk
Page 4: Frequent Releases Reduce Risk

48 releases

Page 5: Frequent Releases Reduce Risk

~ 1 release / week

Page 6: Frequent Releases Reduce Risk
Page 7: Frequent Releases Reduce Risk
Page 8: Frequent Releases Reduce Risk
Page 9: Frequent Releases Reduce Risk
Page 10: Frequent Releases Reduce Risk
Page 11: Frequent Releases Reduce Risk
Page 12: Frequent Releases Reduce Risk

10+/day

Page 13: Frequent Releases Reduce Risk
Page 14: Frequent Releases Reduce Risk
Page 15: Frequent Releases Reduce Risk

50+/day

Page 16: Frequent Releases Reduce Risk

continuous deployment

Page 17: Frequent Releases Reduce Risk

crazy

Page 18: Frequent Releases Reduce Risk
Page 19: Frequent Releases Reduce Risk
Page 20: Frequent Releases Reduce Risk

sea change

Page 21: Frequent Releases Reduce Risk

competitive advantage

Page 22: Frequent Releases Reduce Risk

evolve software

Page 23: Frequent Releases Reduce Risk

resolve problems

Page 24: Frequent Releases Reduce Risk

faster than the competition

Page 25: Frequent Releases Reduce Risk

capability

Page 26: Frequent Releases Reduce Risk

respond to change

Page 27: Frequent Releases Reduce Risk

▪ Individuals and interactions over processes and tools

▪ Working software over comprehensive documentation

▪ Customer collaboration over contract negotiation

▪ Responding to change over following a plan

Agile Manifesto

Page 28: Frequent Releases Reduce Risk

proposition

Page 29: Frequent Releases Reduce Risk

increase riskfrequent releases

Page 30: Frequent Releases Reduce Risk

increase riskreduce

frequent releases

Page 31: Frequent Releases Reduce Risk

1) expose

Page 32: Frequent Releases Reduce Risk

2) mitigate

Page 33: Frequent Releases Reduce Risk

?

Page 34: Frequent Releases Reduce Risk

can you deploy daily?

Page 35: Frequent Releases Reduce Risk

“we can’t do that...”

(3 minutes, 3 reasons)

Page 36: Frequent Releases Reduce Risk

3 common excuses

Page 37: Frequent Releases Reduce Risk
Page 38: Frequent Releases Reduce Risk

1. not enough time to test

Page 39: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

Page 40: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

3. too much overhead

Page 41: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

3. too much overhead

Page 42: Frequent Releases Reduce Risk

1. not enough time to test

Page 43: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Page 44: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:

Page 45: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want

Page 46: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive

Page 47: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive• testing takes a long time

Page 48: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive• testing takes a long time• all bugs can be found in test

Page 49: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive• testing takes a long time• all bugs can be found in test

Page 50: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

testing: did we build it right?

Page 51: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

risk: did we build the right thing?

Page 52: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

$O

Page 53: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

$O(well, negative $ actually)

Page 54: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

Page 55: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

• we understand our customer’s needs

Page 56: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

• we understand our customer’s needs• our customers know what they want

Page 57: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

• we understand our customer’s needs• our customers know what they want• our customers will still want what we have when we give to them

Page 58: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

validated learning about customers

Page 59: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

simplest solution to validate hypothesis

Page 60: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

split test

Page 61: Frequent Releases Reduce Risk

1. not enough time to test

Assume: we know what our customers want

“deliver fast enough that the customer doesn’t have time

to change their mind”

Page 62: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive• testing takes a long time• all bugs can be found in test

Page 63: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

$ million bug

Page 64: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

= $10 billion

Page 65: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

= 120M users/day

Page 66: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

bugs are inevitable

Page 67: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

speed of response

Page 68: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

continuous monitoring

Page 69: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

Page 70: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

Page 71: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

Page 72: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: bugs are expensive

Page 73: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive• testing takes a long time• all bugs can be found in test

Page 74: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: testing takes a long time

small changes

Page 75: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: testing takes a long time

continuous integration

Page 76: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: testing takes a long time

continuous testing

Page 77: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: testing takes a long time

test automation

Page 78: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: testing takes a long time

always releaseable

Page 79: Frequent Releases Reduce Risk

1. not enough time to test

Risk: cost of bugs getting into production

Assumptions:• we know what our customers want• bugs are expensive• testing takes a long time• all bugs can be found in test

Page 80: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: all bugs can be found in test

= 40,000 photos/sec

Page 81: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: all bugs can be found in test

= 6 Pb of storage

Page 82: Frequent Releases Reduce Risk

1. not enough time to test

Assumption: all bugs can be found in test

Page 83: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

3. too much overhead

Page 84: Frequent Releases Reduce Risk

2. disruptive to users

Page 85: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Page 86: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:

Page 87: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:• releases incur downtime

Page 88: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:• releases incur downtime• users will notice changes

Page 89: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:• releases incur downtime• users will notice changes• changes are visible to all users

Page 90: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:• releases incur downtime• users will notice changes• changes are visible to all users

Page 91: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: releases incur downtime

patch releases?

Page 92: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: releases incur downtime

good will

Page 93: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: releases incur downtime

zero-downtime deployment

Page 94: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: releases incur downtime

redundancy

Page 95: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:• releases incur downtime• users will notice changes• changes are visible to all users

Page 96: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: users will notice changes

Page 97: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: users will notice changes

Page 98: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: users will notice changes

version?

Page 99: Frequent Releases Reduce Risk

2. disruptive to users

Risk: new releases will annoy users

Assumptions:• releases incur downtime• users will notice changes• changes are visible to all users

Page 100: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all users

big-bang release

Page 101: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all users

options

Page 102: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all users

Page 103: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

Page 104: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

• release to user subset (private beta)

Page 105: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

• release to user subset (private beta)• rollout to some servers

Page 106: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

• release to user subset (private beta)• rollout to some servers• downgrade feature

Page 107: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

• release to user subset (private beta)• rollout to some servers• downgrade feature• disable feature (feature darkmode)

Page 108: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

• release to user subset (private beta)• rollout to some servers• downgrade feature• disable feature (feature darkmode)• defer commit

Page 109: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all usersOptions:

• release to user subset (private beta)• rollout to some servers• downgrade feature• disable feature (feature darkmode)• defer commit• defer release

Page 110: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all users

options = $$$

Page 111: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all users

“release is a marketing decision”

Page 112: Frequent Releases Reduce Risk

2. disruptive to users

Assumption: changes are visible to all users

bonus:

Page 113: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

3. too much overhead

Page 114: Frequent Releases Reduce Risk

3. too much overhead

Page 115: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Page 116: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:

Page 117: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:• high coordination overhead

Page 118: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:• high coordination overhead• releases are risky

Page 119: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:• high coordination overhead• releases are risky• deployment takes a long time

Page 120: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:• high coordination overhead• releases are risky• deployment takes a long time

Page 121: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

functional silos

Page 122: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

dev vs. ops

Page 123: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

devs don’t know prod

Page 124: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

ops don’t know code

Page 125: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

shared accountability

Page 126: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

Page 127: Frequent Releases Reduce Risk

3. too much overhead

Assumption: high coordination overhead

shared accountability

Page 128: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:• high coordination overhead• releases are risky• deployment takes a long time

Page 129: Frequent Releases Reduce Risk

3. too much overhead

Assumption: releases are risky

“if it hurts, do it more often”

Page 130: Frequent Releases Reduce Risk

3. too much overhead

Assumption: releases are risky

incremental change

Page 131: Frequent Releases Reduce Risk

3. too much overhead

Assumption: releases are risky

more or less same system

Page 132: Frequent Releases Reduce Risk

3. too much overhead

Assumption: releases are risky

practice makes perfect

Page 133: Frequent Releases Reduce Risk

3. too much overhead

Risk: cost of a release is greater than the benefit of its changes

Assumptions:• high coordination overhead• releases are risky• deployment takes a long time

Page 134: Frequent Releases Reduce Risk

3. too much overhead

Assumption: deployment takes a long time

risk: manual steps

Page 135: Frequent Releases Reduce Risk

3. too much overhead

Assumption: deployment takes a long time

automated deployment

Page 136: Frequent Releases Reduce Risk

3. too much overhead

Assumption: deployment takes a long time

one-step process

Page 137: Frequent Releases Reduce Risk

Summary

Page 138: Frequent Releases Reduce Risk

?

Frequent Releases?

Page 139: Frequent Releases Reduce Risk

concerns

Page 140: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

3. too much overhead

Page 141: Frequent Releases Reduce Risk

risks

Page 142: Frequent Releases Reduce Risk

1. bugs getting into production

2. new releases will annoy users

3. cost of a release is greater than the benefit of its changes

Page 143: Frequent Releases Reduce Risk

localized risk

Page 144: Frequent Releases Reduce Risk

1) expose

Page 145: Frequent Releases Reduce Risk

underlying risks

Risks:• do we know what customers want?• can we respond fast enough to problems?• can we detect problems when they happen? • can we limit the impact of changes?• can we deploy without downtime?• can we build production-ready software?

Page 146: Frequent Releases Reduce Risk

2) mitigate

Page 147: Frequent Releases Reduce Risk

mitigation strategies

Strategies:• validated learning about customers• split testing• continuous monitoring• continuous integration • test automation • zero-down time deployment• deployment options• operation levers• automated deployment

Page 148: Frequent Releases Reduce Risk

Thank You!

Page 149: Frequent Releases Reduce Risk

Shameless Plug

Page 150: Frequent Releases Reduce Risk
Page 151: Frequent Releases Reduce Risk

Nov 2 - 5• Eric Evans

• Michael Feathers

• Martin Fowler

• Jeff Patton

• Mary Poppendieck

• Michael Nygard

• Linda Rising

• Johanna Rothmann

Page 152: Frequent Releases Reduce Risk

Releasing Frequently Reduces Risk

Owen RogersTwitter: @exortech

http://exortech.com/blog

Page 153: Frequent Releases Reduce Risk

1. not enough time to test

2. disruptive to users

3. too much overhead

Page 154: Frequent Releases Reduce Risk

1. bugs getting into production

2. new releases will annoy users

3. cost of a release is greater than the benefit of its changes