DevOps for Speed and Agility
software delivery for fun and profit
Steve Pereira
• DevOps / Delivery consultant in Toronto
• <3 startups, feel the pain of enterprise
• stevepereira.ca
To suffer the penalty of too much
haste, which is too little speed.
- Plato
not
Quality > Speed
The catch:
The name of the game is to maximize quality and allow confidence and
trust to improve speed.
Here’s how you get both:
• Communication
• Visibility
• Measurement
• Analysis
• Empowerment
• Change
• Focus
• Automation
The Ingredients:
• Hypothesize
• Measure
• Validate
• Empower
• Iterate
• Share
• Automate
• Celebrate
The recipe:
Communicate
• Talk about delivery, issues and improvement
• Sell ideas, everyone who buys in is a stakeholder and a customer
• Talk to product teams about the cost of technical debt
• backlog, bugs, lack of documentation
• Chat - nothing beats realtime
• Standup rooms, team rooms, team standup rooms
• History/async helps - it’s self-documenting and remote-friendly
• Regular pairing, code review
Show and Tell
• Visibility for simpler and more passive communication
• Reduce communication time
• Reduce decision time
• Reduce investigation time
• Start with Post-its/Whiteboard, iterate
• Notifications where necessary - alerts vs checking
• Correlate data to create meaning
Measure
• Discover limiting constraints (bottlenecks), friction, lag, waste
• Start with the basics: How long from dev to prod?
• Bugs per release / LOC per release / cyclomatic complexity
• Onboarding a dev takes a week
• Adding a server takes 3 weeks
• 5 days to start a new project
• Measure by hand if you have to at first
• Find a baseline to progress from
Minimize Constraints
• Remove or minimize bottlenecks once discovered
• Hypothesize and validate
• Documentation / Tools / Automation
• Data and power in the hands of whoever needs it
• Ask data questions of data, not people
• People are often a constraint
• Empower people - Build Trust
• Everyone's job is enabling the business
Practice Change
• Make change minimal and frequent
• Variables vs hard code
• Separate code and config
• Break the monolith down
• Avoid batch changes, study your use case
• Practice deployments / code review / retrospectives
• Fire drills!: Staff member leaves / datacentre down
Focus
• Remove disruption to allow for engagement
• Clean alerts / Define severity / Scrutinize every escalation / Parse logs
• Don't just backlog, icebox - if it’s important you won’t forget about it
• Define roles - proper governance allows for action - rotate occasionally
• Let your talent work - provide empowerment and time
• Standups are important, but try doing them through async chat
• Measure a need and hire help or dedicate resources
Automate
• Do you really need manual QA?
• Analyze holistically, improve incrementally
• Focus on the pipeline
• Promoted builds
• Config management
• Never touch prod
• Notifications
Celebrate!
• Build on your momentum and progress by reflection and
sharing
• Improvement is awesome! Faster iteration means more to
celebrate
• Failure hurts less the more you do it and the less it costs
• Share with the entire organization, wins help everyone
• Give kudos to your champions, testers and early adopters -
they’re your best customers
The Advanced Class
• Tools can help once you’re off to the races
• Jenkins + plugins is a powerhouse:
• Build metrics - stats on all builds
• Plot - graph progress
• Join - breakup jobs and aggregate results
• SLOCCount - LOC counts
• Violations - static analysis
• HTML publisher - show it all off
Speed provides the one
genuinely modern pleasure.
- Aldous Huxley
Start now
• Pick a small, greenfield project
• Fail like a pro
• Write about it
• Share
• Revise your baseline and repeat
Questions?
Sites:
codeascraft.com
martinfowler.com
kitchensoap.com
planetdevops.net
monitorama.com
devopsdays.org
Netflix/Twitter/Linkedin Eng
Books:
Continuous Delivery
Release It!
Building a DevOps Culture
Driving Technical Change
The Mythical Man Month
The Phoenix Project
Team Geek
@steveElsewhere

