What is System Design, and why should you study it?

·

3 min read

We all hear about the interview experiences of SDEs, and recently the buzzword for the interview season has to be System Design. People study DSA, learn OOPS, OS, and DBMS and now even have to learn System Design! But System Design is not something that will give you load but will enhance your thought process and becomes interesting as you go in depth.

System Design is how you plan, design and execute your system. It contains all the details about interfaces and architecture that meets the system requirement. Let’s understand this through an example. Suppose you are told to design a cycle. The foremost step is to understand the requirements or the end goal for the cycle. Do you want a gear one or a normal one? Should it ride backwards or only forwards? Such questions help you to understand the problem more carefully and give proper insights. Noting down the requirements and communicating with your teammates will make the procedure more concise and convenient. Once you finalise all the requirements, there comes the step of collecting all the raw materials and designing the architecture. This was a brief insight into how system design works! It’s interesting and intriguing at the same time, right?

System Design Description

While designing a system, we need to consider some crucial factors, namely, Reliability, Availability, and scalability.

Reliability: This has to be one of the most important factors. What this means is that whatever system requirement, the features that you decided earlier shall be present in the end product. Otherwise, the system is unreliable.

Availability: As the word states, availability measures how much time a system is operational. Uptime is synonymous with Availability which states the percentage of time a system is available to be operated. The concept of availability can be understood properly using an example. Suppose you want to design a social media platform where fans can view photos of their idols. Now, while scrolling the app, a user can wait 5–10 seconds before viewing the image like there’s no urgency here. But consider the case of banking, where a transaction must be taken carefully, and the system must be available without lag. A lag may create some undesirable outcomes.

Also, to ensure the availability of your system, there should never be a single point of failure. This means that there should be a backup whenever the particular operating system becomes unavailable. If there are no backups, the system becomes unavailable, leading to system failure.

Scalability: We all must have experienced the issue regarding the site getting crashed, for example, when results are out, and everyone is trying to view it, but for some reason, the site is not getting loaded. The reason behind this is that the system cannot handle the load of multiple users. Here Scalability comes into the picture, which gives us an idea about the load that your system can handle. The factors that determine the load on your system are:

  1. Current active users

  2. Database call being made

  3. Cache hit/Miss requests

  4. The number of requests incoming.

This was the introduction to System Design. I hope you learned something new. I will continue to write down my learnings.