teams and monoliths - matthew skelton - londoncd 2016

79
How to break apart a monolithic system safely without destroying your team Matthew Skelton, Skelton Thatcher Consulting @matthewpskelton LondonCD meetup: 11 Oct 2016 #londoncd

Upload: skelton-thatcher-consulting-ltd

Post on 15-Jan-2017

2.340 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Teams and monoliths - Matthew Skelton - LondonCD 2016

How to break apart a monolithic system safely

without destroying your teamMatthew Skelton, Skelton Thatcher Consulting

@matthewpskelton

LondonCD meetup: 11 Oct 2016#londoncd

Page 2: Teams and monoliths - Matthew Skelton - LondonCD 2016

TodayCognitive load for teams

‘Monolith’Code Forensics

Team-first boundariesMonolith-splitting recipe

Page 3: Teams and monoliths - Matthew Skelton - LondonCD 2016

For now, let’s forget:Microservices

CQRS / Event Sourcing

Queues(Architectural changes)

Page 4: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 5: Teams and monoliths - Matthew Skelton - LondonCD 2016

Continuous Delivery / etc…30+ organisations

UK, US, EU, India, China

Page 6: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 7: Teams and monoliths - Matthew Skelton - LondonCD 2016

How to break apart a monolithic system safely without destroying your

team

Page 8: Teams and monoliths - Matthew Skelton - LondonCD 2016

Safer, more rapid changes to software systems

(Business Agility)

Page 9: Teams and monoliths - Matthew Skelton - LondonCD 2016

A ‘team-first’ approach to software subsystem

boundaries

Page 10: Teams and monoliths - Matthew Skelton - LondonCD 2016

TEAM

Page 11: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 12: Teams and monoliths - Matthew Skelton - LondonCD 2016

TEAMcapabilities

appetite & aptitude

understanding

responsibilities

Page 13: Teams and monoliths - Matthew Skelton - LondonCD 2016

Conway’s Law

Page 14: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 15: Teams and monoliths - Matthew Skelton - LondonCD 2016

‘Reverse Conway’Tobbe Gyllebring (@drunkcod)

Page 16: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 17: Teams and monoliths - Matthew Skelton - LondonCD 2016

homomorphic force

