gonzo - increasing agility by understanding risk

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

Upload: croomes

Post on 11-May-2015

79 views

Category:

Software


2 download

DESCRIPTION

Gonzo lets you assess the impact of your Puppet change before rolling it out across your server estate. It takes over after continuous integration tools have run their tests and deployed the release to the Puppet Masters, but before clients have been updated. Gonzo's goal is to increase confidence in Puppet changes by making it easier to verify that all changes are intentional and understood. github.com/croomes/gonzo

TRANSCRIPT

Page 1: Gonzo - Increasing Agility by Understanding Risk

Increasing Agility by Understanding Risk

Simon Croome [email protected]

Page 2: Gonzo - Increasing Agility by Understanding Risk

$ whoami Simon Croome Infrastructure Engineer Financial Industry Independent Consultant

Page 3: Gonzo - Increasing Agility by Understanding Risk

Why Puppet?

Page 4: Gonzo - Increasing Agility by Understanding Risk

Velocity

Page 5: Gonzo - Increasing Agility by Understanding Risk

Configuration Management is only part

of the solution

Page 6: Gonzo - Increasing Agility by Understanding Risk
Page 7: Gonzo - Increasing Agility by Understanding Risk

Software is deployable throughout its lifecycle

Page 8: Gonzo - Increasing Agility by Understanding Risk

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

Page 9: Gonzo - 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: Gonzo - 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: Gonzo - Increasing Agility by Understanding Risk

Continuous Delivery

Page 12: Gonzo - Increasing Agility by Understanding Risk

Continuous Delivery

Reduces the transaction cost of making change

Page 13: Gonzo - Increasing Agility by Understanding Risk

Continuous Delivery

Reduces the transaction cost of making change

Faster ROI

Page 14: Gonzo - Increasing Agility by Understanding Risk

Continuous Delivery

Reduces the transaction cost of making change

Faster ROI

Reduces Risk

Page 15: Gonzo - Increasing Agility by Understanding Risk

Risk

Page 16: Gonzo - Increasing Agility by Understanding Risk

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

continuous-delivery-in-one-picture/ !

Page 17: Gonzo - Increasing Agility by Understanding Risk

If it hurts Do it more often

Page 18: Gonzo - Increasing Agility by Understanding Risk

Controls

Page 19: Gonzo - Increasing Agility by Understanding Risk

Controls

Change Management

Page 20: Gonzo - Increasing Agility by Understanding Risk

Controls

Change Management

Separation of Duties

Page 21: Gonzo - Increasing Agility by Understanding Risk

Controls

Change Management

Separation of Duties

Audit

Page 22: Gonzo - Increasing Agility by Understanding Risk

An example workflow

Page 23: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - 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: Gonzo - Increasing Agility by Understanding Risk
Page 35: Gonzo - Increasing Agility by Understanding Risk
Page 36: Gonzo - 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: Gonzo - Increasing Agility by Understanding Risk

github.com/croomes/gonzo !

Questions?