@paul_boocock paulboocock@codeweavers.net
Continuously Delivering Software
to Big Brands
Step 1.
Introduce myself!
Step 2.
Talk about the fundamentals
Step 3.
How do we do it at Codeweavers?
Continuously Delivering Software to Big Brands
• Some Northern fella…
Academy Leader
Who am I?
Delivering software to a production environment is often
one of the most riskiest and stressful parts of the software
lifecycle.
Delivering Software
How can we:
• Reduce Risk?
• Eliminate Tedious Work?
• Increase Confidence?
For many organisations,
releasing software is:
• Manually Intensive
• Error Prone
• Risky
Big Brands
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within Six Months?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within Three Months?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within One Month?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within One Week?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within One Day?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within One Hour?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within 30 Minutes?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
Within 15 Minutes?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
How Low?!?
Question
How long would it take your business to safely deploy a
change that involves one line of code to the production
environment?
This is known as your Cycle Time
Question
Lowering Cycle Time is something to strive for
Can be achieved through automation
Creating a reliable, predictable, visible and largely automated
process with well understood risks.
Cycle Time
Technologies
The foundation of what we will talk about today
Vital to have a solid CI environment before moving
onto continuous delivery
Continuous Integration
Source Control
Commit Frequently
Automatic Builds
Automated Tests
Staging Environment
Continuous Integration
Build Fast
Build Every Commit
Make it visible
Source Control
Commit Frequently
Automatic Builds
Automated Tests
Staging Environment
Continuous Integration
Build Fast
Build Every Commit
Make it visible
Unable to commit when build is broken
Run all tests before committing
Never go home on a broken build
Be ready to revert
Don’t comment out failing tests
Take responsibility
The Essentials
CI Build Process
Total Build Time: ~4 Minutes
The build and tests should be fast – go parallel if possible
Test coverage should be high – aim for 75%+
If it breaks we cannot continue
Prevents defects getting to production
Early Feedback
Every commit should be safe enough to be deployed to
production
Usually leads to better code quality and maintainability
Can use feature toggles if required but try to avoid
Every commit can be released
Manual Deployment
Has to be manually tested to ensure everything works
Leads to tense release day
Prone to human error
Take hours assuming everything goes well
Deployment
The alternative…
Automate your deploys
Only human element is to pick the environment and press deploy
Will lead to a repeatable and reliable deployment process
No reliance on the deploy expert at work
Deployment
Isn’t just the way we deploy, it’s essential to our business
• Commit and build
• Deploy to staging environment
• Deploy to live
Continuous Delivery
Every commit should be deployable
So deploy them!
Get early feedback on feature from clients
Ensure any issues can be found earlier
Deploy Frequently
Day Commits
Staging
Deploy
Production
Deploy
Friday 72 181 14
Thursday 126 115 23
Wednesday 134 86 25
Tuesday 94 37 11
Monday 131 62 27
Deliverables are not done until they are at least in
production
Kanban board reflects this
Only done when delivering value to the customer
Done when released
Ensure that everybody is involved in deploying their code
Take ownership of your own work
Fail early / feedback fast so you can fix it quickly
No one person responsible for deployment
Remove the barriers in your teams
Everybody is responsible
So with all these features in place, how does it all stitch
together?
Developer Journey – From Story to Live
Move on to next MMF
(Minimum Marketable Feature)
Developer Journey – From Story to Live
Write some code!
Developer Journey – From Story to Live
Commit Frequently
Developer Journey – From Story to Live
Monitor the build on CI (~4 Minutes)
CruiseControl.NET & Nant scripts automate this
Developer Journey – From Story to Live
If successful deploy to staging (~2 Minutes)
Developer Journey – From Story to Live
If successful deploy to production (~4 Minutes)
Developer Journey – From Story to Live
And we’re live!
If everything goes
smoothly, from
commit to production in
15 minutes
Developer Journey – From Story to Live
Keep things visible
Keep things visible
Started tracking Cycle Time in 2016 to see how long it takes a
code change to go live
Currently averages at 7.32 hours from commit to live
Cycle Time
What does it give us?
Iterate & deliver quickly
Reduces bottlenecks in the delivery pipeline
Increases visibility
Work Sustainably
Continuous Delivery helps towards working with
Sustainable Pace
Sustainable Pace
What does it give us?
Iterate & delivery quickly
Reduce bottlenecks
Increases visibility
Work Sustainably
And occasionally…
Break things (but we can fix them quickly!)
What do our clients get from it?
Continuous Delivery
Jez Humble & David Farley
ISBN13: 978-0-321-60191-9
The Bible

