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