Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuous Deployment Through Technical Excellence

307 views

Published on

Customers now expect continuous delivery of features, making them more awesome every day. Cloud computing and modern tools help, but that's not enough. We need to improve our human interactions and day-to-day work. Learn how to help your business, management, and teams see the importance of technical improvement. Understand how your team can achieve Continuous Delivery through constant attention to technical excellence.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Continuous Deployment Through Technical Excellence

  1. 1. Continuous Deployment Declan Whelan Shawn Button through technical excellence
  2. 2. Continuous Deployment Declan Whelan Shawn Button through technical excellence
  3. 3. Who We Are Declan Whelan and Shawn Button are developers and technical coaches. Find us at www.leanintuit.com
  4. 4. Agenda • What Continuous Deployment feels like. • What is necessary for CD. • What we often see as the missing pieces. • Aiming for CD. • Steps to CD success.
  5. 5. What Is Continuous Delivery “Continuous delivery is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time.” - Wikipedia
  6. 6. What Is Continuous Deployment “Continuous deployment is continuous delivery plus the code always goes to production.” - Us
  7. 7. Make Continuous Deployment Your Goal If there’s one thing to take from this today, we hope it be this: Make Continuous Deployment your goal.
 Every time you are faced with a decision ask yourselves: “Will this take us closer to Continuous Deployment?”
  8. 8. What is required for Continuous Deployment? Version Control Build/Deploy Pipelines Infrastructure as Code Frequent, safe code updates Separation of rollout and activation Good Observability
  9. 9. What is required for Continuous Deployment? Version Control Build/Deploy Pipelines Infrastructure as Code Frequent, safe code updates Separation of rollout and activation Good Observability A Lot of DevOps Initiatives Focus on These
  10. 10. What is required for Continuous Deployment? Version Control Build/Deploy Pipelines Infrastructure as Code Frequent, safe code updates Separation of rollout and activation Good Observability A Lot of DevOps Initiatives Focus on These This is Ignored
  11. 11. “A Tool Will Solve Our Problem” - Developers, Always
  12. 12. Frequent, Safe, Small Code Updates Requires changes to how we: " Test " Code " Organize ourselves " Plan and execute " Learn
  13. 13. Continuous Deployment monitor operate activate rollout build commit integration test unit test code plan dev ops
  14. 14. Let’s focus on the “dev” loop build end to end test integration test unit test code plan dev
  15. 15. Shift quality left Move quality checks upstream build end to end test integration test unit test codeplan
  16. 16. Planning: 3 amigos story writing Product owner / BA Developer Tester hmmm … 
 what edge cases
 might there be? hmmm … 
 how I simplify this? hmmm … 
 how can I make
 my customers
 more awesome?
  17. 17. Story writing is a team effort From User Story Mapping, by Jeff Patton (O’Reilly, 2014)
  18. 18. Smaller stories, limiting WIP https://leankit.com//uploads/images/general/_large/WIPLimitsCauses.jpg
  19. 19. Code Quality We see a lot of code from a lot of different contexts. We consider most of the code we see to be of insufficient quality to be safe in continuous deployment. It might have been fine when we were releasing bi-monthly. We had long manual integration and testing cycles. Not now. What do we need? A Tool!
  20. 20. Code Quality
  21. 21. Code Quality You need a broad-based approach to improving code quality: " Don’t trade quality for short-term delivery speed. " Pair and mob " Adopt Test-Driven Development " Make time for refactoring, and re-design " Foster team code standards and conventions " Establish enterprise code standards " Hold technical training and bring in technical coaches (shameless plug) " Run coding/testing book/video clubs " Hold hack-a-thons " Foster diversity " Do regular root-cause analysis of failures and bugs " Use linters and static code analysis tools " …
  22. 22. From https://nvie.com/posts/a-successful-git-branching-model/ Branches Complicated branching shenanigans slow you down, without improving safety. Developers always push to Master. Which always goes into production.
  23. 23. From https://www.semanticscholar.org/paper/Reviewer-recommendation-for-pull-requests-in-What-Yu-Wang/9b4df30d4019ad196ca0d5c34b8ef6ae5e5fc7ca Code Reviews
  24. 24. Code Reviews
  25. 25. Code Reviews Code reviews do improve safety, but slow you down. " Developers can mob or pair instead: " Problems are found and fixed immediately. " Learning is vastly increased. Team members help each other improve. " The team develops a shared code style. " etc. " (If you can’t mob or pair yet, please STILL DO CODE REVIEWS)
  26. 26. Mobbing
  27. 27. Impediments to CD " existing technical debt
 " ineffective development practices
 " hand-offs
 " schedule pressure
  28. 28. Key Metrics In the book Accelerate by Forsgren, et al., they describe four key software delivery metrics: " Lead time for changes " Time from check-in to production
 " Deployment frequency " How often code is deployed to production
 " Time to restore service " Mean time to recover from failure (MTTR)
 " Change failure rate " How often changes require a fix or rollback
  29. 29. Step to CD success " metrics: we suggest starting with deployment frequency
 " empathy: focus on areas where team has passion or pain
 " learning: while doing work and focused learning sessions " have team identify and remove impediments " start with managers or Scrum Masters helping " over time teams own this
 " small experiments: reflect and adjust " keep asking “..will this take us closer to Continuous Deployment? ”
  30. 30. Improve Incrementally “If an organization currently delivers to production every 6 months, it is sadistic to expect them to release in 2 weeks” - paraphrased from Mary Poppendieck
  31. 31. Improve Incrementally - Experiments
  32. 32. Keep asking … “Will this take us closer to Continuous Deployment? ”
  33. 33. Continuous Deployment Declan Whelan Shawn Button through technical excellence

×