A somewhat-curated reading list

  • Designing Data-Intensive Applications: The Big Ideas behind Reliable, Scalable, and Maintainable Systems.
  • Network Programming with Go: Code Secure and Reliable Network Services from Scratch
  • Beej’s Guide to Network Programming Using Internet Sockets
  • Borg, Omega, and Kubernetes: Lessons learned from three container-management systems over a decade
  • On the Criteria To Be Used in Decomposing Systems into Modules
  • Dynamo: Amazon’s Highly Available Key-value Store
  • On Designing and Deploying Internet-Scale Services
  • Fallacies of Distributed Systems
  • Learning Containers From The Bottom Up
  • Fsync-gate
  • The Chubby lock service for loosely-coupled distributed systems
  • Microservice architecture style # Best Practices
  • How NAT traversal works
  • The perils of the “real” client IP
  • Omega: flexible, scalable schedulers for large compute clusters
  • Large-scale cluster management at Google with Borg
  • Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
  • 20 Things I’ve Learned in my 20 Years as a Software Engineer
  • The Google File System
  • Packet Order Matters! Improving Application Performance by Deliberately Delaying Packets
  • Time, Clocks, and the Ordering of Events in a Distributed System
  • Concurrent Programming for Scalable Web Architectures