SlideShare a Scribd company logo
1 of 31
+
Software MTTR: the Path
from Continuous Integration
to Continuous Delivery
Jeff Sussna, Ingineering.IT
Software Mean Time to Repair
Bug-Hours: MTTR for software
Enhancement requests are bug reports
 Gap between actual and desired value
 All software development is “repair”
Continuous Delivery = Continuous Repair = Minimize MTTR
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Change is Good/Change is Bad
Change is good: how we deliver value
Change is bad: introduces uncertainty and often failure
Continuous Delivery answers its own question
 Reduces uncertainty
 Increases rate of value delivery
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Continuous Delivery is Lean
Small batch sizes
Just-in-time production
Andon cord
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Batch Size
Batch size: unit of work passing between process stages
Small batch sizes:
 Reduce complexity and risk
 Increase efficiency
 Lower overhead
 Reduce cycle time
 Speed up feedback loops
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Just-in-time Production
Only make what’s needed, when and how it’s needed
Avoid wasteful inventory
Applies to:
 Features
 Designs
 Code
 Tests
 Infrastructure
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Andon Cord
Any worker can stop the production line
Treat the next step in the pipeline as your customer
Improve quality and efficiency by fixing defects now not later
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Agile is Lean
Batch size: one year => one month
JIT production: groom the backlog each iteration
Andon cord: continuous integration
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Sources of Software Failures
Unit errors
 Requirements misunderstanding
 Logic errors
 Design errors
Integration errors
 Hard due to inherent complexity
 Delayed/batched due to fear
Irony: large integration batch sizes increase level of difficulty
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Continuous Integration
Check into trunk often
Build on every commit
Test on every build
Notify on every error
Fix every broken build
Necessitates build/deploy/test/report automation
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Value of Continuous Integration
Reduces integration batch size and latency
Enables Andon cord
Pulls QA into development
Removes waste/variation from manual build/deploy/test/report
Minimizes “merge-hell” due to long-lived branches
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Redefining “Done”
Agile says nothing about getting product in customer’s hands
Software product era: cost of delivery is high for all
 Vendor: burn and mail CD
 Customer: upgrade to new version
Cloud changes the development/delivery equation
 Customer’s delivery cost shrinks
 Development org IS the delivery org
Done: “the customer has the change and is satisfied with it”
 Kind of like any other service industry
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Continuous Delivery
Finishes what Continuous Integration starts
Minimizes friction in the flow from integration to satisfaction
Forces end-to-end batch size reduction
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Doing Continuous Delivery
Small batch sizes all the way to prod
Automation all the way to prod
Decoupled technical and non-technical deployment
 Deployed in prod != visible to customer
Shift your focus from iterations to changes
 Think in terms of bug-hours
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Small Batch Sizes
Don’t batch testing ‘til the end of the iteration
Pipeline testing stages
 Acceptance
 Security
 Performance/Scalability/Fault-tolerance
 UAT
 Fail as far upfront as possible
Don’t batch release‘til the end of iteration
 Hotfixes go away!
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Automation
Human gates are OK
 When/why to move forward
Manual labor is not OK
 Acceptance testing
 Non-functional testing
 Deployment throughout the pipeline
Deal in atomic releases
 DB + Code + Infrastructure
 Deployment + rollback
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Decoupled Deployment
Techniques:
 Feature toggles
 Feature branches
 Application componentization
Business-defined release: the ultimate goal
 Canary
 A-B
 Demographic/Geographical
Multi-tenancy for code
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Code Multi-Tenancy as Strategy
Empower the business: release at 12:01 Christmas morning
Free the developers: don’t deploy at 12:01 Christmas morning
1st-class “non-functional” requirement
 Job is to deliver service
 Biz ops needs control over features as part of customer interaction
 Should be fundamental part of application architecture
 Test it!
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Continuous Delivery Discipline
Don’t check it in if you don’t want it to go to prod
 Check-in is the middle of the delivery lifecycle, not the beginning
