SlideShare a Scribd company logo
1 of 154
Download to read offline
Releasing Frequently
    Reduces Risk
         Owen Rogers
      Twitter: @exortech
   http://exortech.com/blog
1 year
48 releases
~ 1 release / week
10+/day
50+/day
continuous
deployment
crazy
sea change
competitive advantage
evolve software
resolve problems
faster than the
 competition
capability
respond to change
Agile Manifesto

▪
Individuals and interactions over processes and tools



▪
Working software over comprehensive documentation



▪
Customer collaboration over contract negotiation



▪
Responding to change over following a plan
proposition
frequent releases
   increase risk
frequent releases
   increase risk
    reduce
1) expose
2) mitigate
?
can you deploy
    daily?
“we can’t do that...”

 (3 minutes, 3 reasons)
3 common excuses
1. not enough time to test
1. not enough time to test
2. disruptive to users
1. not enough time to test
2. disruptive to users
3. too much overhead
1. not enough time to test
2. disruptive to users
3. too much overhead
1. not enough time to test
1. not enough time to test
Risk: cost of bugs getting into production
1. not enough time to test
Risk: cost of bugs getting into production

Assumptions:
1. not enough time to test
Risk: cost of bugs getting into production

Assumptions:
 • we know what our customers want
1. not enough time to test
Risk: cost of bugs getting into production

Assumptions:
 • we know what our customers want
 • bugs are expensive
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
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
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
1. not enough time to test
Assume: we know what our customers want


      testing: did we
       build it right?
1. not enough time to test
Assume: we know what our customers want


    risk: did we build
     the right thing?
1. not enough time to test
Assume: we know what our customers want


                 $O
1. not enough time to test
Assume: we know what our customers want


                 $O
     (well, negative $ actually)
1. not enough time to test
Assume: we know what our customers want
1. not enough time to test
Assume: we know what our customers want

  • we understand our customer’s needs
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
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
1. not enough time to test
Assume: we know what our customers want


   validated learning
    about customers
1. not enough time to test
Assume: we know what our customers want


    simplest solution
       to validate
       hypothesis
1. not enough time to test
Assume: we know what our customers want



            split test
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”
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
1. not enough time to test
Assumption: bugs are expensive



      $ million bug
1. not enough time to test
Assumption: bugs are expensive


          = $10 billion
1. not enough time to test
Assumption: bugs are expensive


          = 120M users/day
1. not enough time to test
Assumption: bugs are expensive



 bugs are inevitable
1. not enough time to test
Assumption: bugs are expensive



  speed of response
1. not enough time to test
Assumption: bugs are expensive



        continuous
        monitoring
1. not enough time to test
Assumption: bugs are expensive
1. not enough time to test
Assumption: bugs are expensive
1. not enough time to test
Assumption: bugs are expensive
1. not enough time to test
Assumption: bugs are expensive
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
1. not enough time to test
Assumption: testing takes a long time



      small changes
1. not enough time to test
Assumption: testing takes a long time



        continuous
        integration
1. not enough time to test
Assumption: testing takes a long time



        continuous
          testing
1. not enough time to test
Assumption: testing takes a long time




    test automation
1. not enough time to test
Assumption: testing takes a long time




 always releaseable
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
1. not enough time to test
Assumption: all bugs can be found in test



         = 40,000 photos/sec
1. not enough time to test
Assumption: all bugs can be found in test



          = 6 Pb of storage
1. not enough time to test
Assumption: all bugs can be found in test
1. not enough time to test
2. disruptive to users
3. too much overhead
2. disruptive to users
2. disruptive to users
Risk: new releases will annoy users
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
 • releases incur downtime
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
 • releases incur downtime
 • users will notice changes
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
 • releases incur downtime
 • users will notice changes
 • changes are visible to all users
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
 • releases incur downtime
 • users will notice changes
 • changes are visible to all users
2. disruptive to users
Assumption: releases incur downtime



    patch releases?
2. disruptive to users
Assumption: releases incur downtime




             good will
2. disruptive to users
Assumption: releases incur downtime



    zero-downtime
      deployment
2. disruptive to users
Assumption: releases incur downtime



       redundancy
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
 • releases incur downtime
 • users will notice changes
 • changes are visible to all users
