Design Patterns for Efficient
DevOps Processes
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
Pattern vs Anti-Pattern
Pattern
“best practice”
Anti-Pattern
”please don’t do this”
Value Stream Mapping
What is Value Stream Mapping?
Planning tool to optimize results of eliminating waste
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
Release Engineering
Accelerate the path from dev
to ops
Release Process Steps
More realistic…
OK...fine…the real process
Cynefin Framework
Every release engineering
strategy must:
• Be complexity-informed
• Account for the entirety of
the system (systems
thinking)
• Address human factors
Complexity is the enemy of reliability.
Whatever you do,
Whatever you buy,
Simplify your architecture.
Design Pattern for Release Engineering
• 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.
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
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.
Test Automation
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.
What else?
• Test the non-functional
• NFRs
• Test 3rd party interactions
• Integrations
• Test early
• Build-in quality
Flight Search
Search
Results
Flight Details
Passenger
Info
Payment Confirmation
Application Server
Database
Test Pyramid
UI
Web
Service
View
Integration
Component
Unit
Business
facing tests
Technolog
y facing
tests
Manual/
Explorator
y
UI
Web
Service
View
Integration
Component
Unit
Security
Accessibility
Performance
Recoverability
Availability
Manual/
Explorator
y
Sample Test Framework
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
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)
Change Management
DevOps Difference
Change and release management become federated and
integrated processes.
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
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
Thank you.
Rebecca Fitzhugh | @rebeccafitzhugh

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

Editor's Notes

  • #17 The core idea of CD is to create a repeatable, reliable and incrementally improving process that not only applies to software development but also to the infrastructure side.
  • #32 Smoke test = build verification / acceptance test