Saturday, August 10, 2019

GOTO 2016 • What I Wish I Had Known Before Scaling Uber to 1000 Services • Matt Ranney

Here is the link.

To Keep up with Uber's growth, we've embraced microservices in a big way. This has led to an explosion of new services, crossing over 1,000 production services in early March 2016. Along the way we've learned a lot, and if we had to do it all over again [...]

5:31
Microservice
immutable?
Append only?

Why microservices?

Now you have a distributed system
Eveything is an RPC
what if it breaks?

Less obvious costs
Everything is a tradeoff
You can build around problems
Might trade complexity for politics
You get to keep your biases

Languages

Hard to share code
Hard to move between teams
WIWK: Fragments the culture

Fragment the culture - human behavior - really cost

RPC
HTTP/REST gets complicated
JSON needs a schema
RPCs are slower than PCs
WIWIK: servers are not browsers


Performance
Doesn't matter until it does
Probably want at least simple perf requirements
WIWIK: "good" not required, but "known" is

FANOUT

overall latency >= latency of slowest
1ms avg, 1000ms p99
use 1:1% at least 1000ms
use 100: 63% at least

Tracing
Lots of ways to get this
Best way to understand fanout

Tracing 
Probably want sampleing
WIWIK: cross-lang context propagation

LOAD TESTING

Need to test against production
Without breaking metrics
Preferably all the time
WIWIK: all systems need to handle "test" traffic

MIGRATIONS
old stuff still has to work
What happened to immutable?
WIWIK: mandates are bad







No comments:

Post a Comment