System Design

Learn how to design large-scale systems. System design is a broad topic and there is a vast amount of resources scattered on the web. The idea of this repository is to organize a collection of good material about the subject.

Step 1: Review the scalability video lecture

*DATE: 2018/09/23*

Scalability Lecture at Harvard

Topics covered:

  • Vertical scaling
  • Horizontal scaling
  • Caching
  • Load balancing
  • Database replication
  • Database partitioning


Axel is a hell of a good student. LOL. If you watch, you'll understand.

The content of this class was not completely new to me, however the point the professor was trying to make is very valid. You started with a problem related to scalability and all of the sudden you have this increasingly amount of problems to deal with. The bottom line here is the good'old there is no free lunch theorem. The walk through how load balancing works was very nice and I want to see the previous lectures where he explains in more detail how the DNS routing works.

Important remarks

  • Avoid complexity
  • Pay attention to single point of failures
  • Work with redundancy
  • Horizontal scaling comes with a good price to pay
  • When you are done, look for some free-optiomizations such as compiling your code, memory caching…
  • Hire Axel!