Continuously delivering software to big brands (fullscreen edition)

  • 1.
  • 2.
    Step 1. Introduce myself! Step2. Talk about the fundamentals Step 3. How do we do it at Codeweavers? Continuously Delivering Software to Big Brands
  • 3.
    • Some Northernfella… Academy Leader Who am I?
  • 4.
    Delivering software toa production environment is often one of the most riskiest and stressful parts of the software lifecycle. Delivering Software How can we: • Reduce Risk? • Eliminate Tedious Work? • Increase Confidence? For many organisations, releasing software is: • Manually Intensive • Error Prone • Risky
  • 5.
  • 6.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within Six Months? Question
  • 7.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within Three Months? Question
  • 8.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within One Month? Question
  • 9.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within One Week? Question
  • 10.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within One Day? Question
  • 11.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within One Hour? Question
  • 12.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within 30 Minutes? Question
  • 13.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? Within 15 Minutes? Question
  • 14.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? How Low?!? Question
  • 15.
    How long wouldit take your business to safely deploy a change that involves one line of code to the production environment? This is known as your Cycle Time Question
  • 16.
    Lowering Cycle Timeis something to strive for Can be achieved through automation Creating a reliable, predictable, visible and largely automated process with well understood risks. Cycle Time
  • 17.
  • 18.
    The foundation ofwhat we will talk about today Vital to have a solid CI environment before moving onto continuous delivery Continuous Integration
  • 19.
    Source Control Commit Frequently AutomaticBuilds Automated Tests Staging Environment Continuous Integration Build Fast Build Every Commit Make it visible
  • 22.
    Source Control Commit Frequently AutomaticBuilds Automated Tests Staging Environment Continuous Integration Build Fast Build Every Commit Make it visible
  • 23.
    Unable to commitwhen build is broken Run all tests before committing Never go home on a broken build Be ready to revert Don’t comment out failing tests Take responsibility The Essentials
  • 24.
    CI Build Process TotalBuild Time: ~4 Minutes
  • 25.
    The build andtests should be fast – go parallel if possible Test coverage should be high – aim for 75%+ If it breaks we cannot continue Prevents defects getting to production Early Feedback
  • 26.
    Every commit shouldbe safe enough to be deployed to production Usually leads to better code quality and maintainability Can use feature toggles if required but try to avoid Every commit can be released
  • 27.
    Manual Deployment Has tobe manually tested to ensure everything works Leads to tense release day Prone to human error Take hours assuming everything goes well Deployment
  • 28.
    The alternative… Automate yourdeploys Only human element is to pick the environment and press deploy Will lead to a repeatable and reliable deployment process No reliance on the deploy expert at work Deployment
  • 29.
    Isn’t just theway we deploy, it’s essential to our business • Commit and build • Deploy to staging environment • Deploy to live Continuous Delivery
  • 30.
    Every commit shouldbe deployable So deploy them! Get early feedback on feature from clients Ensure any issues can be found earlier Deploy Frequently Day Commits Staging Deploy Production Deploy Friday 72 181 14 Thursday 126 115 23 Wednesday 134 86 25 Tuesday 94 37 11 Monday 131 62 27
  • 31.
    Deliverables are notdone until they are at least in production Kanban board reflects this Only done when delivering value to the customer Done when released
  • 32.
    Ensure that everybodyis involved in deploying their code Take ownership of your own work Fail early / feedback fast so you can fix it quickly No one person responsible for deployment Remove the barriers in your teams Everybody is responsible
  • 33.
    So with allthese features in place, how does it all stitch together? Developer Journey – From Story to Live
  • 34.
    Move on tonext MMF (Minimum Marketable Feature) Developer Journey – From Story to Live
  • 35.
    Write some code! DeveloperJourney – From Story to Live
  • 36.
  • 37.
    Monitor the buildon CI (~4 Minutes) CruiseControl.NET & Nant scripts automate this Developer Journey – From Story to Live
  • 38.
    If successful deployto staging (~2 Minutes) Developer Journey – From Story to Live
  • 39.
    If successful deployto production (~4 Minutes) Developer Journey – From Story to Live
  • 40.
    And we’re live! Ifeverything goes smoothly, from commit to production in 15 minutes Developer Journey – From Story to Live
  • 41.
  • 42.
  • 43.
    Started tracking CycleTime in 2016 to see how long it takes a code change to go live Currently averages at 7.32 hours from commit to live Cycle Time
  • 44.
    What does itgive us? Iterate & deliver quickly Reduces bottlenecks in the delivery pipeline Increases visibility Work Sustainably
  • 45.
    Continuous Delivery helpstowards working with Sustainable Pace Sustainable Pace
  • 46.
    What does itgive us? Iterate & delivery quickly Reduce bottlenecks Increases visibility Work Sustainably And occasionally… Break things (but we can fix them quickly!)
  • 47.
    What do ourclients get from it?
  • 48.
    Continuous Delivery Jez Humble& David Farley ISBN13: 978-0-321-60191-9 The Bible