2. disruptive to users
Assumption: users will notice changes
2. disruptive to users
Assumption: users will notice changes
2. disruptive to users
Assumption: users will notice changes



           version?
2. disruptive to users
Risk: new releases will annoy users

Assumptions:
 • releases incur downtime
 • users will notice changes
 • changes are visible to all users
2. disruptive to users
Assumption: changes are visible to all
users


   big-bang release
2. disruptive to users
Assumption: changes are visible to all
users


             options
2. disruptive to users
Assumption: changes are visible to all
users
2. disruptive to users
Assumption: changes are visible to all
users
Options:
2. disruptive to users
Assumption: changes are visible to all
users
Options:
  • release to user subset (private beta)
2. disruptive to users
Assumption: changes are visible to all
users
Options:
  • release to user subset (private beta)
  • rollout to some servers
2. disruptive to users
Assumption: changes are visible to all
users
Options:
  • release to user subset (private beta)
  • rollout to some servers
  • downgrade feature
2. disruptive to users
Assumption: changes are visible to all
users
Options:
  • release to user subset (private beta)
  • rollout to some servers
  • downgrade feature
  • disable feature (feature darkmode)
2. disruptive to users
Assumption: changes are visible to all
users
Options:
  • release to user subset (private beta)
  • rollout to some servers
  • downgrade feature
  • disable feature (feature darkmode)
  • defer commit
2. disruptive to users
Assumption: changes are visible to all
users
Options:
  • release to user subset (private beta)
  • rollout to some servers
  • downgrade feature
  • disable feature (feature darkmode)
  • defer commit
  • defer release
2. disruptive to users
Assumption: changes are visible to all
users


      options = $$$
2. disruptive to users
Assumption: changes are visible to all
users


   “release is a
marketing decision”
2. disruptive to users
Assumption: changes are visible to all
users

             bonus:
1. not enough time to test
2. disruptive to users
3. too much overhead
3. too much overhead
3. too much overhead
Risk: cost of a release is greater than the
benefit of its changes
3. too much overhead
Risk: cost of a release is greater than the
benefit of its changes

Assumptions:
3. too much overhead
Risk: cost of a release is greater than the
benefit of its changes

Assumptions:
 • high coordination overhead
3. too much overhead
Risk: cost of a release is greater than the
benefit of its changes

Assumptions:
 • high coordination overhead
 • releases are risky
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
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
3. too much overhead
Assumption: high coordination overhead



    functional silos
3. too much overhead
Assumption: high coordination overhead



        dev vs. ops
3. too much overhead
Assumption: high coordination overhead



   devs don’t know
         prod
3. too much overhead
Assumption: high coordination overhead



    ops don’t know
         code
3. too much overhead
Assumption: high coordination overhead



        shared
     accountability
3. too much overhead
Assumption: high coordination overhead
3. too much overhead
Assumption: high coordination overhead



        shared
     accountability
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
3. too much overhead
Assumption: releases are risky



    “if it hurts, do it
       more often”
3. too much overhead
Assumption: releases are risky



        incremental
          change
3. too much overhead
Assumption: releases are risky



  more or less same
      system
3. too much overhead
Assumption: releases are risky



     practice makes
         perfect
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
3. too much overhead
Assumption: deployment takes a long
time



 risk: manual steps
3. too much overhead
Assumption: deployment takes a long
time


       automated
       deployment
3. too much overhead
Assumption: deployment takes a long
time



   one-step process
Summary
Frequent Releases?



?
concerns
1. not enough time to test
2. disruptive to users
3. too much overhead
risks
1. bugs getting into production
2. new releases will annoy users
3. cost of a release is greater
than the benefit of its changes
localized risk
1) expose
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?
2) mitigate
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
Thank You!
Shameless Plug
Nov 2 - 5
•   Eric Evans

•   Michael Feathers

•   Martin Fowler

•   Jeff Patton

•   Mary Poppendieck

•   Michael Nygard

•   Linda Rising

•   Johanna Rothmann
Releasing Frequently
    Reduces Risk
         Owen Rogers
      Twitter: @exortech
   http://exortech.com/blog
1. not enough time to test
2. disruptive to users
3. too much overhead
1. bugs getting into production
2. new releases will annoy users
3. cost of a release is greater
than the benefit of its changes

