You are on page 1of 35

OPERATIONS

SUPPORT WORKFLOW
NEIL MCCAUGHLEY
BUILD AND RELEASE ENGINERING MANAGER
NEIL MCCAUGHLEY
BUILD AND RELEASE ENGINERING MANAGER
Source Control Management CI and Build Tools Code Quality Analysis Packaging Tools

Deploy/Test
Source code
Unit Testing Quality Control Packaging Dedicated Test
Change
Environment

Feature complete
Gate

Deploy
Publish Release Integration
Integration
Candidates Testing
Environment

CI/CD WORKFLOW
Deploy/Test Deploy/Test Deploy/Test
Release
Candidate Gate

Performance Pre-Production UAT

Production Release
Gate

Production
Deployment

Deployment Environments Configuration management and Binaries and package storage Testing Frameworks
Deployment
Source Control Management CI and Build Tools Code Quality Analysis Packaging Tools

Deploy/Test
Source code
Unit Testing Quality Control Packaging Dedicated Test
Change
Environment

Feature complete
Gate

Deploy
Publish Release Integration
Integration
Candidates Testing
Environment

Release
Candidate Gate

Deploy/Test Deploy/Test Deploy/Test


Performance Pre-Production UAT

Production Release
Gate

Production
Deployment

Deployment Environments Configuration management and Binaries and package storage Testing Frameworks
Deployment
Release uses cases Key
Automated task
Deployment Self-Service option
Source Control Release Engineering Ticket
Update dependencies: Ivy - NuGet - Maven - Npm Trigger Local deployment
Update project source Remote deployment
Request a repo Generate Chef cookbook
Create branch (feature, release, hotfix) Chef environment maintenance
Tag Chef role maintenance
Merge branches pre-release or release Maintain runlist
Create a repo Target deployment nodes
Migrate project Specify deployment package version
Git user support Stage artifacts for Production
Git access request Stage cookbooks for Production
Crucible Project create 3rd party cookbook creation
Crucible Project create Bootstrap client for deployment
Crucible user creation Chef job tool maintenance
Migrate role
Migrate Cookbook
Build
Chef access request
Resolve dependencies
Deployment support
Inspect dependencies
Encrypt Configuration passwords
Run unit tests
Decrypt Configuration passwords
Run code coverage
Provision server
Push updated version files
Compile project
Package project Artifact Library
Run code inspection analysis Retrieve dependency artifacts
Test deployment Publish project installer package
Create Feature/CI/Release/Hotfix build configuration Publish project library artifacts
Build support Artifact promotion to release repo
TeamCity access request Publish 3rd party packages
Build template config maintenance Proxy Repository management
Create deployment build configuration
Create functional test build configuration
Integration Test Trigger
Release uses cases Key
Automated task
Deployment Self-Service option
Source Control Release Engineering Ticket
Update dependencies: Ivy - NuGet - Maven - Npm Trigger Local deployment
Update project source Remote deployment
Request a repo Generate Chef cookbook
Create branch (feature, release, hotfix) Chef environment maintenance
Tag Chef role maintenance
Merge branches pre-release or release Maintain runlist
Create a repo Target deployment nodes
Migrate project Specify deployment package version
Git user support Stage artifacts for Production
Git access request Stage cookbooks for Production
Crucible Project create 3rd party cookbook creation
Crucible Project create
Crucible user creation MANUAL STEPS = Bootstrap client for deployment
Chef job tool maintenance
Migrate role
Migrate Cookbook

SLOW RELEASE CYCLE, MORE SUPPORT


Build
Resolve dependencies
Inspect dependencies
Chef access request
Deployment support
Encrypt Configuration passwords
Run unit tests
Decrypt Configuration passwords
Run code coverage
Provision server
Push updated version files
Compile project
Package project Artifact Library
Run code inspection analysis Retrieve dependency artifacts
Test deployment Publish project installer package
Create Feature/CI/Release/Hotfix build configuration Publish project library artifacts
Build support Artifact promotion to release repo
TeamCity access request Publish 3rd party packages
Build template config maintenance Proxy Repository management
Create deployment build configuration
Create functional test build configuration
Integration Test Trigger
From a collaboration stand point, If you spend most of your day raising tickets
or waiting on tickets to be completed

YOU ARE DOING IT WRONG!


We wanted to promote Development, QA and Operations tasks that where

Automated
Or when automation is not possible/desired

Self Service
From a collaboration stand point, If you spend most of your day raising tickets
or waiting on tickets to be completed

YOU ARE DOING IT WRONG!

WAIT. DOESN’T SELF SERVICE


We wanted to promote Development, QA and Operations tasks that where

INTRODUCE RISK?
Automated
or failing that

Self Service
Making self-service safe

1. Understand what's being self-serviced

2. Make education part of your plan

3. Put in checks that balance processes and procedures

4. Just because you've implemented self-service


doesn't mean you've reduced cost
Making self-service safe

1. Understand what's being self-serviced

2. Make education part of your plan

WHERE WOULD WE GET THE BEST


3. Put in restrictions that balance processes and procedures
VALUE?
4. Just because you've implemented self-service doesn't
mean you've reduced cost
ADHERENCE TO STANDARDS
COMMON TICKETS
TREND ANALYSIS
HOW?
RUNDECK
OPERATIONS PROCEDURES JOB SCHEDULER

SELF-SERVICE TEST TRIGGER AUTOMATED


