System Design Nuggets

System Design Nuggets

Stop Memorizing System Design Solutions — Learn the 10 Building Blocks Instead

Struggling with system design interviews? You don't need to memorize. Learn the 10 to 12 components that power every large-scale system and start building with confidence.

Arslan Ahmad's avatar
Arslan Ahmad
Apr 09, 2026
∙ Paid

In this post, we will cover:

  • Why memorizing designs always fails

  • Core building blocks every system uses

  • How each component actually works

  • Assembling blocks into real designs

  • Training your pattern-matching muscle


There is a moment that most people preparing for system design interviews know too well. You sit down, open a YouTube video titled “Design Twitter,” and start scribbling notes. You write down every detail. The database schema.

The fan-out strategy. The exact caching layer. You feel productive. You feel ready.

Then someone asks you to design something slightly different. “Design a music streaming app.” And suddenly, the notes are useless. The memorized Twitter design doesn’t translate. The brain goes blank.

This happens because the approach was wrong from the start.

Memorizing solutions is like memorizing answers to math problems without understanding how multiplication works. It might help you pass one specific question, but it falls apart the second the numbers change.

The problem is not a lack of effort.

The problem is that the effort was pointed in the wrong direction.


Why Memorization Breaks Down

System design questions are open-ended on purpose.

Interviewers are not looking for a perfect, textbook answer. They want to see thinking. They want to watch someone reason through tradeoffs, ask clarifying questions, and build something that makes sense for the given constraints.

When you memorize a solution, you skip all of that reasoning. You jump straight to the answer.

And the moment the interviewer throws a curveball (”What if this needs to support 10 million concurrent users?”), the memorized answer crumbles.

Here is the truth that changes everything: almost every large-scale system is built from the same 10 to 12 components.

The designs look different on the surface, but underneath, they are assembled from the same set of parts.

Once you understand those parts, you stop memorizing. You start building.


The Building Blocks You Actually Need to Know

There are roughly 10 to 12 core components that show up in nearly every system design.

Not dozens. Not hundreds.

Just about 10 to 12.

That’s it.

Let’s walk through each one.

Not just what it is, but why it exists and when you would reach for it.

1. Load Balancer

A load balancer sits in front of your servers and distributes incoming traffic across them.

Without a load balancer, all requests hit one server. That server gets overwhelmed, slows down, and eventually crashes. A load balancer spreads the work so no single server gets crushed.

When to use it: Basically always. Any system that expects more than a handful of users needs one.

2. API Gateway

An API gateway is the single entry point for all client requests. It sits between the users and your backend services. It handles things like authentication (checking if a user is logged in), rate limiting (stopping someone from making 10,000 requests per second), and routing (sending requests to the right service).

Without it, every service needs to handle authentication, rate limiting, and logging on its own. That’s a lot of duplicated work and a lot of potential security holes.

When to use it: Whenever you have multiple backend services that clients need to talk to.

3. Application Server

This is where your actual business logic lives. When a user clicks “place order” or “send message,” the application server is the thing that processes that request. It runs the code, talks to the database, and sends back a response.

It is the brain of the system. Everything else supports it.

When to use it: Every system has at least one. Most have several, each handling a different part of the product.

4. Database

A database stores your data permanently. User profiles, orders, messages, settings. If the server restarts, the data is still there.

There are two main types. Relational databases (like PostgreSQL or MySQL) store data in structured tables with rows and columns. They are great when your data has clear relationships and you need strong consistency. NoSQL databases (like MongoDB or Cassandra) are more flexible. They handle unstructured or semi-structured data well and can scale horizontally more easily.

When to use which: If you need transactions and strict consistency (like financial data), go relational. If you need massive scale and flexible schemas (like user activity logs), consider NoSQL.

5. Cache

A cache is a fast, temporary storage layer. It stores copies of data that gets requested a lot, so the system doesn’t have to hit the database every single time.

Databases are relatively slow. Reading from a cache (like Redis or Memcached) can be 10x to 100x faster. For data that is read way more often than it is written, caching is a game changer.

When to use it: When you have “hot” data that gets requested frequently. User profiles, trending content, session data. If the same query hits your database thousands of times per minute, that data belongs in a cache.

6. Message Queue

A message queue is a system that lets different parts of your application communicate asynchronously. One service puts a message into the queue. Another service picks it up and processes it later. The two services don’t need to be available at the same time.

This post is for paid subscribers

Already a paid subscriber? Sign in
© 2026 Arslan Ahmad · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture