Microservices @
Spotify
Kevin Goldsmith
VP Engineering
@kevingoldsmith
Let’s say I wanted to
build a large application
Some requirements
‣ Mustscaletomillionsofusers
‣ Supportmultipleplatforms
‣ Handlecomplexbusinessrules
‣ Competitiveinafastmovingmarket
‣ ReactQuickly
‣ Out-innovate
A product like this
A product like this
‣ 75+MillionMonthlyActiveUsers
‣ 58Countries
‣ >20,000songsaddedperday
‣ >2Bplaylists
‣ Incrediblycomplexbusinessrules
‣ Lotsofcompetition
Howdoyousupport
theserequirements
whilemovingfast
andinnovating?
Solution
Autonomous full-stack 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"
Server
Core Library
Platform Platform Platform Platform
Infrastructure
Challenges
Synchronization
Client UX implementation
Core Library Implementation
depends on
depends on
depends onServer Implementation
Infrastructure Implementation
Server
Core Library
Platform Platform Platform Platform
Infrastructure
platforms
Server
Core Library
Platform Platform Platform Platform
Infrastructure
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
FeatureTeam
What this looks like at Spotify
‣ 90+teams
‣ 600+Developers
‣ 5Developmentoffices
‣1Product
Full-stack autonomous
teams
Requires you to structure your
application in loosely coupled parts
Services
LoadBallancer
Microservices yay!
Easierto scale based on real-world bottlenecks
Microservices yay!
Easierto test
Microservices yay!
Easierto deploy
Microservices yay!
Easierto monitor
Microservices yay!
Can be versioned independently
Microservices yay!
Are less susceptible to large failures
Microservices boo!
are harderto monitor
Microservices boo!
need good documentation / discoverytools
Microservices boo!
create increased latency
What does this look like at Spotify?
‣ 810activeservices
‣ ~10Systemspersquad
‣ ~1.7Systemsperpersonwithaccessto
productionservers
‣ ~1.15Systemspermemberof
Technology
http://spotify.github.io/apollo/
Questions
twitter: @kevingoldsmith
(yes, we’re hiring)

Microservices at Spotify