overcoming continuous delivery impedance
TRANSCRIPT
Overcoming Impedance to Continuous DeliveryMark [email protected]@markosrendellhttp://markosrendell.wordpress.com
@markosrendell 2
Agenda
• What is Continuous Delivery?• Why would you want it?
• What do we have to get right?
• Impedance: People• Impedance: Infrastructure• Impedance: Software Products• Impedance: Complexity
@markosrendell 3
What is Continuous Delivery?
An approach to industrialising your delivery
@markosrendell 4
What is Continuous Delivery?
http://markosrendell.wordpress.com
A focus on Flow
@markosrendell 5
Why would you want continuous delivery?
Happiness through a happy organisation
@markosrendell 6
Continuous Delivery Essentials
Whole Solution
Version: 48
Website
Version: 12
Order ServiceVersion: 1.0.3.19
Email ServiceVersion: 1.0.0.9
Payment Service
Version: 1.0.0.3
Deployment toolsVersion: 47
Platform
Version: 83
Cloud Foundry
Version: 23
MySQLVersion: 12
CassandraVersion: 12
RabbitMQVersion: 24
InfrastructureVersion 20
MicroBoshVersion: 24
Server template
Version: 5
Part 1: rock solid holistic Configuration Management
@markosrendell 7
Continuous Delivery Essentials
Part 2: Platform treated as an Application (PaaA)
Whole Solution
Version: 46
WebsiteVersion: 12
Order ServiceVersion: 1.0.3.19
Email ServiceVersion: 1.0.0.9
Payment Service
Version: 1.0.0.3
Deployment toolsVersion: 47
Platform
Version: 83
Cloud Foundry
Version: 23
MySQLVersion: 12
CassandraVersion: 12
RabbitMQVersion: 24
InfrastructureVersion 20
MicroBoshVersion: 24
Server template
Version: 5
@markosrendell 8
Continuous Delivery Essentials
Compileand package
Static Code Analysis Unit Tests Run Functional
TestsRun Security
Tests PT env deploy Run Tech TestsCT envdeploy
Production deploy
Check in
Part 3: Automated Delivery Pipeline
@markosrendell 9
Continuous Delivery Essentials
Compileand package
Static Code Analysis Unit Tests Run Functional
TestsRun Security
Tests PT env deploy Run Tech TestsCT envdeploy
Production deploy
Check in
Compileand package
Static Code Analysis Unit Tests Run Functional
TestsRun Security
Tests PT env deploy Run Tech TestsCT envdeploy
Production deploy
Check in
Compileand package
Static Code Analysis Unit Tests Run Functional
TestsRun Security
Tests PT env deploy Run Tech TestsCT envdeploy
Production deploy
Check in
Compileand package
Static Code Analysis Unit Tests Run Functional
TestsRun Security
Tests PT env deploy Run Tech TestsCT envdeploy
Production deploy
Check in
Compileand package Unit Tests Platform env
deployMonitoring
testsCheck
in
Compileand package Unit Tests Platform env
deployMonitoring
testsCheck
in
Compileand package Unit Tests Platform env
deployMonitoring
testsCheck
in
Compileand package Unit Tests Platform env
deployMonitoring
testsCheck
in
Compileand package Unit Tests Platform env
deployMonitoring
testsCheck
in
Platform
Part 3: Automated Delivery Pipeline
@markosrendell 10
All too familiar?
Whole Solution
COTSProduct
UI Code APIs Core components Database Platform
WS Product + Patches
Middleware
OS
ESB
Integration services Queues Platform
Middleware
OS
Business Rules Engine
Application Batch jobs Database Rule definitions Platform
WCS Product + Patches
Middleware
OS
Deployment tools
Physical infrastructure configuration
Network devices
Servers
Version ???
Compileand package
Static Code Analysis Unit Tests Run Functional
TestsRun Security
Tests PT env deploy Run Tech TestsCT envdeploy
Production deploy
Check in
CO
TS
InfrastructureE
SB Package Static Code
Analysis Unit Tests PT env deploy Production deploy
CT envdeploy
Check in
Package Unit Tests CT envdeploy
Production deployPT env deployCheck
in
@markosrendell 11
Impedance: People
Ignorance? Ambivalence?
@markosrendell 12
Impedance: People
Obedience? Disobedience?
@markosrendell 13
Version control
Configuration
ManagementRelease
Management
EnvironmentManagement
Pipelineorchestration
Automated
infrastructure
Automateddeployment
Impedance: People and Governance
Who “owns” these lovely things?
@markosrendell 14
Dev Ops
UI agency
Cloud “Ops”
(possibly shadow!)
Traditional operations
“Heritage System” owner
Mobile partners
ERP owner CMS vendor
CRM owner
SaaS(possibly shadow!)
“Operations”
Impedance: People and Organisational Complexity
Get a DevOps team if that helps you
@markosrendell 15
Impedance: Infrastructure
Best infrastructure team quarter ever – no new servers given out?
@markosrendell 16
Impedance: Infrastructure
Demand “public cloud” equivalent levels of capability and service (or use public cloud!)
@markosrendell 17
Impedance: Infrastructure Code quality
Infra-as-code == Infra-is-code {Give it the Jenkins treatment!
}
e.g. MySQLChef cookbook
e.g. RabbitMQBosh release
Treat you Platform as an Application and engineer it accordingly
@markosrendell 18
Impedance: Software Products
Tame the COTS products – it IS possible!
Build Static Code Analysis
Deploy Code
Load Test Data
Run Test Harness
Deploy Code
SCM Repo
@markosrendell 19
Impedance: Software Products
Tame the COTS products – it IS possible!
Build Static Code Analysis
Deploy Code
Load Test Data
Run Test Harness
Deploy Code
SCM Repo
Plain text (easy)
Anything you like!
Native concept
SonarQubePMD
CheckstyleFindbugs
LintFxCop
etc.
Options, options,options
...
etc.
@markosrendell 20
Impedance: Software Products
Tame the COTS products – it IS possible!
Build Static Code Analysis
Deploy Code
Load Test Data
Run Test Harness
Deploy Code
SCM Repo
Binary or proprietary
XML
Can you even flatten
CLI?Headlless
IDE
Write your own
CLI? etc.
@markosrendell 21
Impedance: Complexity
What versions were
tested together?
What should
we release?
How do we control flow?
Have a strategy for tracking component integration
@markosrendell 22
Integrated Pipelines
CI pipelines
Integrated pipelines work really well
@markosrendell 23
Integrated Pipelines
CI pipelines
Integration pipeline
Integrated pipelines work really well