Top Banner
Increasing Agility by Understanding Risk Simon Croome [email protected]
37

Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Aug 27, 2014

Download

Software

Puppet Labs

"Increasing Agility by Understanding
Risk" given at Puppet Camp London April 2014 by Simon Croome
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Increasing Agility by Understanding Risk

Simon Croome [email protected]

Page 2: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

$ whoami Simon Croome Infrastructure Engineer Financial Industry Independent Consultant

Page 3: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Why Puppet?

Page 4: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Velocity

Page 5: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Configuration Management is only part

of the solution

Page 6: Puppet Camp London April 2014: Increasing Agility by Understanding Risk
Page 7: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Software is deployable throughout its lifecycle

Page 8: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Software is deployable throughout its lifecycle !Priority is keeping the software deployable over new features

Page 9: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Software is deployable throughout its lifecycle !Priority is keeping the software deployable over new features !Anybody can get fast, automated feedback on the production readiness of their systems any time a change is made

Page 10: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Software is deployable throughout its lifecycle !Priority is keeping the software deployable over new features !Anybody can get fast, automated feedback on the production readiness of their systems any time a change is made !Push-button deployments of any version to any environment

Page 11: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Continuous Delivery

Page 12: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Continuous Delivery

Reduces the transaction cost of making change

Page 13: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Continuous Delivery

Reduces the transaction cost of making change

Faster ROI

Page 14: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Continuous Delivery

Reduces the transaction cost of making change

Faster ROI

Reduces Risk

Page 15: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Risk

Page 16: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Concept: John Allspaw http://blog.vincentbrouillet.com/costs-and-risks-benefits-of-

continuous-delivery-in-one-picture/ !

Page 17: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

If it hurts Do it more often

Page 18: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Controls

Page 19: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Controls

Change Management

Page 20: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Controls

Change Management

Separation of Duties

Page 21: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Controls

Change Management

Separation of Duties

Audit

Page 22: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

An example workflow

Page 23: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 24: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 25: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 26: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 27: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 28: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 29: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 30: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 31: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 32: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 33: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Jira Ticket Engineering

Puppet Data

Code Branch

Puppet Modules

Test Servers

Dev Puppet

Engineering

UNIX team member is assigned ticket.Jira creates development sandbox using Stash integration.

Peer Review

Code Format Tests

Integr’tn Tests

Unit Tests

Code Release

Once code is merged into Stash’s Release Branch, a UNIX team member may create a release containing one or more changes.Bamboo automates deployment of the release to UAT, further automated testing, then release to Production.Note that it will not yet be deployed to client systems.

Create Release

Deploy to UAT

Integration Tests

Deploy to PROD

New Requirement

Ticket is raised against UNIX Jira Issue tracker,e.g. New project, change to OS build.

Test failures block the release.

Initiate Deployment

Release is selected by UNIX team member.

SelectRelease Dry-run

Change Detail

Impacted Roles

Build Status

Non- Impacted Servers

Impacted Servers

Manual Review

Impact Analysis

Change is run across the environment in read-only mode.Servers that would be changed report back changes.UNIX Change Manager assesses impact and assigns risk.

Scheduling & Change Management

Each impacted server role enters separate change management workflowMaintenance windows and change risk feed into scheduling.

DEV

SIT

DIT

EBF

PERF

EBF

Impacted Roles

BCP

PRODCAT

Deployment

Completed approvals trigger deployment during change window.

.

Approved CHG Tickets

Apply Change

Review Request

Risk

Maintenance Windows ServiceNow

CHG Tickets

Reporting

Web console to track deployment of changes across the environment, including summary view of health by server role and business area.

Un-approved tickets reset change workflow.

Code Review

UNIX team member creates “Pull Request”, indicating change is ready to be reviewed.Bamboo automates code quality review, unit and integration testing.If all tests pass, Engineering team alerted to perform peer review in Stash.

Page 34: Puppet Camp London April 2014: Increasing Agility by Understanding Risk
Page 35: Puppet Camp London April 2014: Increasing Agility by Understanding Risk
Page 36: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

Technology Stack !

Puppet - Dynamic environments MCollective - Comms CouchDB - Reports PouchDB - Replication to browser AngularJS - Web interface Rails - API (to be replaced) Resque / Redis - Job scheduling !

Page 37: Puppet Camp London April 2014: Increasing Agility by Understanding Risk

github.com/croomes/gonzo !

Questions?