<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aditya Sharma</title>
    <description>The latest articles on DEV Community by Aditya Sharma (@aditya_d_sharma).</description>
    <link>https://dev.to/aditya_d_sharma</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4051470%2Fe252149c-c45f-483e-935c-5356bb60e731.png</url>
      <title>DEV Community: Aditya Sharma</title>
      <link>https://dev.to/aditya_d_sharma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aditya_d_sharma"/>
    <language>en</language>
    <item>
      <title>Why Your App Stops Working as It Gets Popular</title>
      <dc:creator>Aditya Sharma</dc:creator>
      <pubDate>Tue, 28 Jul 2026 13:59:02 +0000</pubDate>
      <link>https://dev.to/aditya_d_sharma/why-your-app-stops-working-as-it-gets-popular-mbk</link>
      <guid>https://dev.to/aditya_d_sharma/why-your-app-stops-working-as-it-gets-popular-mbk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is Part 1 of my "From One User to One Million" series, where we'll build an understanding of System Design by following a simple application as it grows from a single user to millions. Instead of memorising technologies, we'll learn why they exist by solving real problems as they appear.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Your App Stops Working as It Gets Popular
&lt;/h2&gt;

&lt;p&gt;Imagine you've just finished building your first web application.&lt;/p&gt;

&lt;p&gt;It could be a chat application, an online store, or simply a college project you've spent weeks working on. After countless hours of coding, debugging, and testing, you finally deploy it to the internet.&lt;/p&gt;

&lt;p&gt;The first few users sign up, and everything works exactly as expected. The pages load quickly, requests are processed almost instantly, and the application feels responsive. As more people begin using it, your confidence grows. If the application works perfectly for a hundred users, handling a thousand shouldn't be very different.&lt;/p&gt;

&lt;p&gt;Unfortunately, software doesn't scale that way.&lt;/p&gt;

&lt;p&gt;An application that performs beautifully for a few hundred users can begin struggling when thousands of people try to use it at the same time. Pages become slower, login requests start timing out, and eventually the server reaches a point where it simply cannot keep up with the incoming traffic.&lt;/p&gt;

&lt;p&gt;What surprises many beginners is that the code itself hasn't changed. The same application that worked perfectly yesterday is running today. The only difference is that far more people are trying to use it simultaneously.&lt;/p&gt;

&lt;p&gt;This is the point where software development becomes something bigger than writing code.&lt;/p&gt;

&lt;p&gt;This is where System Design begins.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is System Design?
&lt;/h2&gt;

&lt;p&gt;When people first hear the term System Design, they often imagine complicated architecture diagrams filled with load balancers, databases, caches, message queues, and microservices. While all of these are important, they are not where System Design starts.&lt;/p&gt;

&lt;p&gt;System Design is simply the process of designing an application so that it continues to work reliably as the number of users, requests, and data continues to grow.&lt;/p&gt;

&lt;p&gt;In other words, System Design is about growth.&lt;/p&gt;

&lt;p&gt;Every successful application starts small. It begins with a single server, a single database, and only a handful of users. As the application becomes more popular, new problems begin to appear. Engineers solve those problems by improving the architecture, and those improvements eventually become the technologies we hear about today.&lt;/p&gt;

&lt;p&gt;This is exactly how we'll approach this series.&lt;/p&gt;

&lt;p&gt;Instead of memorising technologies one after another, we'll follow the journey of a single application as it grows from a small project into a platform serving millions of users. Every time our application encounters a new problem, we'll first understand why it happened before learning the technology that solves it.&lt;/p&gt;

&lt;p&gt;By the end of this series, you won't just know what a cache or a load balancer does. More importantly, you'll understand why they exist in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before We Talk About One Million Users, Let's Start With One
&lt;/h2&gt;

&lt;p&gt;Before we can understand why applications struggle under heavy traffic, we first need to understand what happens when just one person visits a website.&lt;/p&gt;

&lt;p&gt;From the user's perspective, everything feels simple.&lt;/p&gt;

&lt;p&gt;You open your browser, type a website's address, and within a second the page appears on your screen.&lt;/p&gt;

&lt;p&gt;Behind that one second, however, several different systems are already working together.&lt;/p&gt;

&lt;p&gt;The browser cannot directly contact a website because it doesn't know where that website is located. The first step is to find the server hosting the website.&lt;/p&gt;

&lt;p&gt;To do this, the browser contacts the Domain Name System (DNS).&lt;/p&gt;

&lt;p&gt;You can think of DNS as the internet's contact list.&lt;/p&gt;

&lt;p&gt;When you call one of your friends, you probably search for their name instead of remembering their phone number. Your phone quietly translates that name into a number before making the call.&lt;/p&gt;

&lt;p&gt;DNS works in exactly the same way.&lt;/p&gt;

&lt;p&gt;Instead of remembering an IP address like &lt;code&gt;142.250.183.78&lt;/code&gt;, you simply type a domain name such as &lt;code&gt;google.com&lt;/code&gt;. DNS translates that human-friendly name into an address that computers understand.&lt;/p&gt;

