SlideShare a Scribd company logo
Apportioning
Monoliths
Kevin Goldsmith
Let’s say I wanted to
build a large application
Some requirements
‣ Mustscaletomillionsofusers
‣ Supportmultipleplatforms
‣ Handlecomplexbusinessrules
‣ Competitiveinafastmovingmarket
‣ ReactQuickly
‣ Out-innovate
A product like this
Apportioning Monoliths
A product like this
‣ 60MillionMonthlyActiveUsers
‣ 58Countries(sorry,notBelarusyet)
‣ >20,000songsaddedperday
‣ >1.5Bplaylists
‣ Incrediblycomplexbusinessrules
‣ Lotsofcompetition
A product like this
‣ 60MillionMonthlyActiveUsers
‣ 58Countries(sorry,notBelarusyet)
‣ >20,000songsaddedperday
‣ >1.5Bplaylists
‣ Incrediblycomplexbusinessrules
‣ Lotsofcompetition
Howdoyousupport
theserequirements
whilemovingfast
andinnovating?
Agile!
Product Release Calendar
Product Release Calendar
Spec
Product Release Calendar
Spec Code
Product Release Calendar
Spec Code Test
Product Release Calendar
Spec Code Test Release
Product Release Calendar
Spec Code Test Release
Product Release Calendar
Spec Code Test Release
ProductInnovation
Product Release Calendar
Spec Code Test Release
ProductInnovation
Product Release Calendar
Spec Code Test Release
ProductInnovation
Product Release Calendar
Spec Code Test Release
ProductInnovation
Product Release Calendar
Spec Code Test Release
ProductInnovation
Product Release Calendar
Spec Code Test Release
ProductInnovation
Product Release Calendar
Spec Code Test Release
ProductInnovation
“To improve is to change;
to be perfect is to change
often”
Winston Churchill
I thought you
said you wanted
to build a large
application?
Scaling
Agile
Challenges
Challenges
Synchronization
Challenges
Synchronization
{
Scrum of scrums
PSI/Release planning
Cadence
Challenges
Synchronization
Alignment
Solution
Autonomous Teams
Autonomous
adjective
au·ton·o·mous - ȯ-ˈtä-nə-məs
(of a country or region) having the freedom to govern itself or control its own affairs.
"the federation included sixteen autonomous republics"
having the freedom to act independently.
"school governors are legally autonomous"
synonyms: self-governing, independent, sovereign, free, self-ruling, self-
determining, autarchic; self-sufficient
"an autonomous republic"
Autonomous
adjective
au·ton·o·mous - ȯ-ˈtä-nə-məs
(of a country or region) having the freedom to govern itself or control its own affairs.
"the federation included sixteen autonomous republics"
having the freedom to act independently.
"school governors are legally autonomous"
synonyms: self-governing, independent, sovereign, free, self-ruling, self-determining, autarchic;
self-sufficient
"an autonomous republic"
Challenges
Synchronization
Alignment
Server
Core Library
Platform Platform Platform Platform
Infrastructure
“Organizations which design systems ...
are constrained to produce designs
which are copies of the communication
structures of these organizations”
Melvin Conway
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
VP
client
director
client
manager
client
manager
client
manager
client
manager
server
director
core
manager
infra
director
server
manager
server
manager
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Inverse Conway Maneuver
evolve your team and organizational
structure to promote your desired
architecture.
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Server
Core Library
Platform Platform Platform Platform
Infrastructure
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
Full-stack autonomous
teams
Full-stack autonomous
teams
increases the learning opportunities
Throughput over
velocity
Full-stack autonomous
teams
Works well for steady state of
development
Full-stack autonomous
teams
Need to shift for the step-change
innovation projects towards
synchronization (but not completely)
What this looks like at Spotify
‣ 70+teams
‣ 600+Developers
‣ 5Developmentoffices
‣1Product
Full-stack autonomous
teams
Requires you to structure your
application in loosely coupled parts
Loosely
Coupled
Architecture
Server
Apportioning Monoliths
Apportioning Monoliths
Apportioning Monoliths
Apportioning Monoliths
LoadBallancer
Apportioning Monoliths
Apportioning Monoliths
Apportioning Monoliths
Microservices
‣ Easiertoscalebasedonreal-world
bottlenecks
‣ Easiertotest
‣ Easiertodeploy
‣ Versionindependently
‣ Lesssusceptibletolargefailures
‣ Hardertomonitor
‣ Needgooddocumentation
Client
Apportioning Monoliths
Apportioning Monoliths
Apportioning Monoliths
Shared Frameworks
Shared Frameworks
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
Shared Frameworks
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
App Release Team
Shared Frameworks
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
App Release Team
Common UI Components
UI Interface Guidelines
SharedTesting Frameworks
Shared Frameworks
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
App Release Team
IntegrationTesting
App Submittal
UI Consistency Validation
Shared Frameworks
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
App Release Team
Shared DevelopmentTree
Best Practice Sharing
Questions
twitter: @kevingoldsmith

More Related Content

Apportioning Monoliths