39
Design Patterns for Efficient DevOps Processes

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

Embed Size (px)

Citation preview

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

Design Patterns for Efficient DevOps Processes

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

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

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

Pattern vs Anti-Pattern

Pattern

“best practice”

Anti-Pattern

”please don’t do this”

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

Value Stream Mapping

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

What is Value Stream Mapping?

Planning tool to optimize results of eliminating waste

Page 6: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 7: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 8: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 9: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

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

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

Release Engineering

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

Accelerate the path from dev to ops

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

Release Process Steps

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

More realistic…

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

OK...fine…the real process

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

Cynefin Framework

Every release engineering strategy must:

• Be complexity-informed

• Account for the entirety of the system (systems thinking)

• Address human factors

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

Complexity is the enemy of reliability.

Whatever you do,

Whatever you buy,

Simplify your architecture.

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

Design Pattern for Release Engineering

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

• 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.

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

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

Page 20: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 21: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

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.

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

Test Automation

Page 23: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 24: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 25: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

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.

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

What else?

• Test the non-functional• NFRs

• Test 3rd party interactions• Integrations

• Test early• Build-in quality

Page 27: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 28: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

Flight SearchSearch Results

Flight DetailsPassenger

InfoPayment Confirmation

Application Server

Database

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

Test PyramidUI

Web Service

View

Integration

Component

Unit

Business

facing tests

Technolog

y facing

tests

Manual/

Explorator

y

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

UI

Web Service

View

Integration

Component

Unit

Security

Accessibility

Performance

Recoverability

Availability

Manual/

Explorator

y

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

Sample Test Framework

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

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

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

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)

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

Change Management

Page 35: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017
Page 36: Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDays Tel Aviv 2017

DevOps Difference

Change and release management become federated and integrated processes.

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

Check out code

and buildUnit 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

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

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

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

Thank you.Rebecca Fitzhugh | @rebeccafitzhugh