The document discusses continuous delivery of software to production environments. It describes setting up a continuous integration pipeline with automated builds, tests, and deployments to staging and production environments. This allows code changes to be deployed safely within minutes or hours, as opposed to months. Key aspects discussed are committing code frequently, ensuring every commit is deployable through automated testing and integration, and making the delivery process reliable, predictable and automated. The goal is to lower the cycle time from code change to production release.
2. 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
4. 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
6. 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
7. 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
8. 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
9. 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
10. 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
11. 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
12. 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
13. 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
14. 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
15. 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
16. 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
23. 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
25. 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
26. 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
27. 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
28. 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
29. 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
30. 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
31. 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
32. 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
33. So with all these features in place, how does it all stitch
together?
Developer Journey – From Story to Live
34. Move on to next MMF
(Minimum Marketable Feature)
Developer Journey – From Story to Live
43. 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
44. What does it give us?
Iterate & deliver quickly
Reduces bottlenecks in the delivery pipeline
Increases visibility
Work Sustainably
46. What does it give us?
Iterate & delivery quickly
Reduce bottlenecks
Increases visibility
Work Sustainably
And occasionally…
Break things (but we can fix them quickly!)