TeamTopologies.com
@TeamTopologies
Forget ‘Monoliths vs Microservices’; focus on
Team Cognitive Load
Manuel Pais
co-author of Team Topologies
@manupaisable
DevOps Perth - 9 Sep 2020
2
Manuel Pais
Independent IT organizational consultant and trainer
Ex-dev, ex-build manager, ex-tester, ex-QA lead
LinkedIn instructor on Accelerating Continuous Delivery
Twitter: @manupaisable
LinkedIn: manuelpais
Team Topologies
3
Organizing business and
technology teams for fast flow
Matthew Skelton & Manuel Pais
IT Revolution Press
Order via stores worldwide: teamtopologies.com/book
4
Team Cognitive Load
Team-First Approach
Case Studies
Getting started
Team Cognitive Load
5
6
“Start with monolith and
extract microservices.”
- Tammer Saleh
7
https://www.infoq.com/presentations/cloud-anti-patterns
“Don’t start with a
monolith when your goal is
a microservices
architecture”
- Stefan Tilkov
8
http://martinfowler.com/articles/dont-start-monolith.html
“If you can't build a
monolith, what makes you
think microservices are
the answer?”
- Simon Brown
9
http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html
10
WTF?!?!
* where to focus?
“Software that
fits in your head”
- Daniel Terhorst-North
11
https://speakerdeck.com/tastapod/microservices-software-that-fits-in-your-head?slide=62
12
“Software that
fits in our heads”
4 key metrics: ‘Accelerate’
13
lead time
deployment frequency
mean time to restore (MTTR)
change fail percentage
Software that is ‘too big for
our heads’ works against
organizational agility
14
COGNITIVE LOAD:
The total amount of
mental effort being used
in the working memory
- John Sweller
15
Intrinsic
Extraneous
Germane
16
“How are
classes
defined in
Java?”
Intrinsic
Extraneous
Germane
17
“How do I
deploy this
app,
again?”
Intrinsic
Extraneous
Germane
18
“How do
bank
transfers
work?”
Intrinsic (skills)
Extraneous (mechanism)
Germane (domain focus)
19
(Intrinsic)
] Extraneous [
Germane
20
More: ‘Hacking Your Head’
21
Jo Pearce
(@jdpearce)
https://www.slideshare.net/JoPearce5/hacking-your-head-managing-information-overload-extended
Limit the size of software
services/products to the
cognitive load that the
team can handle.
22
23
“Software that
fits in our heads”
24
Team cognitive load as
a key consideration for
org decisions
Team-First Approach
35
A ‘team-first’
approach to delivery
of digital products
36
Team size ≲ 9 *
* possibly 15
37
Well-chosen streams
& domain boundaries
39
40
41
42
Feature
43
Types of streams
● a service
● a set of features
● a user persona or user journey
● a compliance standard
● a specific market or geography
● ...
Developer Experience
#DevEx
45
Operator Experience
#operability
46
Modern Platform
as a Product
47
4 fundamental topologies
48
Stream-aligned team
Enabling team
Complicated Subsystem team
Platform team
4 fundamental topologies
49
Flow of change
3 core interaction modes
50
Flow of change
X-as-a-Service
Facilitating
Collaboration
51
Rapid flow of change
52
Rapid feedback from
running systems
53
54
55
Handovers (can) kill flow
56
Each service must be fully
owned by a team with
sufficient cognitive capacity
to build and operate it.
57
Team ownership must include:
Releasability
Testability
Operability / Supportability
58
59
Case Studies
63
“...trend analysis, simulations, rapid
prototyping, scenario planning,
gaming, environmental scanning
… give clues to the context and
competitive environment.”
- Dr. Naomi Stanford,
“Guide to Organisation Design” (The Economist)
64
CaseStudy
65
CaseStudy
66
2016
(early)
CaseStudy
67
2016
(late)
CMS
CaseStudy
Framework
68
2017
(early)
CMS
Products
CaseStudy
Framework
69
Products
2017
(late)
CMS
CaseStudy
Framework
70
Products
2017
(early)
CMS
Team became too large
⇔
System became monolithic
Blocked flow of work across streams
71
Listen to ‘triggers for evolution’
❏ Software grows too large
❏ Over specialization (Brent)
❏ Increased coordination needs
72
CaseStudy
73
CaseStudy
74
CD Enablement
Infrastructure
Automation
Test
Automation
Build & CI
Support
CaseStudy
75
CD Enablement Infrastructure
Automation
Test
Automation
Build & CI
Support
It’s not always about software size...
More broadly, align size and number
of domains of responsibility
with team cognitive capacity.
76
Aim for teams with high cohesion internally
(think autonomy, mastery & purpose)
Aim for low bandwidth comms
between smaller teams
77
Listen to ‘triggers for evolution’
❏ Awkward interactions
❏ People not invested, burn out
❏ Frequent context switching
78
Getting started
79
Getting started
80
Explicit cognitive load
How well can the team as a unit “grok”
the systems they own and develop?
Explicit cognitive load
81
82
Push some things into a Platform?
Explicit cognitive load
83
Are skills or capabilities missing?
Explicit cognitive load
84
Getting started
85
Explicit cognitive load
Misaligned work streams
Team Interactions
Thinnest Viable Platform
Does it frequently take three or more
teams to change a single user journey?
Misaligned work streams
86
Are development teams assumed to
know and comply with regulations?
Misaligned work streams
87
Getting started
89
Team interactions
Do we know which teams we need to
interact with? What outcomes do we
expect from the interaction?
Collaboration, X-as-a-Service, Facilitating
Team Interactions
90
Getting started
91
Explicit cognitive load
Misaligned work streams
Team interactions
Team Topologies
92
Organizing business and
technology teams for fast flow
Matthew Skelton & Manuel Pais
IT Revolution Press
Order via stores worldwide: teamtopologies.com/book
TeamTopologies.com
@TeamTopologies
teamtopologies.com/news
Team Topologies
Essentials Training
Oct 7, 8, 14, 15 (APAC friendly)
Details: teamtopologies.com/events
4 half-day online sessions with Manuel Pais
10% discount code TTDEVOPSPERTH10
Resources
97
teamtopologies.com/resources
(links, slides, video)
github.com/teamtopologies
(templates, assessments, etc)
TeamTopologies.com
@TeamTopologies
Sign up for news and tips:
TeamTopologies.com
Thank you!
100
Matthew Skelton, Conflux
@matthewpskelton
Manuel Pais, Independent
@manupaisable
teamtopologies.com

Forget Monoliths vs Microservices - Focus on Team Cognitive Load @ DevOps Perth Meetup, Sep 2020