Overcoming Impedance
to Continuous Delivery Mark Rendell
@markosrendell
http://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 Service
Version: 1.0.3.19
Email Service
Version: 1.0.0.9
Payment Service
Version: 1.0.0.3
Deployment tools Version: 47
Platform
Version: 83
Cloud Foundry
Version: 23
MySQL
Version: 12
Cassandra
Version: 12
RabbitMQ
Version: 24
Infrastructure
Version 20
MicroBosh
Version: 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
Website
Version: 12
Order Service
Version: 1.0.3.19
Email Service
Version: 1.0.0.9
Payment Service
Version: 1.0.0.3
Deployment tools Version: 47
Platform
Version: 83
Cloud Foundry
Version: 23
MySQL
Version: 12
Cassandra
Version: 12
RabbitMQ
Version: 24
Infrastructure
Version 20
MicroBosh
Version: 24
Server template
Version: 5
@markosrendell 8
Continuous Delivery Essentials
Compile
and package
Static Code
Analysis Unit Tests
Run Functional
Tests
Run Security
Tests PT env deploy
Run Tech
Tests
CT env
deploy
Production
deploy Check
in
Part 3: Automated Delivery Pipeline
@markosrendell 9
Continuous Delivery Essentials
Compile
and package
Static Code
Analysis Unit Tests
Run Functional
Tests
Run Security
Tests PT env deploy
Run Tech
Tests
CT env
deploy
Production
deploy Check
in
Compile
and package
Static Code
Analysis Unit Tests
Run Functional
Tests
Run Security
Tests PT env deploy
Run Tech
Tests
CT env
deploy
Production
deploy Check
in
Compile
and package
Static Code
Analysis Unit Tests
Run Functional
Tests
Run Security
Tests PT env deploy
Run Tech
Tests
CT env
deploy
Production
deploy Check
in
Compile
and package
Static Code
Analysis Unit Tests
Run Functional
Tests
Run Security
Tests PT env deploy
Run Tech
Tests
CT env
deploy
Production
deploy Check
in
Compile
and package Unit Tests
Platform env
deploy
Monitoring
tests Check
in
Compile
and package Unit Tests
Platform env
deploy
Monitoring
tests Check
in
Compile
and package Unit Tests
Platform env
deploy
Monitoring
tests Check
in
Compile
and package Unit Tests
Platform env
deploy
Monitoring
tests Check
in
Compile
and package Unit Tests
Platform env
deploy
Monitoring
tests Check
in
Pla
tform
Part 3: Automated Delivery Pipeline
@markosrendell 10
All too familiar?
Whole
Solution
COTS
Product
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 ???
Compile
and package
Static Code
Analysis Unit Tests
Run Functional
Tests
Run Security
Tests PT env deploy
Run Tech
Tests
CT env
deploy
Production
deploy Check
in
CO
TS
In
frastru
ctu
re
ES
B Package
Static Code
Analysis Unit Tests PT env deploy
Production
deploy
CT env
deploy Check
in
Package Unit Tests CT env
deploy
Production
deploy PT env deploy Check
in
@markosrendell 11
Impedance: People
Ignorance? Ambivalence?
@markosrendell 12
Impedance: People
Obedience? Disobedience?
@markosrendell 13
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. MySQL
Chef cookbook
e.g. RabbitMQ
Bosh 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
SonarQube
PMD
Checkstyle
Findbugs
Lint
FxCop
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
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