Fundamentals

Now that you've designed a solid abstract architecture, the next step is to take it to scale. If you've never built a large-scale system, this task may seem a little daunting.

Where do you start?

There is a common set of scalability principles that you need to know. Knowing what they are, understanding how they are used, and being able to discuss their pros and cons is what scalability at interviews is all about.

How do you build up that intuition?

The first thing we’d recommend you to do is watch this video:

In it, professor David Malan from Harvard is teaching a huge part of the intuition you will need to have when it comes to scalability. So start here, watch the video and make sure you understand it well.

After watching it, you should have a good fundamental understanding of the following concepts:

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

Next, we recommend reading this great 4-post “Scalability for Dummies” tutorial (part 1 | part 2 | part 3 | part 4). It reiterates on some of the topics mentioned above, but also introduces several important new concepts:

  • Using NoSQL instead of scaling a relational database
  • Being asynchronous

You would also know how to deal with the two major bottlenecks: handling a lot of users, and handling a lot of data.

Another quick read that will be useful as a good introduction to scalability are these two tutorials:

Finally, you may want to read this tutorial on Database sharding. It's a very common and powerful way of database scaling (as you learned from prof. Malan's lecture).

What's next?

Now you're ready to start looking at some real-life architectures to see how these principles are applied in practice.