DevOps for Speed and Agility - DevOpsTO May 2014

  • 1.
    DevOps for Speedand Agility software delivery for fun and profit
  • 2.
    Steve Pereira • DevOps/ Delivery consultant in Toronto • <3 startups, feel the pain of enterprise • stevepereira.ca
  • 3.
    To suffer thepenalty of too much haste, which is too little speed. - Plato not
  • 4.
    Quality > Speed Thecatch: The name of the game is to maximize quality and allow confidence and trust to improve speed. Here’s how you get both:
  • 5.
    • Communication • Visibility •Measurement • Analysis • Empowerment • Change • Focus • Automation The Ingredients:
  • 6.
    • Hypothesize • Measure •Validate • Empower • Iterate • Share • Automate • Celebrate The recipe:
  • 7.
    Communicate • Talk aboutdelivery, issues and improvement • Sell ideas, everyone who buys in is a stakeholder and a customer • Talk to product teams about the cost of technical debt • backlog, bugs, lack of documentation • Chat - nothing beats realtime • Standup rooms, team rooms, team standup rooms • History/async helps - it’s self-documenting and remote-friendly • Regular pairing, code review
  • 8.
    Show and Tell •Visibility for simpler and more passive communication • Reduce communication time • Reduce decision time • Reduce investigation time • Start with Post-its/Whiteboard, iterate • Notifications where necessary - alerts vs checking • Correlate data to create meaning
  • 9.
    Measure • Discover limitingconstraints (bottlenecks), friction, lag, waste • Start with the basics: How long from dev to prod? • Bugs per release / LOC per release / cyclomatic complexity • Onboarding a dev takes a week • Adding a server takes 3 weeks • 5 days to start a new project • Measure by hand if you have to at first • Find a baseline to progress from
  • 10.
    Minimize Constraints • Removeor minimize bottlenecks once discovered • Hypothesize and validate • Documentation / Tools / Automation • Data and power in the hands of whoever needs it • Ask data questions of data, not people • People are often a constraint • Empower people - Build Trust • Everyone's job is enabling the business
  • 11.
    Practice Change • Makechange minimal and frequent • Variables vs hard code • Separate code and config • Break the monolith down • Avoid batch changes, study your use case • Practice deployments / code review / retrospectives • Fire drills!: Staff member leaves / datacentre down
  • 12.
    Focus • Remove disruptionto allow for engagement • Clean alerts / Define severity / Scrutinize every escalation / Parse logs • Don't just backlog, icebox - if it’s important you won’t forget about it • Define roles - proper governance allows for action - rotate occasionally • Let your talent work - provide empowerment and time • Standups are important, but try doing them through async chat • Measure a need and hire help or dedicate resources
  • 13.
    Automate • Do youreally need manual QA? • Analyze holistically, improve incrementally • Focus on the pipeline • Promoted builds • Config management • Never touch prod • Notifications
  • 14.
    Celebrate! • Build onyour momentum and progress by reflection and sharing • Improvement is awesome! Faster iteration means more to celebrate • Failure hurts less the more you do it and the less it costs • Share with the entire organization, wins help everyone • Give kudos to your champions, testers and early adopters - they’re your best customers
  • 15.
    The Advanced Class •Tools can help once you’re off to the races • Jenkins + plugins is a powerhouse: • Build metrics - stats on all builds • Plot - graph progress • Join - breakup jobs and aggregate results • SLOCCount - LOC counts • Violations - static analysis • HTML publisher - show it all off
  • 16.
    Speed provides theone genuinely modern pleasure. - Aldous Huxley
  • 17.
    Start now • Picka small, greenfield project • Fail like a pro • Write about it • Share • Revise your baseline and repeat
  • 18.
    Questions? Sites: codeascraft.com martinfowler.com kitchensoap.com planetdevops.net monitorama.com devopsdays.org Netflix/Twitter/Linkedin Eng Books: Continuous Delivery ReleaseIt! Building a DevOps Culture Driving Technical Change The Mythical Man Month The Phoenix Project Team Geek @steveElsewhere

Editor's Notes

  • #2 Improve visibility Measure state Minimize constraints Improve collaboration Enable action Practice change Automate Focus
  • #4 The groundwork for going fast Nothing can be fast without being properly engineered Starts with a commitment to quality Incremental improvement
  • #5 Quality over speed The name of the game is to maximize quality and allow confidence and trust to improve speed
  • #6 Communication Visibility Measurement Analysis Empowerment Change Automation Focus
  • #7 Hypothesize Measure Validate Empower Iterate Share Automate Profit
  • #8 Objective: Share an understanding or vision - the idea that things can go faster Talk about delivery Make it known it’s a concern of yours Find out who’s interested Find allys Once you get traction, you’ll have to deal with improving communication and communicating issues - next section Technical debt: - 20% new features - 80% existing features You will need feedback and buy in
  • #9 Objective: Visibility for simpler and more passive communication reduce communication time reduce decision time reduce investigation time dashing / geckoboard / new relic / kibana / sentry / airbrake jenkins radiator / dashboard / project statistics Correlate - deploys with server performance and user experience Push vs pull - zapier / deadmanssnitch
  • #10 Objective: Discover limiting constraints, lag, waste Start with the basics: Change lead time Bugs per release / LOC per release / cyclomatic complexity Find friction/bottlenecks/constraints Scalability, ease of onboarding, context switching Adding a server takes 3 weeks Onboarding a new dev takes a week Switching projects takes a day Stopwatch, time command, subtracting timestamps People are often a constraint
  • #14 Objective: repeatability and consistency are key to improvement selenium / browserstack browsershots / wraith jenkins / circle / travis
  • #15 Objective: Build on momentum and progress by reflection and sharing
  • #16 Jenkins plugins
  • #17 The groundwork for going fast Nothing can be fast without being properly engineered Starts with a commitment to quality and trust Incremental improvement