14 System Design Concepts Every Developer Should Know

Shortcast over Coffee
4 min readOct 22, 2023
Photo by Arnold Francisca on Unsplash

As developers, most of the code we write on a daily basis involves working with small-scale systems and applications. However, as you grow in your career, you’ll inevitably need to work with large, complex systems that require more advanced architectures.

Understanding core system design concepts is crucial for building robust, scalable applications and passing system design interview rounds. This guide will walk through 20 essential system design topics using easy-to-grasp examples. Master these and you’ll be well on your way to levelling up as a developer!

Vertical vs Horizontal Scaling

Let’s say you have a single server running your web application. As traffic grows, the server will eventually become overloaded and struggle to fulfill requests in a timely manner.

The easiest way to scale is to add more resources like RAM or upgrade the CPU. This is known as vertical scaling. However, it’s limited in how much you can scale.

A more powerful approach is to add more servers (replicas) that can each handle a subset of requests. This horizontal scaling allows you to scale out infinitely just by adding cheap commodity servers.

Horizontal scaling also adds redundancy and fault tolerance. If one server goes down…

--

--