continuous delivery maturity model
DESCRIPTION
How do measure our progress in a journey towards continuous integration? What are other people doing? This presentation provides an measuring stick for CD Maturity and simple pattern for reviewing your current situation and deciding what to work on next.TRANSCRIPT
Continuous Delivery Maturity Model
UrbanCode Inc. ©2013
Who is that guy?
Techie at UrbanCode (now IBM)
Working on CI & CD tools for the last 10 years.
UrbanCode Inc. ©2013
IMVU’s Extreme CD: 1 App to Prod, 50 times / day
Build
Run thousands of tests
Deploy to some servers
Monitor
Deploy to remaining servers
UrbanCode Inc. ©2013
Mature or crazy?
UrbanCode Inc. ©2013
Why a maturity model?
Howawesomeismyteam?
Winning!
UrbanCode Inc. ©2013
Why a maturity model?
Where are we now? What are other people doing? Where do we want to be? How do we get there?
The future is here. It’s just not evenly distributed yet.” William Gibson
UrbanCode Inc. ©2013
The Model
UrbanCode Inc. ©2013
Credit Where Due
UrbanCode Inc. ©2013
5 Levels
Base
Beginner
Intermediate
Advanced
Extreme
UrbanCode Inc. ©2013
Four categories, held together with culture
Cultu
reCommunicateMeasureDeployBuild
UrbanCode Inc. ©2013
Build
UrbanCode Inc. ©2013
Dependencies are the hard part
UrbanCode Inc. ©2013
Deploying
UrbanCode Inc. ©2013
Big question: how do we coordinate components? Build Pipeline Tool
Pressure development to adapt to this model
CI tool + Application Deployment Automation Tool Add a tool that pulls from the various build systems
UrbanCode Inc. ©2013
When is each approach appropriate?
Pipeline Simple apps Low coupling between
components / services Tests validate ONE version
of ONE thing Shared tool ownership ok
Build + ADA More complex applications Higher coupling between
components / services Tests validate that the larger
system is working Dev wants to own build,
Ops wants to own deploy
UrbanCode Inc. ©2013
Most people fall into the Build + ADA pattern
Pipeline here
UrbanCode Inc. ©2013
Measure & Test
UrbanCode Inc. ©2013
UrbanCode Inc. ©2013
Communication & Reports
UrbanCode Inc. ©2013
There are inter-dependencies
UrbanCode Inc. ©2013
Standard Target
Based on this model, the standard target is: Continuous builds on a distributed grid using
dependency management Auto-deploy to the first environment Extensive testing of multiple types Test results and trends are widely visible Self-service deployments to other environments
Production style deployments everywhere
Deployments coordinate tiers/services as appropriate
UrbanCode Inc. ©2013
We’re not all the same
UrbanCode Inc. ©2013
Applying the Model
UrbanCode Inc. ©2013
Basic Plan
Audit where you are Understand the pain points & bottlenecks Agree on where you want to be Prioritize
UrbanCode Inc. ©2013
Example Persona: El Emeno Investments Securities trading is a key profit center Fast updates desired
Exploit transient opportunities Strict legal requirements & audits
Audit RulesDelivery TeamBusiness
Faster!
Slow down, be careful!
UrbanCode Inc. ©2013
Make it safe to go fast
UrbanCode Inc. ©2013
Audit for El Emeno
Build Continuous integration (each team has own tool)
UrbanCode Inc. ©2013
Audit for El Emeno
Build Continuous integration (each team has own tool)
Deployment Some scripts, mostly manual Hand-offs by email Coordination of components based on dev oral history
UrbanCode Inc. ©2013
Audit for El Emeno
Build Continuous integration (each team has own tool)
Deployment Some scripts, mostly manual Hand-offs by email Coordination of components based on dev oral history
Measure & Test 20% unit test coverage Almost no functional tests Security scanning tool run manually
UrbanCode Inc. ©2013
Audit for El Emeno
Build Continuous integration (each team has own tool)
Deployment Some scripts, mostly manual Hand-offs by email Coordination of components based on dev oral history
Measure & Test 20% unit test coverage Almost no functional tests Security scanning tool run manually
Communicate Silo’d and emailed with hand-off requests
UrbanCode Inc. ©2013
Bottlenecks for El Emeno
• Manual regression tests are too slow
• Never allocated enough time• Environment outages problematic
Measure
• Manual / semi-scripted deployments are slow
• Cost of compliance is high• Errors in deployment are risky
Deployment
UrbanCode Inc. ©2013
Bottlenecks for El Emeno
• Mostly okBuild
• Need easy audit trail for approvals and deployments
• Shared reporting a“nice-to-have”
Communicate
UrbanCode Inc. ©2013
Desired state
Today
Build Continuous integration (each team has
own tool) Deployment
Some scripts, mostly manual Hand-offs by email Coordination of components based on
dev oral history Measure / Test
20% unit test coverage Almost no functional tests Security scanning tool used& run
manually Communicate
Silo’d and emailed with hand-off requests
Future
Build Good artifact management key
Deployment Consistent self-service deploys in all
environments Integrated with approvals & good
audit trails Coordinate tiers & services
Measure / Test Need regression testing of core
functionality Security scanning should happen
automatically Communicate
Produce test, security scan, and approval logs for releases
UrbanCode Inc. ©2013
Scoring current vs future
Build Deploy Testing Reporting0
1
2
3
4
5
CurrentFuture
Base
Beginner
Intermediate
Advanced
Extreme
UrbanCode Inc. ©2013
Prioritization: observations
Deploy & Test are biggest weaknesses Development responsiveness is a strength
Testers are spending time de-bugging bad deployments
UrbanCode Inc. ©2013
Prioritize: Plan of attack for El Emeno1 Get deployments decent.
Ensure we have an artifact repo for builds
2 Invest Dev & QA time savings into regression tests
3 Re-evaluate in 6-12 months
UrbanCode Inc. ©2013
A simple maturity model
Urbancode.com/resources
UrbanCode Inc. ©2013
What are you doing Monday?
Download the Maturity Model and talk your team
Are we where we need to be?
UrbanCode Inc. ©2013
What are you doing in two months?
Implementing updates to your Continuous Delivery capabilities
Thank you!
@EricMinickUrbancode.com/resources/