More Related Content

Similar to Frequent Releases Reduce Risk

Introduction to bugs measurement
Introduction to bugs measurementIntroduction to bugs measurement
Introduction to bugs measurement
Volodya Novostavsky
 
2013 ucar best practices
2013 ucar best practices2013 ucar best practices
2013 ucar best practices
c.titus.brown
 
Releasing To Production Every Week India
Releasing To Production Every Week   IndiaReleasing To Production Every Week   India
Releasing To Production Every Week India
exortech
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
Zivtech, LLC
 

Similar to Frequent Releases Reduce Risk (20)

Introduction to bugs measurement
Introduction to bugs measurementIntroduction to bugs measurement
Introduction to bugs measurement
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
An Introduction To Software Development - Final Review
An Introduction To Software Development - Final ReviewAn Introduction To Software Development - Final Review
An Introduction To Software Development - Final Review
 
2013 ucar best practices
2013 ucar best practices2013 ucar best practices
2013 ucar best practices
 
Continuous Delivery for the Rest of Us
Continuous Delivery for the Rest of UsContinuous Delivery for the Rest of Us
Continuous Delivery for the Rest of Us
 
Reducing risk through continuous delivery (Nov 2014)
Reducing risk through continuous delivery (Nov 2014)Reducing risk through continuous delivery (Nov 2014)
Reducing risk through continuous delivery (Nov 2014)
 
Reducing risk through continuous delivery (Nov 2014)
Reducing risk through continuous delivery (Nov 2014)Reducing risk through continuous delivery (Nov 2014)
Reducing risk through continuous delivery (Nov 2014)
 
Releasing To Production Every Week India
Releasing To Production Every Week   IndiaReleasing To Production Every Week   India
Releasing To Production Every Week India
 
Five Cliches of Online Game Development
Five Cliches of Online Game DevelopmentFive Cliches of Online Game Development
Five Cliches of Online Game Development
 
Just test it - discovering new products and reducing risk through rapid proto...
Just test it - discovering new products and reducing risk through rapid proto...Just test it - discovering new products and reducing risk through rapid proto...
Just test it - discovering new products and reducing risk through rapid proto...
 
Changing rules 1_stopcheating_slideshare
Changing rules 1_stopcheating_slideshareChanging rules 1_stopcheating_slideshare
Changing rules 1_stopcheating_slideshare
 
Pushing the Bottleneck: Predicting and Addressing the Next, Next Thing
Pushing the Bottleneck: Predicting and Addressing the Next, Next ThingPushing the Bottleneck: Predicting and Addressing the Next, Next Thing
Pushing the Bottleneck: Predicting and Addressing the Next, Next Thing
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
Load-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.ioLoad-testing 101 for Startups with Artillery.io
Load-testing 101 for Startups with Artillery.io
 
Viral loops
Viral loopsViral loops
Viral loops
 
