continuous delivery antipatterns from the wild - matthew skelton - continuous lifecycle london 2016

76
Continuous Delivery Anti-patterns from the wild Wednesday 4th May 2016 - #ConlifecycleLon Matthew Skelton Skelton Thatcher Consulting @matthewpskelton

Upload: skelton-thatcher-consulting-ltd

Post on 15-Jan-2017

7.304 views

Category:

Software


0 download

TRANSCRIPT

Continuous Delivery Anti-patternsfrom the wild

Wednesday 4th May 2016 - #ConlifecycleLon

Matthew SkeltonSkelton Thatcher Consulting

@matthewpskelton

anti-patterns

Matthew Skelton@matthewpskelton

Continuous Delivery / …

30+ organisations

UK, US, EU, India, China

DevOpsTopologies.com

anti-patterns

1. Not reading the‘Continuous Delivery’

book

“What book?”

Keep Everything in Version Control

Done Means Released

Don’t Check In on a Broken Build

Never Go Home on a Broken Build

Fail the Build for Slow Tests

Only Build Your Binaries Once

Deploy the Same Way to Every Environment

Use the Humble & Farley book on

Continuous Delivery

2. Long and slow deployment pipelines

40+ steps between code commit and release

several weeks’ durationBUT

bug fixes in 4 steps

Short, wide pipelineshttp://continuousdelivery.com/2010/09/deployment-pipeline-anti-patterns/

3. “Continuous Deliveryis not for us”

October 29, 2015

Sarah Goff-Dupont

@DevToolSuperFan

“Nope.

CD is fine for some

systems/teams/software,

but each company should

make their own business

decisions about how often

to release code.”

(Why every development team needs

continuous delivery)

“…each company should make their own business

decisions about how often to release code…”

err, this is exactly what we get with Continuous Delivery practices!

Continuous Delivery != Continuous Deployment

(Pull vs Push)

Continuous Delivery does not need deployments straight to

Production systems

Continuous Delivery does not need cloud servers or

containers

Continuous Delivery is not 100 deployments per day

Copyright © O’Reilly Media 2016

Continuous Delivery is a set of excellent practices for building

working software systems

Deliver to a simulationenvironment if not

Production

4. No effective loggingor application metrics

use logging as a channel/vector to make distributed

systems more testable

Aggregated logging + detailed metrics drive

decision-making

5. No investment inbuild & deployment

versioning approachesinterdependencies

evaluation of new techniquessplitting / joining components

infrastructure availability

Approx 1 x FTE per Product Team for

build & deployment

6. Operational aspectsnot addressed well

‘Functional’‘Non-

functional’

???

‘Operational Features’(not NFRs)

FEATURES

Visible

OperationalVisible

Single backlog forvisible and operational

features

7. Forgetting the database

Spider plots?

ApexSQLActiveRecord (and similar)

DbMaestroFluentMigrator

FlywayLiquibase

Redgate toolsVendor-native (e.g. EF, SSDT)

Use a tool for DB changes + drive from

version control

8. “Just plug in adeployment pipeline”

Limited unit testsNo re-architecture

1 Ops person for 25 techiesOpaque component names

No logging or metrics

Re-architect for Continuous Delivery

9. Container envy(aka microservices envy)

No unit or integration testsNo logging or monitoring

200+ ETL jobs only in ProdDB on a single node (no HA!)

Limited Dev+Ops collaboration

Adopt good CD practices before adding

container complexity

Not reading any of ‘Continuous Delivery’ bookLong and slow deployment pipelines

“Continuous Delivery is not for us”No effective logging or application metrics

No investment in build & deploymentOperational aspects not addressed well

Forgetting the database“Just plug in a deployment pipeline”

Container envy

Use the CD bookShort, wide pipelines

Deliver to a simulation environmentAggregated logging + metrics

Explicitly fund build & deploymentSingle backlog for all features

Use a tool for DB changes + version controlRe-architect for Continuous Delivery

Adopt good practices before using containers

Questions?

References‘Continuous Delivery’ by Jez Humble & Dave Farley, 2010 https://www.amazon.co.uk/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912/

‘Deployment Pipeline anti-patterns’ by Jez Humblehttp://continuousdelivery.com/2010/09/deployment-pipeline-anti-patterns/

‘Why every development team needs continuous delivery’ by Sarah Goff-Dupont [Atlassian] http://blogs.atlassian.com/2015/10/why-continuous-delivery-for-every-development-team/

‘Continuous Delivery with Windows and .NET’ by Chris O’Dell & Matthew Skelton, O’Reilly, 2016http://cdwithwindows.net/

‘Database Lifecycle Management’ by Grant Fritchey and Matthew Skelton, Redgate, 2016http://thedlmbook.com/

Thank you

http://skeltonthatcher.com/[email protected]

@SkeltonThatcher

+44 (0)20 8242 4103

@matthewpskelton