Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

76
Continuous Delivery Anti-patterns from the wild Thursday 6th October 2016 - #IPEXPO Matthew Skelton Skelton Thatcher Consulting @matthewpskelton

Transcript of Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Page 1: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery Anti-patternsfrom the wild

Thursday 6th October 2016 - #IPEXPO

Matthew SkeltonSkelton Thatcher Consulting

@matthewpskelton

Page 2: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 3: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

anti-patterns

Page 4: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Matthew Skelton@matthewpskelton

Page 5: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery / …

30+ organisations

UK, US, EU, India, China

Page 6: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 7: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

DevOpsTopologies.com

Page 8: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 9: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

anti-patterns

Page 10: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

1. Not reading the‘Continuous Delivery’

book

Page 11: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

“What book?”

Page 12: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 14: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Use the Humble & Farley book on

Continuous Delivery

Page 15: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

2. Long and slow deployment pipelines

Page 16: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 17: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

40+ steps between code commit and release

several weeks’ durationBUT

bug fixes in 4 steps

Page 18: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 19: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 20: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 21: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

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

Page 22: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

3. “Continuous Deliveryis not for us”

Page 23: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 24: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

October 29, 2015

Sarah Goff-Dupont@DevToolSuperFan

Page 25: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

“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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

“…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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery != Continuous Deployment

(Pull vs Push)

Page 28: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery does not need deployments straight to

Production systems

Page 29: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery does not need cloud servers or

containers

Page 30: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery is not 100 deployments per day

Page 31: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 32: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Copyright © O’Reilly Media 2016

Page 33: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Continuous Delivery is a set of excellent practices for building

working software systems

Page 34: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Deliver to a simulationenvironment if not

Production

Page 35: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

4. No effective loggingor application metrics

Page 36: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 37: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 38: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 39: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 40: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

use logging as a channel/vector to make distributed

systems more testable

Page 41: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Aggregated logging + detailed metrics drive

decision-making

Page 42: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

5. No investment inbuild & deployment

Page 43: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 44: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 45: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 46: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 47: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

versioning approachesinterdependencies

evaluation of new techniquessplitting / joining components

infrastructure availability

Page 48: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Approx 1 x FTE per Product Team for

build & deployment

Page 49: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

6. Operational aspectsnot addressed well

Page 50: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

‘Functional’ ‘Non-functional’

Page 51: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 52: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

‘Operational Features’(not NFRs)

Page 53: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

FEATURES

Visible

Operational Visible

Page 54: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Single backlog forvisible and operational

features

Page 55: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

7. Forgetting the database

Page 56: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 57: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 58: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 59: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 60: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 61: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

ApexSQLActiveRecord (and similar)

DbMaestroFluentMigrator

FlywayLiquibase

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

Page 62: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Use a tool for DB changes + drive from

version control

Page 63: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

8. “Just plug in adeployment pipeline”

Page 64: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 65: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Limited unit testsNo re-architecture

1 Ops person for 25 techiesOpaque component names

No logging or metrics

Page 66: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Re-architect for Continuous Delivery

Page 67: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

9. Container envy(aka microservices envy)

Page 68: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 69: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe
Page 71: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Adopt good CD practices before adding

container complexity

Page 72: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Questions?

Page 75: Continuous Delivery Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

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 Anti-patterns from the wild - Matthew Skelton- IPEXPO Europe

Thank you

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

@SkeltonThatcher

+44 (0)20 8242 4103

@matthewpskelton