An introduction to distributed systems (2017)
github.com
github.com
Speaking about scale and distributed systems: AWS specific resources I find interesting from their EdgeEngineering/NetEng teams (I haven't seen many other service teams in AWS openly share as much about design as them):
- https://aws.amazon.com/blogs/architecture/category/networkin... series of articles on Route53's 100% data-plane availability architecture [1].
- https://www.youtube.com/watch?v=O8xLxNje30M colmmacc [2] (seems to be the eng behind AWS HyperPlane [3][4]?) on 10 design patterns for building resilient systems.
- https://www.youtube.com/watch?v=swQbA4zub20 Peter Vosshall (co-creator of Dynamo [5]) presenting "cell-based" design in-use at AWS.
----
[0] https://dataintensive.net/
[1] https://www.slideshare.net/AmazonWebServices/under-the-hood-...
[2] https://news.ycombinator.com/user?id=colmmacc
[3] https://atscaleconference.com/videos/networking-scale-2018-l...
[4] https://www.youtube.com/watch?v=dfEcd3zqPOA&feature=youtu.be...
[5] Decandia, G.; Hastorun, D.; Jampani, M.; Kakulapati, G.; Lakshman, A.; Pilchin, A.; Sivasubramanian, S.; Vosshall, P.; Vogels, W. (2007). "Dynamo: Amazon's Highly Available Key-value Store".
[6] Bonus: The SRE Book https://landing.google.com/sre/sre-book/toc/index.html
You can determine whether the process to which you need to communicate is local or remote if desired, but it's unusual to do so.
His tool Jepsen is the gold standard for testing the consistency guarantees of distributed databases.
This issue is so wide spread in the industry...it makes me sad.