Distributed systems are different because they fail often.
Writing robust distributed systems costs more than writing robust single-machine systems.
Robust, open source distributed systems are much less common than robust, single-machine systems.
Coordination is very hard. Avoid coordinating machines wherever possible.
If you can fit your problem in memory, it’s probably trivial.
“It’s slow” is the hardest problem you’ll ever debug.
Implement backpressure throughout your system.
Find ways to be partially available.
Metrics are the only way to get your job done.
Use percentiles, not averages.
Learn to estimate your capacity.
Feature flags are how infrastructure is rolled out.
Choose id spaces wisely.
Exploit data-locality.
Writing cached data back to storage is bad.
Computers can do more than you think they can.
Use the CAP theorem to critique systems.
Extract services.
(Full Story: http://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/ )


January 14, 2013 