continuous delivery antipatterns from the wild - matthew skelton - ipexpo manchester 2016

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

Upload: skelton-thatcher-consulting-ltd

Post on 15-Jan-2017

3.767 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery Anti-patternsfrom the wild

Wednesday 18th May 2016 - #IPEXPO

Matthew SkeltonSkelton Thatcher Consulting

@matthewpskelton

Page 2: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 3: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

anti-patterns

Page 4: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Matthew Skelton@matthewpskelton

Page 5: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery / …

30+ organisations

UK, US, EU, India, China

Page 6: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 7: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

DevOpsTopologies.com

Page 8: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 9: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

anti-patterns

Page 10: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

1. Not reading the‘Continuous Delivery’

book

Page 11: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

“What book?”

Page 12: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

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

Page 13: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 14: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Use the Humble & Farley book on

Continuous Delivery

Page 15: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

2. Long and slow deployment pipelines

Page 16: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 17: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

40+ steps between code commit and release

several weeks’ durationBUT

bug fixes in 4 steps

Page 18: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 19: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 20: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 21: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

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

Page 22: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

3. “Continuous Deliveryis not for us”

Page 23: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 24: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

October 29, 2015

Sarah Goff-Dupont@DevToolSuperFan

Page 25: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

“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)

Page 26: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

“…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!

Page 27: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery != Continuous Deployment

(Pull vs Push)

Page 28: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery does not need deployments straight to

Production systems

Page 29: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery does not need cloud servers or

containers

Page 30: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery is not 100 deployments per day

Page 31: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 32: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Copyright © O’Reilly Media 2016

Page 33: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Continuous Delivery is a set of excellent practices for building

working software systems

Page 34: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Deliver to a simulationenvironment if not

Production

Page 35: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

4. No effective loggingor application metrics

Page 36: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 37: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 38: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 39: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 40: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

use logging as a channel/vector to make distributed

systems more testable

Page 41: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Aggregated logging + detailed metrics drive

decision-making

Page 42: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

5. No investment inbuild & deployment

Page 43: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 44: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 45: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 46: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 47: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

versioning approachesinterdependencies

evaluation of new techniquessplitting / joining components

infrastructure availability

Page 48: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Approx 1 x FTE per Product Team for

build & deployment

Page 49: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

6. Operational aspectsnot addressed well

Page 50: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

‘Functional’ ‘Non-functional’

Page 51: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 52: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

‘Operational Features’(not NFRs)

Page 53: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

FEATURES

Visible

Operational Visible

Page 54: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Single backlog forvisible and operational

features

Page 55: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

7. Forgetting the database

Page 56: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 57: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 58: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 59: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 60: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 61: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

ApexSQLActiveRecord (and similar)

DbMaestroFluentMigrator

FlywayLiquibase

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

Page 62: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Use a tool for DB changes + drive from

version control

Page 63: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

8. “Just plug in adeployment pipeline”

Page 64: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 65: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Limited unit testsNo re-architecture

1 Ops person for 25 techiesOpaque component names

No logging or metrics

Page 66: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Re-architect for Continuous Delivery

Page 67: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

9. Container envy(aka microservices envy)

Page 68: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 69: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

No unit or integration testsNo logging or monitoring

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

Limited Dev+Ops collaboration

Page 70: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016
Page 71: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Adopt good CD practices before adding

container complexity

Page 72: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

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

Page 73: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

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

Page 74: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Questions?

Page 75: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

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/

Page 76: Continuous Delivery antipatterns from the wild - Matthew Skelton - IPEXPO Manchester 2016

Thank you

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

@SkeltonThatcher

+44 (0)20 8242 4103

@matthewpskelton