&lt;p&gt;Once the browser knows where the server is located, it sends an HTTP request asking for the resource you want.&lt;/p&gt;

&lt;p&gt;For example, visiting the homepage of a website might simply send a request like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server receives this request and begins processing it.&lt;/p&gt;

&lt;p&gt;If the website is static, the server can immediately send back the required files.&lt;/p&gt;

&lt;p&gt;Most modern applications, however, need information from a database before they can respond.&lt;/p&gt;

&lt;p&gt;Imagine opening Instagram.&lt;/p&gt;

&lt;p&gt;The server first needs to answer several questions.&lt;/p&gt;

&lt;p&gt;Which accounts do you follow?&lt;/p&gt;

&lt;p&gt;What are the latest posts from those accounts?&lt;/p&gt;

&lt;p&gt;Which stories should appear first?&lt;/p&gt;

&lt;p&gt;Have you already liked any of these posts?&lt;/p&gt;

&lt;p&gt;All of this information is stored inside a database.&lt;/p&gt;

&lt;p&gt;The server requests the necessary data, the database returns it, and the server prepares the final response before sending it back to your browser.&lt;/p&gt;

&lt;p&gt;Finally, the browser renders everything into the page you see on your screen.&lt;/p&gt;

&lt;p&gt;Although the entire process usually takes less than a second, multiple systems have already worked together to complete a single request.&lt;/p&gt;

&lt;p&gt;A simplified version of that journey looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   │
   ▼
DNS
   │
   ▼
Server
   │
   ▼
Database
   │
   ▼
Server
   │
   ▼
Browser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first glance, the architecture seems perfectly reasonable.&lt;/p&gt;

&lt;p&gt;One browser sends one request.&lt;/p&gt;

&lt;p&gt;One server processes it.&lt;/p&gt;

&lt;p&gt;One database returns the required information.&lt;/p&gt;

&lt;p&gt;The browser displays the result.&lt;/p&gt;

&lt;p&gt;Everything works exactly as expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now Change Just One Thing
&lt;/h2&gt;

&lt;p&gt;So far, we've only talked about one user.&lt;/p&gt;

&lt;p&gt;Now imagine that 100,000 people open your application at almost exactly the same moment.&lt;/p&gt;

&lt;p&gt;Nothing about the request itself has changed.&lt;/p&gt;

&lt;p&gt;Every browser still contacts DNS.&lt;/p&gt;

&lt;p&gt;Every request still reaches the server.&lt;/p&gt;

&lt;p&gt;Every server still communicates with the database.&lt;/p&gt;

&lt;p&gt;The architecture is identical.&lt;/p&gt;

&lt;p&gt;The only thing that has changed is the number of requests arriving at the same time.&lt;/p&gt;

&lt;p&gt;Instead of processing one request, the server is now trying to process thousands of them simultaneously.&lt;/p&gt;

&lt;p&gt;Every request competes for the same CPU, the same memory, the same network bandwidth, and often the same database connections.&lt;/p&gt;

&lt;p&gt;Eventually, the server reaches a point where it simply cannot process incoming requests as quickly as they arrive.&lt;/p&gt;

&lt;p&gt;Some users begin waiting.&lt;/p&gt;

&lt;p&gt;Others receive timeout errors.&lt;/p&gt;

&lt;p&gt;Pages that previously loaded instantly now take several seconds.&lt;/p&gt;

&lt;p&gt;Eventually, the application starts feeling slow, even though the code hasn't changed at all.&lt;/p&gt;

&lt;p&gt;This is one of the most important ideas in System Design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Applications rarely fail because one request is difficult.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They fail because millions of simple requests arrive at the same time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That single change completely transforms the problem.&lt;/p&gt;

&lt;p&gt;Instead of asking, "How do I write this feature?", engineers begin asking, "How do I design this system so it can continue handling more users?"&lt;/p&gt;

&lt;p&gt;That is the real purpose of System Design.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;In this article, we focused on understanding what System Design is and followed the journey of a single request from the browser to the server and back again.&lt;/p&gt;

&lt;p&gt;That journey forms the foundation of everything we'll learn next.&lt;/p&gt;

&lt;p&gt;In the next part of this series, we'll take a closer look at the server itself.&lt;/p&gt;

&lt;p&gt;We'll answer questions such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What actually is a server?&lt;/li&gt;
&lt;li&gt;How does it process requests?&lt;/li&gt;
&lt;li&gt;How many requests can one server handle?&lt;/li&gt;
&lt;li&gt;What determines its limits?&lt;/li&gt;
&lt;li&gt;Why can't we simply buy a bigger server forever?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once we understand the limits of a single server, the need for technologies like load balancers, caching, and horizontal scaling will become completely natural.&lt;/p&gt;

&lt;p&gt;And that's exactly how we'll continue this journey—from one user to one million.&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
