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.

Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

115 views

Published on

DevOpsDays Tel Aviv 2017

Published in: Technology
  • Be the first to comment

Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

  1. 1. Design Patterns for Efficient DevOps Processes
  2. 2. Tweet Blogger Co-Host Github I have a job! Author @ rebeccafitzhugh @ technicloud.com @ vbrownbag.com @ rfitzhugh @ Rubrik.com vSphere Virtual Machine Management Learning VMware vSphere Rebecca Fitzhugh
  3. 3. Pattern vs Anti-Pattern Pattern “best practice” Anti-Pattern ”please don’t do this”
  4. 4. Value Stream Mapping
  5. 5. What is Value Stream Mapping? Planning tool to optimize results of eliminating waste
  6. 6. More Efficient VSMs • Always collect current-state information while walking the actual pathways of material and information flows yourself • Begin with a quick walk along the entire door-to-door value stream • Begin at the shipping end and work upstream • Do not rely on standard times or information that you do not personally obtain
  7. 7. Release Engineering
  8. 8. Accelerate the path from dev to ops
  9. 9. Release Process Steps
  10. 10. More realistic…
  11. 11. OK...fine…the real process
  12. 12. Cynefin Framework Every release engineering strategy must: • Be complexity-informed • Account for the entirety of the system (systems thinking) • Address human factors
  13. 13. Complexity is the enemy of reliability. Whatever you do, Whatever you buy, Simplify your architecture.
  14. 14. Design Pattern for Release Engineering
  15. 15. • If your team is not involved in some sort of continuous improvement, be worried. • If your team is not working on a continuous delivery pipeline, be worried.
  16. 16. Canary • Practice of using domestic canaries to detect carbon monoxide in coal mines. • Or---rolling out a release to a small number of users • Problems may only show up in a prod environment • Canarying can allow early detection
  17. 17. More Efficient Release Engineering • Don’t make release engineering an afterthought • Ensure release engineers understand the intention of how the code should be built and deployed. Don’t build and “throw” the results over. • Dev, SREs, and release engineering should work together • Automate error-prone steps. • Use source control (duh). • Be patient, this discipline is still evolving.
  18. 18. Test Automation
  19. 19. How does it all work together? • Understand architecture – system and components • Test each part thoroughly • Unit • Test ways of working together • Component integration • Test how it all comes together • Functional This is how parts become a camera.
  20. 20. What else? • Test the non-functional • NFRs • Test 3rd party interactions • Integrations • Test early • Build-in quality
  21. 21. Flight Search Search Results Flight Details Passenger Info Payment Confirmation Application Server Database
  22. 22. Test Pyramid UI Web Service View Integration Component Unit Business facing tests Technolog y facing tests Manual/ Explorator y
  23. 23. UI Web Service View Integration Component Unit Security Accessibility Performance Recoverability Availability Manual/ Explorator y
  24. 24. Sample Test Framework
  25. 25. Browser/ Device Support Parallel execution Scalable Reports & Metrics Maintainable Run locally & remotely Easy to use OS & DB support Language / tool restrictions Different Environment s Support features of product under test Tool support Test Automation Framework Design Criteria
  26. 26. More Efficient Test Automation • Centralize coordination of test scheduling, execution, and reporting • Have test case platform that allow testing to be customized at runtime (“develop once, use everywhere”) • Uniform reporting (results can be quickly and accurately analyzed)
  27. 27. Change Management
  28. 28. DevOps Difference Change and release management become federated and integrated processes.
  29. 29. Check out code and build Unit testing Quality control Deploy to test environment Fetch latest builds Integration testing Package and archiving Fetch release ready builds Deploy to pre- prod Acceptance testing Deploy to production Change Advisory Board (CAB) Pipeline with CAB Feedback Loop
  30. 30. More Efficient Change Management Make Change Management a priority Establish different modes of change to balance speed, quality, and risk Integrate change into DevOps pipeline Automate capture of change records with artifacts Improve collaboration and build auditable history Streamline process ITIL, DevOps, business, etc. Speed change processing and increase adoption Single source of truth for ALL changes Increase visibility for risk and compliance management
  31. 31. Thank you. Rebecca Fitzhugh | @rebeccafitzhugh

×