DEV Community

Omkar Sharma
Omkar Sharma

Posted on

How your first day in system design looks....

Your University Website Will Never Go Down Again — Beginner Friendly System Design

Let’s create a very simple and absolute beginner-friendly system design for our university website.

🌤 Normal Days — No Result, No Announcement, No Admit Card

On usual days when no results are declared, no announcements are made, and no admit cards are released, the traffic on the website is very normal.

In an ideal case, let's start from a very simple design — no load balancer, no auto-scaling, none of those typical complex components.

Simple Server

Components Used:

  • Server: This can be any highly configured machine that is up and running 24/7. Technically, your personal laptop can also act as a server — but obviously, no one wants that.
  • DNS (Domain Name System): It’s a global directory that maps domain names to IP addresses. You pay for that public IP.

⚠️ What Happens During High Traffic?

At the time of result declaration or admit card release, traffic increases drastically.

The same server configuration cannot handle the sudden surge in requests.

The result? The application faces downtime or crashes.

Single Server Overload

✅ Solution 1: Vertical Scaling

So, what can we do?

We can increase the configuration of the server from:

  • 4 CPUs → 8 CPUs
  • 64 GB RAM → 128 GB RAM

This is called Vertical Scaling, which means increasing the power of the existing machine.

Vertical Scaling

❌ Challenges with Vertical Scaling:

  • We cannot increase the configuration of a running server.
  • First, we need to stop the server, upgrade it, and then start it again — which causes downtime.
  • It’s not recommended for high-availability applications.

✅ Solution 2: Horizontal Scaling

So, what else can we do?

We can use Horizontal Scaling, where we replicate the resources — basically, we add new servers instead of upgrading the existing one.

Horizontal Scaling

❌ Challenge with Horizontal Scaling:

  • A new IP will be assigned to each new server.
  • But, all requests will still go to the original server unless we have a way to distribute traffic.

omkarsharma2821

Any idea how to solve that?

Well, this is what I’ll discuss in the next design! 🚀


Stay tuned for the next part where we’ll talk about load balancers, traffic distribution, and more smart strategies to handle peak-time traffic without breaking the system!

✍️ Author: Omkar Sharma

📬 Feel free to connect on LinkedIn or explore more on GitHub

Top comments (0)