ENVIRONMENTS DEPLOYMENT
CREATING FROM TEMPLATE
PROMOTES STANDARDISATION
Key
Release uses cases Before Automated task
Self-Service option
Source Control Deployment Release Engineering Ticket
Update dependencies: Ivy - NuGet - Maven - Npm Trigger Local deployment
Update project source Remote deployment
Request a repo Generate Chef cookbook
Create branch (feature, release, hotfix) Chef environment maintenance
Tag Chef role maintenance
Merge branches pre-release or release Maintain runlist
Create a repo Target deployment nodes
Migrate project Specify deployment package version
Git user support Stage artifacts for Production
Git access request Stage cookbooks for Production
Crucible Project create 3rd party cookbook creation
Crucible Project create Bootstrap client for deployment
Crucible user creation Chef job tool maintenance
Migrate role
Migrate Cookbook
Build
Chef access request
Resolve dependencies
Deployment support
Inspect dependencies
Encrypt Configuration passwords
Run unit tests
Decrypt Configuration passwords
Run code coverage
Provision server
Push updated version files
Compile project
Package project Artifact Library
Run code inspection analysis Retrieve dependency artifacts
Test deployment Publish project installer package
Create Feature/CI/Release/Hotfix build configuration Publish project library artifacts
Build support Artifact promotion to release repo
TeamCity access request Publish 3rd party packages
Build template config maintenance Proxy Repository management
Create deployment build configuration
Create functional test build configuration
Integration Test Trigger
Key
Release uses cases After Automated task
Self-Service option
Source Control Deployment Release Engineering Ticket
Update dependencies: Ivy - NuGet - Maven - Npm Trigger Local deployment
Update project source Remote deployment
Request a repo Generate Chef cookbook
Create branch (feature, release, hotfix) Chef environment maintenance
Tag Chef role maintenance
Merge branches pre-release or release Maintain runlist
Create a repo Target deployment nodes
Migrate project Specify deployment package version
Git user support Stage artifacts for Production
Git access request Stage cookbooks for Production
Crucible Project create 3rd party cookbook creation
Crucible Project update Bootstrap client for deployment
Crucible user creation Chef job tool maintenance
Migrate role
Migrate Cookbook
Build
Chef access request
Resolve dependencies
Deployment support
Inspect dependencies
Encrypt Configuration passwords
Run unit tests
Decrypt Configuration passwords
Run code coverage
Provision server
Push updated version files
Compile project
Package project Artifact Library
Run code inspection analysis Retrieve dependency artifacts
Test deployment Publish project installer package
Create Feature/CI/Release/Hotfix build configuration Publish project library artifacts
Build support Artifact promotion to release repo
TeamCity access request Publish 3rd party packages
Build template config maintenance Proxy Repository management
Create deployment build configuration
Create functional test build configuration
Integration Test Trigger
Key
Release uses cases After Automated task
Self-Service option
Source Control Deployment Release Engineering Ticket
Update dependencies: Ivy - NuGet - Maven - Npm Trigger Local deployment
Update project source Remote deployment
Request a repo Generate Chef cookbook
Create branch (feature, release, hotfix) Chef environment maintenance
Tag Chef role maintenance
Merge branches pre-release or release Maintain runlist
Create a repo Target deployment nodes
Migrate project Specify deployment package version
Git user support Stage artifacts for Production
Git access request Stage cookbooks for Production

REDUCTION OF QUEUE SUPPORT TIME


Crucible Project create
Crucible Project update
Crucible user creation
3rd party cookbook creation
Bootstrap client for deployment
Chef job tool maintenance
Migrate role

Build
FROM 60% FTE TO 20%
Resolve dependencies
Inspect dependencies
Migrate Cookbook
Chef access request
Deployment support
Encrypt Configuration passwords
Run unit tests
Decrypt Configuration passwords
Run code coverage
Push updated version files
Compile project
Package project Artifact Library
Run code inspection analysis Retrieve dependency artifacts
Test deployment Publish project installer package
Create Feature/CI/Release/Hotfix build configuration Publish project library artifacts
Build support Artifact promotion to release repo
TeamCity access request Publish 3rd party packages
Build template config maintenance Proxy Repository management
Create deployment build configuration
Create functional test build configuration
Integration Test Trigger
Source Control Management CI and Build Tools Code Quality Analysis Packaging Tools

Deploy/Test
Source code
Unit Testing Quality Control Packaging Dedicated Test
Change
Environment

Feature complete
Gate

Deploy
Publish Release Integration
Integration
Candidates Testing
Environment

Release
Candidate Gate

Deploy/Test Deploy/Test Deploy/Test


Performance Pre-Production UAT

Production Release
Gate

Production
Deployment

Deployment Environments Configuration management and Binaries and package storage Testing Frameworks
Deployment
EXTENSIONS:
OPERATIONS OUTSIDE RELEASE MANAGEMENT
EXTENSIONS:
JOB SCHEDULER
Engineering Wins

• Drives process and automation

• Improves standardisation adoption

• Enables shorter release cycle

• Reduced complexity

• Audit and monitoring improvement

• Assigns ownership

• Facilitates collaboration/handover between teams


Engineering Wins

• Drives process and automation

• Improves standardisation adoption

• Enables shorter release cycle


CAVEAT: DISTRIBUTED OWNERSHIP REQUIRES
• Reduced complexity
ACCOUNTABILITY, CONTINUOUS IMPROVEMENT AND
MAINTENANCE
• Audit and monitoring improvement

• Assigns ownership

• Facilitates collaboration/handover between teams


THANKS

Twitter: @neilisking

You might also like