Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
How to break apart a
monolithic system safely
without destroying your team
Matthew Skelton, Skelton Thatcher Consulting
@m...
Today
Cognitive load for teams
‘Monolith’
Code Forensics
Team-first boundaries
Monolith-splitting recipe
For now, let’s forget:
Microservices
CQRS / Event Sourcing
Queues
(Architectural changes)
Continuous Delivery / etc…
30+ organisations
UK, US, EU, India, China
How to break apart a
monolithic system safely
without destroying your
team
Safer, more rapid changes
to software systems
(Business Agility)
A ‘team-first’ approach to
software subsystem
boundaries
TEAM
TEAM
capabilities
appetite & aptitude
understanding
responsibilities
Conway’s Law
‘Reverse Conway’
Tobbe Gyllebring (@drunkcod)
homomorphic force
(#Conway  #Yawnoc)
HT @allankellynet
(same) (shape)
Cognitive load for teams
We have SCIENCE!
Cognitive load for teams
• Driskell et al, 1999 ‘Does Stress Lead to a Loss of Team Perspective?’
Group Dynamics: Theory, ...
“stress impacts team
performance … by narrowing
or weakening the team-level
perspective required for
effective team behavi...
‘Monolith’
“Don’t start with a monolith
when your goal is a
microservices architecture”
– Stefan Tilkov, innoQ
http://martinfowler.co...
“Start monolithic and extract”
– Tammer Saleh, Pivotal
https://www.infoq.com/presentations/cloud-anti-patterns
A ‘team-first’ approach to
software subsystem
boundaries
Types of software monoliths
•Application monolith
•Joined at the DB
•Monolithic releases (coupled)
•Monolithic thinking (s...
Application
monolith
Single block of code
Deployed as a unit
Joined at
the DB
Difficult to change
separately (but not
impossible)
Risk is (probably)
elevated
Chris Collyer, http://www...
Monolithic
releases
Smaller components
bundled together into a
‘release’
Monolithic
thinking
‘One-size-fits-all’ for
teams
Assumption that
minimising variation is
A Good Thing
Dangers of splitting a
monolith
•Reduced domain consistency (UX,
Architecture, Data)
•Data duplication (unintentional)
•Ad...
Splitting a
monolith
Reiner Flassig - CC BY-SA 2.0 de - Wikipedia
Choose the right
technique for splitting
Understand the ...
‘Fracture planes’ for code
•Business domain bounded context
•Regulatory compliance
•Change cadence
•Risk
•Performance isol...
Code Forensics
Forensics
Your Code as a
Crime Scene
Adam Tornhill
Adam Tornhill
Code, Crime, Complexity:
Analyzing software with
forensic psychology
Adam Tornhill
TEDxTrondheim
youtube.com...
‘Code Maat’ tool
Adam Tornhill, http://www.adamtornhill.com/articles/crimescene/codeascrimescene.htm
Code City plus Code Maat forensics
Beware of badly-named
subsystems
"information-poor abstract
names are magnets for extra
[unwanted] responsibilities"
– Adam Tornhill
p.185, Your Code as a ...
Team-first boundaries
DevOpsTopologies.com
Team types
Component team
Platform / ’substrate’ team
Supporting / ‘productivity’ team
Product/Feature team
Team types
devopstopologies.com
Component team
Platform / ’substrate’ team
Supporting / ‘productivity’ team
Product/Featur...
Code repositories
Align repositories to subsystem
boundaries
Avoid monolithic-y repos like TFS*
* Don’t get me started on ...
Code repositories
Repo 1 Build Test Deploy Run
Repo 2 Build Test Deploy Run
Repo 3 Build Test Deploy Run
“You can use a monorepo only if
your organisation has published a
scientific paper on Computer
Science. Otherwise, use one...
Find natural or available
‘fracture planes’ for splitting
a monolith
(with the team in mind)
Monolith-splitting recipe
Tried and tested!
How to break apart a monolith
without destroying your team
1. Instrument the monolith – logging
2. Grok data flows and fau...
Instrument the monolith
Instrument the monolith
Instrument the monolith
Instrument the monolith
Correlation ID Logs
Event ID
use logging as a
channel/vector to
make distributed systems
more testable
use logging as a
channel/vector to
make distribu...
Grok data flows and fault responses
Grok data flows and fault responses
Correlation ID
Event ID
Unexpected
collaborating
subsystems
Undetected
fault condition
Grok data flows and fault responses
Correlation ID
Event ID
Adjust
subsystem
boundaries
Fix poor fault
responses
runbooktemplate.info
Run Book dialogue sheets
Align teams to available segments
Align teams to available segments
Align teams to available segments
Map to
business
domain
Align teams to available segments
Identify likely
components
or ‘platform’
elements
Split off segments one-by-one
Split off segments one-by-one
Split off segments one-by-one
Separate:
- Builds
- Infrastructure
- Deployments
- Versions
- Lifecycle
Team needs / responsibilities /
capabilities come first
How to break apart a monolith
without destroying your team
1. Instrument the monolith – logging
2. Grok data flows and fau...
How to break apart a monolith
without destroying your team
1. Instrument the monolith – logging
2. Grok data flows and fau...
Further material
Books & articles
• Working Effectively with Legacy Code, by Michael Feathers
• Building Microservices by Sam Newman
• ‘Man...
Training
• From Monolith to Microservices (online training) – Sam Newman,
author of Building Microservices
http://www.orei...
Talks & slides
• What is cognitive load theory and why should you care?, by Jo
Pearce - http://www.slideshare.net/JoPearce...
Research papers
• Driskell, James E., Eduardo Salas, and Joan Johnston. ‘Does Stress Lead to a Loss of Team
Perspective?’ ...
thank you
Matthew Skelton
@matthewpskelton
skeltonthatcher.com
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Teams and monoliths - Matthew Skelton - LondonCD 2016
Upcoming SlideShare
Loading in …5
×

Teams and monoliths - Matthew Skelton - LondonCD 2016

0 views

Published on

How to break apart a monolithic system safely without destroying your team

Moving from a monolith to microservices can be daunting. How do we choose the right bounded contexts? How small should services be? Which teams should get which services? And how do we keep things from falling apart?

By starting with the needs of the team, we can infer some useful heuristics for evolving from a monolithic architecture to a set of more loosely coupled services.

Matthew Skelton is co-founder of Skelton Thatcher Consulting / @matthewpskelton

Published in: Software
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Njce! Thanks for sharing.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Teams and monoliths - Matthew Skelton - LondonCD 2016

  1. 1. How to break apart a monolithic system safely without destroying your team Matthew Skelton, Skelton Thatcher Consulting @matthewpskelton LondonCD meetup: 11 Oct 2016 #londoncd
  2. 2. Today Cognitive load for teams ‘Monolith’ Code Forensics Team-first boundaries Monolith-splitting recipe
  3. 3. For now, let’s forget: Microservices CQRS / Event Sourcing Queues (Architectural changes)
  4. 4. Continuous Delivery / etc… 30+ organisations UK, US, EU, India, China
  5. 5. How to break apart a monolithic system safely without destroying your team
  6. 6. Safer, more rapid changes to software systems (Business Agility)
  7. 7. A ‘team-first’ approach to software subsystem boundaries
  8. 8. TEAM
  9. 9. TEAM capabilities appetite & aptitude understanding responsibilities
  10. 10. Conway’s Law
  11. 11. ‘Reverse Conway’ Tobbe Gyllebring (@drunkcod)
  12. 12. homomorphic force (#Conway  #Yawnoc) HT @allankellynet (same) (shape)
  13. 13. Cognitive load for teams
  14. 14. We have SCIENCE!
  15. 15. 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.
  16. 16. “stress impacts team performance … by narrowing or weakening the team-level perspective required for effective team behavior.” – Driskell et al, 1999 Group Dynamics: Theory, Research, and Practice 1999, Vol. 3, No. 4,291-302
  17. 17. ‘Monolith’
  18. 18. “Don’t start with a monolith when your goal is a microservices architecture” – Stefan Tilkov, innoQ http://martinfowler.com/articles/dont-start-monolith.html
  19. 19. “Start monolithic and extract” – Tammer Saleh, Pivotal https://www.infoq.com/presentations/cloud-anti-patterns
  20. 20. A ‘team-first’ approach to software subsystem boundaries
  21. 21. Types of software monoliths •Application monolith •Joined at the DB •Monolithic releases (coupled) •Monolithic thinking (standardisation) …
  22. 22. Application monolith Single block of code Deployed as a unit
  23. 23. 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
  24. 24. Monolithic releases Smaller components bundled together into a ‘release’
  25. 25. Monolithic thinking ‘One-size-fits-all’ for teams Assumption that minimising variation is A Good Thing
  26. 26. 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
  27. 27. Splitting a monolith Reiner Flassig - CC BY-SA 2.0 de - Wikipedia Choose the right technique for splitting Understand the nature of the monolith
  28. 28. ‘Fracture planes’ for code •Business domain bounded context •Regulatory compliance •Change cadence •Risk •Performance isolation •User personas •Team location
  29. 29. Code Forensics
  30. 30. Forensics Your Code as a Crime Scene Adam Tornhill
  31. 31. Adam Tornhill Code, Crime, Complexity: Analyzing software with forensic psychology Adam Tornhill TEDxTrondheim youtube.com/watch?v=qJ_hplxTYJw
  32. 32. ‘Code Maat’ tool
  33. 33. Adam Tornhill, http://www.adamtornhill.com/articles/crimescene/codeascrimescene.htm Code City plus Code Maat forensics
  34. 34. Beware of badly-named subsystems
  35. 35. "information-poor abstract names are magnets for extra [unwanted] responsibilities" – Adam Tornhill p.185, Your Code as a Crime Scene
  36. 36. Team-first boundaries
  37. 37. DevOpsTopologies.com
  38. 38. Team types Component team Platform / ’substrate’ team Supporting / ‘productivity’ team Product/Feature team
  39. 39. Team types devopstopologies.com Component team Platform / ’substrate’ team Supporting / ‘productivity’ team Product/Feature team
  40. 40. Code repositories Align repositories to subsystem boundaries Avoid monolithic-y repos like TFS* * Don’t get me started on TFS, grrr…
  41. 41. Code repositories Repo 1 Build Test Deploy Run Repo 2 Build Test Deploy Run Repo 3 Build Test Deploy Run
  42. 42. “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 Skelton LondonCD meetup group, 11 Oct 2016 
  43. 43. Find natural or available ‘fracture planes’ for splitting a monolith (with the team in mind)
  44. 44. Monolith-splitting recipe Tried and tested!
  45. 45. How to break apart a monolith without destroying your team 1. Instrument the monolith – logging 2. Grok data flows and fault responses 3. Align teams to available segments 4. Split off segments one-by-one
  46. 46. Instrument the monolith
  47. 47. Instrument the monolith
  48. 48. Instrument the monolith
  49. 49. Instrument the monolith Correlation ID Logs Event ID
  50. 50. use logging as a channel/vector to make distributed systems more testable use logging as a channel/vector to make distributed systems more testable
  51. 51. Grok data flows and fault responses
  52. 52. Grok data flows and fault responses Correlation ID Event ID Unexpected collaborating subsystems Undetected fault condition
  53. 53. Grok data flows and fault responses Correlation ID Event ID Adjust subsystem boundaries Fix poor fault responses
  54. 54. runbooktemplate.info Run Book dialogue sheets
  55. 55. Align teams to available segments
  56. 56. Align teams to available segments
  57. 57. Align teams to available segments Map to business domain
  58. 58. Align teams to available segments Identify likely components or ‘platform’ elements
  59. 59. Split off segments one-by-one
  60. 60. Split off segments one-by-one
  61. 61. Split off segments one-by-one Separate: - Builds - Infrastructure - Deployments - Versions - Lifecycle
  62. 62. Team needs / responsibilities / capabilities come first
  63. 63. How to break apart a monolith without destroying your team 1. Instrument the monolith – logging 2. Grok data flows and fault responses 3. Align teams to available segments 4. Split off segments one-by-one
  64. 64. How to break apart a monolith without destroying your team 1. Instrument the monolith – logging 2. Grok data flows and fault responses 3. Align teams to available segments 4. Split off segments one-by-one * plus a few other things
  65. 65. Further material
  66. 66. 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/
  67. 67. Training • From Monolith to Microservices (online training) – Sam Newman, author of Building Microservices http://www.oreilly.com/live-training/from-monolith-to- microservices.html
  68. 68. 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
  69. 69. 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.
  70. 70. thank you Matthew Skelton @matthewpskelton skeltonthatcher.com

×