(#Conway #Yawnoc)

HT @allankellynet

(same) (shape)

Page 18: Teams and monoliths - Matthew Skelton - LondonCD 2016

Cognitive load for teams

Page 19: Teams and monoliths - Matthew Skelton - LondonCD 2016

We have SCIENCE!

Page 20: Teams and monoliths - Matthew Skelton - LondonCD 2016

Cognitive load for teams• Driskell et al, 1999 ‘Does Stress Lead to a Loss of Team Perspective?’

Group Dynamics: Theory, Research, and Practice 3, no. 4 (1999): 291.• Fan et al, 2010 ‘Learning HMM-Based Cognitive Load Models for

Supporting Human-Agent Teamwork’. Cognitive Systems Research 11, no. 1 (2010): 108–119.

• Ilgen & Hollenbeck, 1993 ‘Effective Team Performance under Stress and Normal Conditions: An Experimental Paradigm, Theory and Data for Studying Team Decision Making in Hierarchical Teams with Distributed Expertise’. DTIC Document, 1993.

• Johnston et al, 2002 ‘Application of Cognitive Load Theory to Developing a Measure of Team Decision Efficiency’. DTIC Document, 2002.

Page 21: Teams and monoliths - Matthew Skelton - LondonCD 2016

“stress impacts teamperformance … by narrowing or weakening the team-level

perspective required foreffective team behavior.”

– Driskell et al, 1999Group Dynamics: Theory, Research, and Practice 1999, Vol. 3, No. 4,291-302

Page 22: Teams and monoliths - Matthew Skelton - LondonCD 2016

‘Monolith’

Page 23: Teams and monoliths - Matthew Skelton - LondonCD 2016

“Don’t start with a monolithwhen your goal is a

microservices architecture”

– Stefan Tilkov, innoQ

http://martinfowler.com/articles/dont-start-monolith.html

Page 24: Teams and monoliths - Matthew Skelton - LondonCD 2016

“Start monolithic and extract”

– Tammer Saleh, Pivotal

https://www.infoq.com/presentations/cloud-anti-patterns

Page 25: Teams and monoliths - Matthew Skelton - LondonCD 2016

A ‘team-first’ approach to software subsystem

boundaries

Page 26: Teams and monoliths - Matthew Skelton - LondonCD 2016

Types of software monoliths•Application monolith•Joined at the DB•Monolithic releases (coupled)•Monolithic thinking (standardisation)…

Page 27: Teams and monoliths - Matthew Skelton - LondonCD 2016

Application monolith

Single block of codeDeployed as a unit

Page 28: Teams and monoliths - Matthew Skelton - LondonCD 2016

Joined at the DB

Difficult to change separately (but not impossible)Risk is (probably) elevated

Chris Collyer, http://www.stone-circles.org.uk/stone/pentreifan.htm

Page 29: Teams and monoliths - Matthew Skelton - LondonCD 2016

Monolithic releases

Smaller components bundled together into a ‘release’

Page 30: Teams and monoliths - Matthew Skelton - LondonCD 2016

Monolithic thinking

‘One-size-fits-all’ for teamsAssumption that minimising variation is A Good Thing

Page 31: Teams and monoliths - Matthew Skelton - LondonCD 2016

Dangers of splitting a monolith•Reduced domain consistency (UX, Architecture, Data)

•Data duplication (unintentional)•Additional operational complexity due to distributed system and async messaging

•Degraded UX across the product

Page 32: Teams and monoliths - Matthew Skelton - LondonCD 2016

Splitting a monolith

Reiner Flassig - CC BY-SA 2.0 de - Wikipedia

Choose the right technique for splitting Understand the nature of the monolith

Page 33: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 34: Teams and monoliths - Matthew Skelton - LondonCD 2016

‘Fracture planes’ for code•Business domain bounded context•Regulatory compliance•Change cadence•Risk•Performance isolation•User personas•Team location

Page 35: Teams and monoliths - Matthew Skelton - LondonCD 2016

Code Forensics

Page 36: Teams and monoliths - Matthew Skelton - LondonCD 2016

ForensicsYour Code as a Crime SceneAdam Tornhill

Page 37: Teams and monoliths - Matthew Skelton - LondonCD 2016

Adam TornhillCode, Crime, Complexity: Analyzing software with forensic psychologyAdam TornhillTEDxTrondheim

youtube.com/watch?v=qJ_hplxTYJw

Page 38: Teams and monoliths - Matthew Skelton - LondonCD 2016

‘Code Maat’ tool

Page 39: Teams and monoliths - Matthew Skelton - LondonCD 2016

Adam Tornhill, http://www.adamtornhill.com/articles/crimescene/codeascrimescene.htm

Code City plus Code Maat forensics

Page 40: Teams and monoliths - Matthew Skelton - LondonCD 2016

Beware of badly-named subsystems

Page 41: Teams and monoliths - Matthew Skelton - LondonCD 2016

"information-poor abstract names are magnets for extra [unwanted] responsibilities"

– Adam Tornhillp.185, Your Code as a Crime Scene

Page 42: Teams and monoliths - Matthew Skelton - LondonCD 2016

Team-first boundaries

Page 43: Teams and monoliths - Matthew Skelton - LondonCD 2016

DevOpsTopologies.com

Page 44: Teams and monoliths - Matthew Skelton - LondonCD 2016

Team types

Component team

Platform / ’substrate’ team

Supporting / ‘productivity’ team

Product/Feature team

Page 45: Teams and monoliths - Matthew Skelton - LondonCD 2016

Team typesde

vops

topo

logies

.com

Component team

Platform / ’substrate’ team

Supporting / ‘productivity’ team

Product/Feature team

Page 46: Teams and monoliths - Matthew Skelton - LondonCD 2016

Code repositoriesAlign repositories to subsystem boundaries

Avoid monolithic-y repos like TFS** Don’t get me started on TFS, grrr…

Page 47: Teams and monoliths - Matthew Skelton - LondonCD 2016

Code repositories

Repo 1 Build Test Deploy Run

Repo 2 Build Test Deploy Run

Repo 3 Build Test Deploy Run

Page 48: Teams and monoliths - Matthew Skelton - LondonCD 2016

“You can use a monorepo only if your organisation has published a

scientific paper on Computer Science. Otherwise, use one repo

per separate deployable thing.”

– Matthew SkeltonLondonCD meetup group, 11 Oct 2016

Page 49: Teams and monoliths - Matthew Skelton - LondonCD 2016

Find natural or available ‘fracture planes’ for splitting

a monolith

(with the team in mind)

Page 50: Teams and monoliths - Matthew Skelton - LondonCD 2016

Monolith-splitting recipeTried and tested!

Page 51: Teams and monoliths - Matthew Skelton - LondonCD 2016

How to break apart a monolith without destroying your team

1. Instrument the monolith – logging 2. Grok data flows and fault responses3. Align teams to available segments

4. Split off segments one-by-one

Page 52: Teams and monoliths - Matthew Skelton - LondonCD 2016

Instrument the monolith

Page 53: Teams and monoliths - Matthew Skelton - LondonCD 2016

Instrument the monolith

Page 54: Teams and monoliths - Matthew Skelton - LondonCD 2016

Instrument the monolith

Page 55: Teams and monoliths - Matthew Skelton - LondonCD 2016

Instrument the monolithCorrelation ID Logs

Event ID

Page 56: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 57: Teams and monoliths - Matthew Skelton - LondonCD 2016

use logging as a channel/vector to

make distributed systems more testable

use logging as a channel/vector to

make distributed systems more testable

Page 58: Teams and monoliths - Matthew Skelton - LondonCD 2016

Grok data flows and fault responses

Page 59: Teams and monoliths - Matthew Skelton - LondonCD 2016

Grok data flows and fault responsesCorrelation ID

Event ID

Unexpected collaborating subsystems

Undetected fault condition

Page 60: Teams and monoliths - Matthew Skelton - LondonCD 2016

Grok data flows and fault responsesCorrelation ID

Event ID

Adjust subsystem boundaries

Fix poor fault responses

Page 61: Teams and monoliths - Matthew Skelton - LondonCD 2016

runbooktemplate.info

Run Book dialogue sheets

Page 62: Teams and monoliths - Matthew Skelton - LondonCD 2016

Align teams to available segments

Page 63: Teams and monoliths - Matthew Skelton - LondonCD 2016

Align teams to available segments

Page 64: Teams and monoliths - Matthew Skelton - LondonCD 2016

Align teams to available segmentsMap to business domain

Page 65: Teams and monoliths - Matthew Skelton - LondonCD 2016

Align teams to available segmentsIdentify likely components or ‘platform’ elements

Page 66: Teams and monoliths - Matthew Skelton - LondonCD 2016

Split off segments one-by-one

Page 67: Teams and monoliths - Matthew Skelton - LondonCD 2016

Split off segments one-by-one

Page 68: Teams and monoliths - Matthew Skelton - LondonCD 2016

Split off segments one-by-oneSeparate:- Builds- Infrastructure- Deployments- Versions- Lifecycle

Page 69: Teams and monoliths - Matthew Skelton - LondonCD 2016

Team needs / responsibilities / capabilities come first

Page 70: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 71: Teams and monoliths - Matthew Skelton - LondonCD 2016

How to break apart a monolith without destroying your team

1. Instrument the monolith – logging 2. Grok data flows and fault responses3. Align teams to available segments

4. Split off segments one-by-one

Page 72: Teams and monoliths - Matthew Skelton - LondonCD 2016

How to break apart a monolith without destroying your team

1. Instrument the monolith – logging 2. Grok data flows and fault responses3. Align teams to available segments

4. Split off segments one-by-one* plus a few other things

Page 73: Teams and monoliths - Matthew Skelton - LondonCD 2016

Further material

Page 74: Teams and monoliths - Matthew Skelton - LondonCD 2016
Page 75: Teams and monoliths - Matthew Skelton - LondonCD 2016

Books & articles• Working Effectively with Legacy Code, by Michael Feathers• Building Microservices by Sam Newman• ‘Managing Cognitive Load for Team Learning’ by Jo Pearce

http://12devsofxmas.co.uk/2015/12/day-3-managing-cognitive-load-for-team-learning/

Page 76: Teams and monoliths - Matthew Skelton - LondonCD 2016

Training• From Monolith to Microservices (online training) – Sam Newman,

author of Building Microserviceshttp://www.oreilly.com/live-training/from-monolith-to-microservices.html

Page 77: Teams and monoliths - Matthew Skelton - LondonCD 2016

Talks & slides• What is cognitive load theory and why should you care?, by Jo

Pearce - http://www.slideshare.net/JoPearce5/what-is-cognitive-load-theory-5mins

• Building Microservices by Sam Newman

Page 78: Teams and monoliths - Matthew Skelton - LondonCD 2016

Research papers• Driskell, James E., Eduardo Salas, and Joan Johnston. ‘Does Stress Lead to a Loss of Team

Perspective?’ Group Dynamics: Theory, Research, and Practice 3, no. 4 (1999): 291.• Fan, Xiaocong, Po-Chun Chen, and John Yen. ‘Learning HMM-Based Cognitive Load Models

for Supporting Human-Agent Teamwork’. Cognitive Systems Research 11, no. 1 (2010): 108–119.

• Ilgen, Daniel R., and John R. Hollenbeck. ‘Effective Team Performance under Stress and Normal Conditions: An Experimental Paradigm, Theory and Data for Studying Team Decision Making in Hierarchical Teams with Distributed Expertise’. DTIC Document, 1993. http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA284683.

• Johnston, Joan H., Stephen M. Fiore, Carol Paris, and C. A. Smith. ‘Application of Cognitive Load Theory to Developing a Measure of Team Decision Efficiency’. DTIC Document, 2002. http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA525820.

Page 79: Teams and monoliths - Matthew Skelton - LondonCD 2016

thank you

Matthew Skelton@matthewpskelton

skeltonthatcher.com