Understanding Compute, Servers, Clients, Memory, and Storage

Every time you interact with a software application—opening a website, tapping a button in a mobile app, or refreshing a dashboard—something is being computed somewhere.
As software systems grow in complexity and scale, understanding where computation happens becomes foundational to system design. It impacts performance, cost, scalability, and even user experience.
In this post, we’ll build an intuitive mental model for:
This foundation will set us up for future topics like cloud computing and serverless architectures, which we’ll explore in upcoming posts.
Any time you interact with a software system, there is some kind of computation happening behind the scenes.
Think of it like the human brain:
Computers work the same way. They accept inputs, run calculations or logic, and produce outputs.
This is true whether you’re using:
At a very fundamental level, a calculator is also a computer. It takes inputs, computes, and returns results.
If laptops and phones are computers, then what exactly is a server?
A server is just a computer—but a special kind.
It’s designed to:
A server usually doesn’t have:
Instead, it sits somewhere—often in a data center—connected to the internet, waiting to receive requests and respond to them.
Conceptually, a server is not magical.
It’s simply a computer running software written by developers, designed to respond to requests.
This naturally raises a question:
If laptops are computers, why can’t we just use laptops to run software systems?
The answer lies in scale and concurrency.
When you’re building a real-world software application:
A personal laptop:
Servers, on the other hand, are optimized for:
It’s not always that servers are dramatically “faster” per core—it’s that they’re built for throughput, concurrency, and consistency.
Let’s make this concrete using an API example.
In a typical three-tier architecture (which we covered in a previous post), you’ll often have:
When you write an API, you define endpoints.
An endpoint is simply a specific address that accepts a request.
For example: https://www.example.com/api/customers
When someone sends a request to this endpoint:
There’s no UI here—just data.
For this to work:
That computer is your API server.
An API server is a computer running your backend code, responding to requests from clients.
Databases don’t live in some abstract void—they also run on computers.
A database server is just another specialized computer:
The reason we separate API servers from database servers is workload specialization:
They’re both servers.
They’re just optimized for very different types of work.
Now let’s shift to the frontend.
When you load a website or open a mobile app, not all computation happens on servers.
In fact, a lot of work happens on your own device.
Client-side compute means:
This is why:
Your internet speed mostly affects how fast data arrives.
Your device’s computing power affects how fast the UI renders.
Server-side compute means:
Understanding this distinction matters because it affects:
Two terms you’ll often hear in computing are storage and memory.
They sound similar, but they mean very different things.
Storage refers to:
Examples:
Storage answers the question:
How much data can I keep?
That’s why storage is measured in:
Memory, or RAM, is:
Think of memory like the human brain:
Or think of it like a kitchen:
No matter how much food you have in the pantry, the size of the pan limits how much you can cook at once.
On servers, memory often becomes the limiting factor for:
Storage determines how much data you can keep.
Memory determines how much work you can do at a single moment.
At a foundational level:
Once you understand where computation happens, many system design decisions start to make more sense.
In a future post, we’ll build on this foundation and explore what serverless computing really means—and why the term is often misunderstood.
How do you think about compute when designing or working with software systems?
How building my own site helped me stay technical without writing production code
Loading comments...
Please log in to post a comment.