Don’t write code you don’t want to go to prod
Don’t assume technical release equals business release
Strive for release boredom
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Boring Releases
Just like integration we avoid release because it’s scary
Do scary things more, not less often
 Practice makes perfect
 Find ways to make it less scary
Making it easy to back out makes it less scary
Holy grail: prod releases are boring
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
The Importance of Integrated
Quality
Continuously delivering lousy software is not getting to done
QA must be deeply embedded to avoid friction
Deep QA integration can make things faster AND better
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Quality Integration Techniques
Testing as software engineering (SET)
Testing pyramid
Test the service not just the software
 In XaaS’the ‘S’ stands for ‘service’ not ‘software’
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Software Engineer in Test
Approach test development as software engineering
 Object-oriented design
 TDD
 Performance, maintainability, extensibility
 Use productivity enablers (Groovy, Spock, Geb…)
Do test design spikes, not just code design spikes
Be the advocate for the new definition of done
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
The Testing Pyramid
Automated tests’ value depends on how often/fast they can run
 System tests: few
 Acceptance tests: some
 Integration tests: many
 Unit tests: lots
The pyramid spans traditional dev/test boundaries
 Developers need to think about testing
 Testers mind developers’ business at the lower pyramid levels
 Test design spikes should involve everyone
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Test the Service not the Software
The delivery pipeline is part of the service, so test it
 Inefficiencies are bugs too
What about “non-functional” requirements?
 Performance, resiliency, DB, InfoSec
 Incorporate them into upfront processes
 Test them using a deployment pipeline
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
The Importance of Configuration
Automation
Beware the sandbox
 Variation creates waste and errors
 Manual developer configuration has opportunity cost
Configuration automation is a solved problem
 Environments: cloud, Vagrant
 Automation: Puppet, Chef, CFEngine
 Deployment: Jenkins, Capistrano, Liquibase, flyway
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Keys to Configuration Automation
Do everything to all the things
 Code, database, system, infrastructure
 Version control
 Packaging
Be able to go from any Point A to and Point B
 Including when A = nothing
Testers: don’t be codependent with developers
 Remember, you’re minding their business
 Remember, waste/variation degrades service quality
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Solving the Change Conundrum
Smaller changes are easier
Automated processes are less error-prone
More frequent changes require practice => perfection
Change is no longer the enemy
Change is your business
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Getting from Here to There
Don’t do “continuous delivery”, do “more continuous delivery”
 CD holy grail requires tremendous tool and process maturity
 Start with something small and simple
 Apply Kaizen
Question assumptions
 Especially about anything that feels “clumsy” or “we have to
because…”
Slow down to go faster
 Find opportunities to reduce batch size
 Think in terms of one-piece flow/new definition of “done”
Find ways to move quality inward and forward
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
Software MTTR
Repeat after me: our job is to deliver service, not software
 Continual value repair is part of the service
 MTTR is a (the?) key metric
If you grok the logic of CD, the tools/process will flow
 If not, they either frustrate or else represent ‘cargo cult’
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
My Vitals
www.ingineering.it
blog.ingineering.it
@jeffsussna
www.linkedin.com/in/jeffsussna
Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.

More Related Content

What's hot

Building a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilBuilding a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilIBM UrbanCode Products
 
Pulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and RoadmapPulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and RoadmapDaniel Berg
 
Sea spin5 2013
Sea spin5 2013Sea spin5 2013
Sea spin5 2013Jeff Smith
 
What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?Bill Holtshouser
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsSanjeev Sharma
 
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption RoadmapGet Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption RoadmapIBM UrbanCode Products
 
IBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOpsIBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOpsSanjeev Sharma
 
Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...
Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...
Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...Roger Snook
 
Using Artificial Intelligence in Software Engineering
Using Artificial Intelligence in Software EngineeringUsing Artificial Intelligence in Software Engineering
Using Artificial Intelligence in Software EngineeringFaculty of Computer Science
 
Leading DevOps Application Release and Deployment - Best Practices for Organi...
Leading DevOps Application Release and Deployment - Best Practices for Organi...Leading DevOps Application Release and Deployment - Best Practices for Organi...
Leading DevOps Application Release and Deployment - Best Practices for Organi...IBM UrbanCode Products
 
IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6Strongback Consulting
 
Shift left - find defects earlier through automated test and deployment
Shift left - find defects earlier through automated test and deploymentShift left - find defects earlier through automated test and deployment
Shift left - find defects earlier through automated test and deploymentClaudia Ring
 
[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap
[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap
[IBM Pulse 2014] #1579 DevOps Technical Strategy and RoadmapDaniel Berg
 
Using Lean Thinking to identify and address Delivery Pipeline bottlenecks
Using Lean Thinking to identify and address Delivery Pipeline bottlenecksUsing Lean Thinking to identify and address Delivery Pipeline bottlenecks
Using Lean Thinking to identify and address Delivery Pipeline bottlenecksSanjeev Sharma
 
Innovate 2014 - DevOps Technical Strategy
Innovate 2014 - DevOps Technical StrategyInnovate 2014 - DevOps Technical Strategy
Innovate 2014 - DevOps Technical StrategyDaniel Berg
 
DevOps evolution architecting the modern software factory - cloud expo east 2017
DevOps evolution architecting the modern software factory - cloud expo east 2017DevOps evolution architecting the modern software factory - cloud expo east 2017
DevOps evolution architecting the modern software factory - cloud expo east 2017Anand Akela
 
Dops 1033 dev-ops_review_final
Dops 1033 dev-ops_review_finalDops 1033 dev-ops_review_final
Dops 1033 dev-ops_review_finalDaniel Berg
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesIBM UrbanCode Products
 
DevOps adoption in the enterprise
DevOps adoption in the enterpriseDevOps adoption in the enterprise
DevOps adoption in the enterpriseSanjeev Sharma
 
Industry Perspective: DevOps - What it Means for the Average Business
Industry Perspective: DevOps - What it Means for the Average BusinessIndustry Perspective: DevOps - What it Means for the Average Business
Industry Perspective: DevOps - What it Means for the Average BusinessMichael Elder
 

What's hot (20)

Building a DevOps Team that isn't Evil
Building a DevOps Team that isn't EvilBuilding a DevOps Team that isn't Evil
Building a DevOps Team that isn't Evil
 
Pulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and RoadmapPulse 2013: DevOps Review and Roadmap
Pulse 2013: DevOps Review and Roadmap
 
Sea spin5 2013
Sea spin5 2013Sea spin5 2013
Sea spin5 2013
 
What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?What do the "Cool Kids" know about DevOps?
What do the "Cool Kids" know about DevOps?
 
IBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOpsIBM Innovate - Uderstanding DevOps
IBM Innovate - Uderstanding DevOps
 
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption RoadmapGet Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
Get Mapped: Using Value Stream Mapping to Create a DevOps Adoption Roadmap
 
IBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOpsIBM Pulse session 2727: Continuous delivery -accelerated with DevOps
IBM Pulse session 2727: Continuous delivery -accelerated with DevOps
 
Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...
Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...
Mobile DevOps: Rapid Response to Feedback and continuous delivery in a mobile...
 
Using Artificial Intelligence in Software Engineering
Using Artificial Intelligence in Software EngineeringUsing Artificial Intelligence in Software Engineering
Using Artificial Intelligence in Software Engineering
 
Leading DevOps Application Release and Deployment - Best Practices for Organi...
Leading DevOps Application Release and Deployment - Best Practices for Organi...Leading DevOps Application Release and Deployment - Best Practices for Organi...
Leading DevOps Application Release and Deployment - Best Practices for Organi...
 
IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6IBM Collaborative Lifecycle Management Solution for DevOps v6
IBM Collaborative Lifecycle Management Solution for DevOps v6
 
Shift left - find defects earlier through automated test and deployment
Shift left - find defects earlier through automated test and deploymentShift left - find defects earlier through automated test and deployment
Shift left - find defects earlier through automated test and deployment
 
[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap
[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap
[IBM Pulse 2014] #1579 DevOps Technical Strategy and Roadmap
 
Using Lean Thinking to identify and address Delivery Pipeline bottlenecks
Using Lean Thinking to identify and address Delivery Pipeline bottlenecksUsing Lean Thinking to identify and address Delivery Pipeline bottlenecks
Using Lean Thinking to identify and address Delivery Pipeline bottlenecks
 
Innovate 2014 - DevOps Technical Strategy
Innovate 2014 - DevOps Technical StrategyInnovate 2014 - DevOps Technical Strategy
Innovate 2014 - DevOps Technical Strategy
 
DevOps evolution architecting the modern software factory - cloud expo east 2017
DevOps evolution architecting the modern software factory - cloud expo east 2017DevOps evolution architecting the modern software factory - cloud expo east 2017
DevOps evolution architecting the modern software factory - cloud expo east 2017
 
Dops 1033 dev-ops_review_final
Dops 1033 dev-ops_review_finalDops 1033 dev-ops_review_final
Dops 1033 dev-ops_review_final
 
A Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for DatabasesA Continuous Delivery Safety Net for Databases
A Continuous Delivery Safety Net for Databases
 
DevOps adoption in the enterprise
DevOps adoption in the enterpriseDevOps adoption in the enterprise
DevOps adoption in the enterprise
 
Industry Perspective: DevOps - What it Means for the Average Business
Industry Perspective: DevOps - What it Means for the Average BusinessIndustry Perspective: DevOps - What it Means for the Average Business
Industry Perspective: DevOps - What it Means for the Average Business
 

Viewers also liked

Beyond DevOps: User-Centered IT
Beyond DevOps: User-Centered ITBeyond DevOps: User-Centered IT
Beyond DevOps: User-Centered ITJeff Sussna
 
Promising Digital Service Quality
Promising Digital Service QualityPromising Digital Service Quality
Promising Digital Service QualityJeff Sussna
 
The Essence of DevOps
The Essence of DevOpsThe Essence of DevOps
The Essence of DevOpsJeff Sussna
 
A Manifesto for 21st-Century IT
A Manifesto for 21st-Century ITA Manifesto for 21st-Century IT
A Manifesto for 21st-Century ITJeff Sussna
 
Better Service Through Promise Theory
Better Service Through Promise TheoryBetter Service Through Promise Theory
Better Service Through Promise TheoryJeff Sussna
 
Continuous Quality: What DevOps Means for QA
Continuous Quality: What DevOps Means for QAContinuous Quality: What DevOps Means for QA
Continuous Quality: What DevOps Means for QAJeff Sussna
 
From Cybernetics to DevOps and Beyond
From Cybernetics to DevOps and BeyondFrom Cybernetics to DevOps and Beyond
From Cybernetics to DevOps and BeyondJeff Sussna
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedAsh Maurya
 
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrDev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrJohn Allspaw
 

Viewers also liked (11)

Beyond Products
Beyond ProductsBeyond Products
Beyond Products
 
Beyond DevOps: User-Centered IT
Beyond DevOps: User-Centered ITBeyond DevOps: User-Centered IT
Beyond DevOps: User-Centered IT
 
Dev IS Ops
Dev IS OpsDev IS Ops
Dev IS Ops
 
Promising Digital Service Quality
Promising Digital Service QualityPromising Digital Service Quality
Promising Digital Service Quality
 
The Essence of DevOps
The Essence of DevOpsThe Essence of DevOps
The Essence of DevOps
 
A Manifesto for 21st-Century IT
A Manifesto for 21st-Century ITA Manifesto for 21st-Century IT
A Manifesto for 21st-Century IT
 
Better Service Through Promise Theory
Better Service Through Promise TheoryBetter Service Through Promise Theory
Better Service Through Promise Theory
 
Continuous Quality: What DevOps Means for QA
Continuous Quality: What DevOps Means for QAContinuous Quality: What DevOps Means for QA
Continuous Quality: What DevOps Means for QA
 
From Cybernetics to DevOps and Beyond
From Cybernetics to DevOps and BeyondFrom Cybernetics to DevOps and Beyond
From Cybernetics to DevOps and Beyond
 
Continuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons LearnedContinuous Deployment: Startup Lessons Learned
Continuous Deployment: Startup Lessons Learned
 
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and FlickrDev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
 

Similar to Software MTTR: Continuous Delivery Reduces Repair Time

How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CDRoger Turnau
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationPreetam Palwe
 
How to Deliver your Oracle EBS R12 Upgrade
How to Deliver your Oracle EBS R12 UpgradeHow to Deliver your Oracle EBS R12 Upgrade
How to Deliver your Oracle EBS R12 UpgradeOriginal Software
 
Agile driven development main principles
Agile driven development main principlesAgile driven development main principles
Agile driven development main principlesTanya Epstein
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsMohamed Samy
 
IBM i Application Lifecycle Management with Remain Software
IBM i Application Lifecycle Management with Remain SoftwareIBM i Application Lifecycle Management with Remain Software
IBM i Application Lifecycle Management with Remain SoftwareRemain Software
 
Maximizing UI Automation – A Case Study
Maximizing UI Automation – A Case StudyMaximizing UI Automation – A Case Study
Maximizing UI Automation – A Case StudyNoam Kfir
 
Dev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference MelbourneDev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference MelbourneMirco Hering
 
How to build successful blocks of DevOps
How to build successful blocks of DevOpsHow to build successful blocks of DevOps
How to build successful blocks of DevOpsCygnet Infotech
 
How to build successful blocks of DevOps
How to build successful blocks of DevOpsHow to build successful blocks of DevOps
How to build successful blocks of DevOpsCygnet Infotech
 
Digite Overview - IT Services
Digite Overview - IT ServicesDigite Overview - IT Services
Digite Overview - IT ServicesDigite, Inc.
 
Deloitte Software As A Service Deloitte Seminar
Deloitte Software As A Service   Deloitte SeminarDeloitte Software As A Service   Deloitte Seminar
Deloitte Software As A Service Deloitte SeminarTheo Slaats
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Developmentadrianmitev
 
Phoenix User Group Slides
Phoenix User Group SlidesPhoenix User Group Slides
Phoenix User Group Slidesagilebuddy
 
GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development PracticesLemi Orhan Ergin
 

Similar to Software MTTR: Continuous Delivery Reduces Repair Time (20)

Popular Pitfalls In Sdlc Phases 1
Popular Pitfalls In Sdlc Phases 1Popular Pitfalls In Sdlc Phases 1
Popular Pitfalls In Sdlc Phases 1
 
ATDD with SpecFlow
ATDD with SpecFlowATDD with SpecFlow
ATDD with SpecFlow
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
How to Deliver your Oracle EBS R12 Upgrade
How to Deliver your Oracle EBS R12 UpgradeHow to Deliver your Oracle EBS R12 Upgrade
How to Deliver your Oracle EBS R12 Upgrade
 
Agile driven development main principles
Agile driven development main principlesAgile driven development main principles
Agile driven development main principles
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
IBM i Application Lifecycle Management with Remain Software
IBM i Application Lifecycle Management with Remain SoftwareIBM i Application Lifecycle Management with Remain Software
IBM i Application Lifecycle Management with Remain Software
 
Future of QA
Future of QAFuture of QA
Future of QA
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
 
Maximizing UI Automation – A Case Study
Maximizing UI Automation – A Case StudyMaximizing UI Automation – A Case Study
Maximizing UI Automation – A Case Study
 
Dev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference MelbourneDev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference Melbourne
 
How to build successful blocks of DevOps
How to build successful blocks of DevOpsHow to build successful blocks of DevOps
How to build successful blocks of DevOps
 
How to build successful blocks of DevOps
How to build successful blocks of DevOpsHow to build successful blocks of DevOps
How to build successful blocks of DevOps
 
Digite Overview - IT Services
Digite Overview - IT ServicesDigite Overview - IT Services
Digite Overview - IT Services
 
Deloitte Software As A Service Deloitte Seminar
Deloitte Software As A Service   Deloitte SeminarDeloitte Software As A Service   Deloitte Seminar
Deloitte Software As A Service Deloitte Seminar
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Phoenix User Group Slides
Phoenix User Group SlidesPhoenix User Group Slides
Phoenix User Group Slides
 
GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development Practices
 
DevOps: Age Of CI/CD
DevOps: Age Of CI/CDDevOps: Age Of CI/CD
DevOps: Age Of CI/CD
 

Software MTTR: Continuous Delivery Reduces Repair Time

  • 1. + Software MTTR: the Path from Continuous Integration to Continuous Delivery Jeff Sussna, Ingineering.IT
  • 2. Software Mean Time to Repair Bug-Hours: MTTR for software Enhancement requests are bug reports  Gap between actual and desired value  All software development is “repair” Continuous Delivery = Continuous Repair = Minimize MTTR Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 3. Change is Good/Change is Bad Change is good: how we deliver value Change is bad: introduces uncertainty and often failure Continuous Delivery answers its own question  Reduces uncertainty  Increases rate of value delivery Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 4. Continuous Delivery is Lean Small batch sizes Just-in-time production Andon cord Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 5. Batch Size Batch size: unit of work passing between process stages Small batch sizes:  Reduce complexity and risk  Increase efficiency  Lower overhead  Reduce cycle time  Speed up feedback loops Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 6. Just-in-time Production Only make what’s needed, when and how it’s needed Avoid wasteful inventory Applies to:  Features  Designs  Code  Tests  Infrastructure Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 7. Andon Cord Any worker can stop the production line Treat the next step in the pipeline as your customer Improve quality and efficiency by fixing defects now not later Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 8. Agile is Lean Batch size: one year => one month JIT production: groom the backlog each iteration Andon cord: continuous integration Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 9. Sources of Software Failures Unit errors  Requirements misunderstanding  Logic errors  Design errors Integration errors  Hard due to inherent complexity  Delayed/batched due to fear Irony: large integration batch sizes increase level of difficulty Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 10. Continuous Integration Check into trunk often Build on every commit Test on every build Notify on every error Fix every broken build Necessitates build/deploy/test/report automation Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 11. Value of Continuous Integration Reduces integration batch size and latency Enables Andon cord Pulls QA into development Removes waste/variation from manual build/deploy/test/report Minimizes “merge-hell” due to long-lived branches Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 12. Redefining “Done” Agile says nothing about getting product in customer’s hands Software product era: cost of delivery is high for all  Vendor: burn and mail CD  Customer: upgrade to new version Cloud changes the development/delivery equation  Customer’s delivery cost shrinks  Development org IS the delivery org Done: “the customer has the change and is satisfied with it”  Kind of like any other service industry Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 13. Continuous Delivery Finishes what Continuous Integration starts Minimizes friction in the flow from integration to satisfaction Forces end-to-end batch size reduction Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 14. Doing Continuous Delivery Small batch sizes all the way to prod Automation all the way to prod Decoupled technical and non-technical deployment  Deployed in prod != visible to customer Shift your focus from iterations to changes  Think in terms of bug-hours Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 15. Small Batch Sizes Don’t batch testing ‘til the end of the iteration Pipeline testing stages  Acceptance  Security  Performance/Scalability/Fault-tolerance  UAT  Fail as far upfront as possible Don’t batch release‘til the end of iteration  Hotfixes go away! Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 16. Automation Human gates are OK  When/why to move forward Manual labor is not OK  Acceptance testing  Non-functional testing  Deployment throughout the pipeline Deal in atomic releases  DB + Code + Infrastructure  Deployment + rollback Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 17. Decoupled Deployment Techniques:  Feature toggles  Feature branches  Application componentization Business-defined release: the ultimate goal  Canary  A-B  Demographic/Geographical Multi-tenancy for code Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 18. Code Multi-Tenancy as Strategy Empower the business: release at 12:01 Christmas morning Free the developers: don’t deploy at 12:01 Christmas morning 1st-class “non-functional” requirement  Job is to deliver service  Biz ops needs control over features as part of customer interaction  Should be fundamental part of application architecture  Test it! Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 19. Continuous Delivery Discipline Don’t check it in if you don’t want it to go to prod  Check-in is the middle of the delivery lifecycle, not the beginning Don’t write code you don’t want to go to prod Don’t assume technical release equals business release Strive for release boredom Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 20. Boring Releases Just like integration we avoid release because it’s scary Do scary things more, not less often  Practice makes perfect  Find ways to make it less scary Making it easy to back out makes it less scary Holy grail: prod releases are boring Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 21. The Importance of Integrated Quality Continuously delivering lousy software is not getting to done QA must be deeply embedded to avoid friction Deep QA integration can make things faster AND better Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 22. Quality Integration Techniques Testing as software engineering (SET) Testing pyramid Test the service not just the software  In XaaS’the ‘S’ stands for ‘service’ not ‘software’ Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 23. Software Engineer in Test Approach test development as software engineering  Object-oriented design  TDD  Performance, maintainability, extensibility  Use productivity enablers (Groovy, Spock, Geb…) Do test design spikes, not just code design spikes Be the advocate for the new definition of done Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 24. The Testing Pyramid Automated tests’ value depends on how often/fast they can run  System tests: few  Acceptance tests: some  Integration tests: many  Unit tests: lots The pyramid spans traditional dev/test boundaries  Developers need to think about testing  Testers mind developers’ business at the lower pyramid levels  Test design spikes should involve everyone Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 25. Test the Service not the Software The delivery pipeline is part of the service, so test it  Inefficiencies are bugs too What about “non-functional” requirements?  Performance, resiliency, DB, InfoSec  Incorporate them into upfront processes  Test them using a deployment pipeline Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 26. The Importance of Configuration Automation Beware the sandbox  Variation creates waste and errors  Manual developer configuration has opportunity cost Configuration automation is a solved problem  Environments: cloud, Vagrant  Automation: Puppet, Chef, CFEngine  Deployment: Jenkins, Capistrano, Liquibase, flyway Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 27. Keys to Configuration Automation Do everything to all the things  Code, database, system, infrastructure  Version control  Packaging Be able to go from any Point A to and Point B  Including when A = nothing Testers: don’t be codependent with developers  Remember, you’re minding their business  Remember, waste/variation degrades service quality Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 28. Solving the Change Conundrum Smaller changes are easier Automated processes are less error-prone More frequent changes require practice => perfection Change is no longer the enemy Change is your business Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 29. Getting from Here to There Don’t do “continuous delivery”, do “more continuous delivery”  CD holy grail requires tremendous tool and process maturity  Start with something small and simple  Apply Kaizen Question assumptions  Especially about anything that feels “clumsy” or “we have to because…” Slow down to go faster  Find opportunities to reduce batch size  Think in terms of one-piece flow/new definition of “done” Find ways to move quality inward and forward Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.
  • 30. Software MTTR Repeat after me: our job is to deliver service, not software  Continual value repair is part of the service  MTTR is a (the?) key metric If you grok the logic of CD, the tools/process will flow  If not, they either frustrate or else represent ‘cargo cult’ Copyright © 2012 Ingineering.IT, LLC. All Rights Reserved.