Why Remote Research Is (or isn't) Right for your project
Why Remote Research Is (or isn't) Right for your projectWhy Remote Research Is (or isn't) Right for your project
Why Remote Research Is (or isn't) Right for your project
 
Be a Quality Evangelist
Be a Quality EvangelistBe a Quality Evangelist
Be a Quality Evangelist
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
iOSDC 2018 Presentation - Casual Talk
iOSDC 2018 Presentation - Casual TalkiOSDC 2018 Presentation - Casual Talk
iOSDC 2018 Presentation - Casual Talk
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 

Frequent Releases Reduce Risk

  • 1. Releasing Frequently Reduces Risk Owen Rogers Twitter: @exortech http://exortech.com/blog
  • 3.
  • 5. ~ 1 release / week
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 13.
  • 14.
  • 17. crazy
  • 18.
  • 19.
  • 24. faster than the competition
  • 27. Agile Manifesto ▪ Individuals and interactions over processes and tools ▪ Working software over comprehensive documentation ▪ Customer collaboration over contract negotiation ▪ Responding to change over following a plan
  • 29. frequent releases increase risk
  • 30. frequent releases increase risk reduce
  • 33. ?
  • 34. can you deploy daily?
  • 35. “we can’t do that...” (3 minutes, 3 reasons)
  • 37.
  • 38. 1. not enough time to test
  • 39. 1. not enough time to test 2. disruptive to users
  • 40. 1. not enough time to test 2. disruptive to users 3. too much overhead
  • 41. 1. not enough time to test 2. disruptive to users 3. too much overhead
  • 42. 1. not enough time to test
  • 43. 1. not enough time to test Risk: cost of bugs getting into production
  • 44. 1. not enough time to test Risk: cost of bugs getting into production Assumptions:
  • 45. 1. not enough time to test Risk: cost of bugs getting into production Assumptions: • we know what our customers want
  • 46. 1. not enough time to test Risk: cost of bugs getting into production Assumptions: • we know what our customers want • bugs are expensive
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. 1. not enough time to test Assume: we know what our customers want testing: did we build it right?
  • 51. 1. not enough time to test Assume: we know what our customers want risk: did we build the right thing?
  • 52. 1. not enough time to test Assume: we know what our customers want $O
  • 53. 1. not enough time to test Assume: we know what our customers want $O (well, negative $ actually)
  • 54. 1. not enough time to test Assume: we know what our customers want
  • 55. 1. not enough time to test Assume: we know what our customers want • we understand our customer’s needs
  • 56. 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
  • 57. 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
  • 58. 1. not enough time to test Assume: we know what our customers want validated learning about customers
  • 59. 1. not enough time to test Assume: we know what our customers want simplest solution to validate hypothesis
  • 60. 1. not enough time to test Assume: we know what our customers want split test
  • 61. 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”
  • 62. 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
  • 63. 1. not enough time to test Assumption: bugs are expensive $ million bug
  • 64. 1. not enough time to test Assumption: bugs are expensive = $10 billion
  • 65. 1. not enough time to test Assumption: bugs are expensive = 120M users/day
  • 66. 1. not enough time to test Assumption: bugs are expensive bugs are inevitable
  • 67. 1. not enough time to test Assumption: bugs are expensive speed of response
  • 68. 1. not enough time to test Assumption: bugs are expensive continuous monitoring
  • 69. 1. not enough time to test Assumption: bugs are expensive
  • 70. 1. not enough time to test Assumption: bugs are expensive
  • 71. 1. not enough time to test Assumption: bugs are expensive
  • 72. 1. not enough time to test Assumption: bugs are expensive
  • 73. 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
  • 74. 1. not enough time to test Assumption: testing takes a long time small changes
  • 75. 1. not enough time to test Assumption: testing takes a long time continuous integration
  • 76. 1. not enough time to test Assumption: testing takes a long time continuous testing
  • 77. 1. not enough time to test Assumption: testing takes a long time test automation
  • 78. 1. not enough time to test Assumption: testing takes a long time always releaseable
  • 79. 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
  • 80. 1. not enough time to test Assumption: all bugs can be found in test = 40,000 photos/sec
  • 81. 1. not enough time to test Assumption: all bugs can be found in test = 6 Pb of storage
  • 82. 1. not enough time to test Assumption: all bugs can be found in test
  • 83. 1. not enough time to test 2. disruptive to users 3. too much overhead
  • 85. 2. disruptive to users Risk: new releases will annoy users
  • 86. 2. disruptive to users Risk: new releases will annoy users Assumptions:
  • 87. 2. disruptive to users Risk: new releases will annoy users Assumptions: • releases incur downtime
  • 88. 2. disruptive to users Risk: new releases will annoy users Assumptions: • releases incur downtime • users will notice changes
  • 89. 2. disruptive to users Risk: new releases will annoy users Assumptions: • releases incur downtime • users will notice changes • changes are visible to all users
  • 90. 2. disruptive to users Risk: new releases will annoy users Assumptions: • releases incur downtime • users will notice changes • changes are visible to all users
  • 91. 2. disruptive to users Assumption: releases incur downtime patch releases?
  • 92. 2. disruptive to users Assumption: releases incur downtime good will
  • 93. 2. disruptive to users Assumption: releases incur downtime zero-downtime deployment
  • 94. 2. disruptive to users Assumption: releases incur downtime redundancy
  • 95. 2. disruptive to users Risk: new releases will annoy users Assumptions: • releases incur downtime • users will notice changes • changes are visible to all users
  • 96. 2. disruptive to users Assumption: users will notice changes
  • 97. 2. disruptive to users Assumption: users will notice changes
  • 98. 2. disruptive to users Assumption: users will notice changes version?
  • 99. 2. disruptive to users Risk: new releases will annoy users Assumptions: • releases incur downtime • users will notice changes • changes are visible to all users
  • 100. 2. disruptive to users Assumption: changes are visible to all users big-bang release
  • 101. 2. disruptive to users Assumption: changes are visible to all users options
  • 102. 2. disruptive to users Assumption: changes are visible to all users
  • 103. 2. disruptive to users Assumption: changes are visible to all users Options:
  • 104. 2. disruptive to users Assumption: changes are visible to all users Options: • release to user subset (private beta)
  • 105. 2. disruptive to users Assumption: changes are visible to all users Options: • release to user subset (private beta) • rollout to some servers
  • 106. 2. disruptive to users Assumption: changes are visible to all users Options: • release to user subset (private beta) • rollout to some servers • downgrade feature
  • 107. 2. disruptive to users Assumption: changes are visible to all users Options: • release to user subset (private beta) • rollout to some servers • downgrade feature • disable feature (feature darkmode)
  • 108. 2. disruptive to users Assumption: changes are visible to all users Options: • release to user subset (private beta) • rollout to some servers • downgrade feature • disable feature (feature darkmode) • defer commit
  • 109. 2. disruptive to users Assumption: changes are visible to all users Options: • release to user subset (private beta) • rollout to some servers • downgrade feature • disable feature (feature darkmode) • defer commit • defer release
  • 110. 2. disruptive to users Assumption: changes are visible to all users options = $$$
  • 111. 2. disruptive to users Assumption: changes are visible to all users “release is a marketing decision”
  • 112. 2. disruptive to users Assumption: changes are visible to all users bonus:
  • 113. 1. not enough time to test 2. disruptive to users 3. too much overhead
  • 114. 3. too much overhead
  • 115. 3. too much overhead Risk: cost of a release is greater than the benefit of its changes
  • 116. 3. too much overhead Risk: cost of a release is greater than the benefit of its changes Assumptions:
  • 117. 3. too much overhead Risk: cost of a release is greater than the benefit of its changes Assumptions: • high coordination overhead
  • 118. 3. too much overhead Risk: cost of a release is greater than the benefit of its changes Assumptions: • high coordination overhead • releases are risky
  • 119. 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
  • 120. 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
  • 121. 3. too much overhead Assumption: high coordination overhead functional silos
  • 122. 3. too much overhead Assumption: high coordination overhead dev vs. ops
  • 123. 3. too much overhead Assumption: high coordination overhead devs don’t know prod
  • 124. 3. too much overhead Assumption: high coordination overhead ops don’t know code
  • 125. 3. too much overhead Assumption: high coordination overhead shared accountability
  • 126. 3. too much overhead Assumption: high coordination overhead
  • 127. 3. too much overhead Assumption: high coordination overhead shared accountability
  • 128. 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
  • 129. 3. too much overhead Assumption: releases are risky “if it hurts, do it more often”
  • 130. 3. too much overhead Assumption: releases are risky incremental change
  • 131. 3. too much overhead Assumption: releases are risky more or less same system
  • 132. 3. too much overhead Assumption: releases are risky practice makes perfect
  • 133. 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
  • 134. 3. too much overhead Assumption: deployment takes a long time risk: manual steps
  • 135. 3. too much overhead Assumption: deployment takes a long time automated deployment
  • 136. 3. too much overhead Assumption: deployment takes a long time one-step process
  • 140. 1. not enough time to test 2. disruptive to users 3. too much overhead
  • 141. risks
  • 142. 1. bugs getting into production 2. new releases will annoy users 3. cost of a release is greater than the benefit of its changes
  • 145. 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?
  • 147. 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
  • 150.
  • 151. Nov 2 - 5 • Eric Evans • Michael Feathers • Martin Fowler • Jeff Patton • Mary Poppendieck • Michael Nygard • Linda Rising • Johanna Rothmann
  • 152. Releasing Frequently Reduces Risk Owen Rogers Twitter: @exortech http://exortech.com/blog
  • 153. 1. not enough time to test 2. disruptive to users 3. too much overhead
  • 154. 1. bugs getting into production 2. new releases will annoy users 3. cost of a release is greater than the benefit of its changes