design patterns for efficient devops processes - rebecca fitzhugh - devopsdays tel aviv 2017

Post on 22-Jan-2018

74 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 SearchSearch Results

Flight DetailsPassenger

InfoPayment Confirmation

Application Server

Database

Test PyramidUI

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

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

top related