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