Reliability, Scalability, Maintainability for a System

Tushar Kanti Maji
4 min readApr 26, 2024

The Key building block of a Big System should be following…

Reliability, Scalability, Maintainability.

Take any Software System, be it Facebook, be it Google, be it YouTube, Instagram. What they are doing…. they are taking your data in a particular formate, they are storing this data, in their own formate. And then again they are showing that data to you. In Instagram, you are uploading photo, which is a data, then they are storing their data, then they are showing that to your followers and in your Profile. In YouTube some creator are storing some video, and you war watching.. this is again data. Uber is taking the data from the Driver, storing it and then showing it to you that where your driver is and how much time it will take to come to you. Its again data right? and the list will go on..

So, when you are building a data driven system, its your responsibility to keep in mind about this 3 pillars of Software Engineering. Its like a tripod. you need to keep in mind about all 3. Each leg represents a critical aspect that ensures the system’s success.

They are Reliability, Scalability, Maintainability.

Lets discuss it one by one.

Reliability

Reliability means making systems work correctly, even when faults occur

What is the meaning of Reliability? It means, reliable enough.

These are couple of points that we can consider under Reliability

  1. Meeting Expectations:
  • Reliability means your software behaves as expected.
  • Imagine you order a pizza. You expect it to arrive hot, with the right toppings. Similarly, software should do what users expect: perform functions correctly.

2. Tolerating Mistakes:

  • Reliability is like forgiving a wrong turn and still reaching your destination.
  • Think of a friendly GPS. Even if you take a wrong turn, it recalculates and guides you back. Software should handle user mistakes gracefully.

3. Performance Under Load:

  • Reliability means your software doesn’t crash when everyone’s using it.
  • Picture a busy highway. Cars keep flowing smoothly even during rush hour. Similarly, software should handle many users without slowing down.

4. Security and Abuse Prevention:

  • Reliability is like a locked vault keeping your data safe.
  • Imagine a secure bank vault. Only authorised people can access it. Software should prevent unauthorised access or misuse.

Scalability

Scalability means having strategies for keeping performance good, even when load increases.

Imagine you are making rice for 5 members. Now, if one day some guest comes to your house, Will you make the rice in the same pot? First you will take a bigger pot and cook. And if there are 50 guest, then what will you do? In one go you can not cook all the right. You will have to do the same process lets say 10 times.

In the same way, if the count of user increase in your system, then you need to change your system according by which your system will be able to handle that much amount of traffic. Now lets talk about

  1. Vertical Scalability:
  • Vertical scalability is like having a backpack that adapts to your needs — whether you carry a little or a lot.
  • Its like making the rice in a big pot when some guest comes.

2. Horizontal Scalability:

  • Horizontal scalability is like adding more ants to share the load. When your system gets busier, it brings in extra help.
  • Its like increasing the number of pots and make rice in each pot in parallel.

3. Load Balancing:

  • Load balancing ensures your system handles user requests efficiently. It’s like traffic management for software.
  • Think of a busy highway with multiple lanes. Traffic flows smoothly because cars are distributed evenly. If one lane gets jammed, others keep moving.

Maintainability

Maintainability meaning making life better for the engineering and operations teams who need to work with the system

  1. Abstractions for Simplicity:
  • Abstractions reduce complexity. They let you focus on the big picture without drowning in details.
  • Imagine you’re cooking. Instead of measuring each ingredient separately, you use pre-made cookie dough. The dough abstracts away the complexity of individual ingredients.

2. Adaptability and Flexibility:

  • Maintainability is like having a wardrobe with mix-and-match outfits. You can switch styles effortlessly.
  • Think of a smartphone app that adjusts its layout when you switch from portrait to landscape mode. It adapts seamlessly, ensuring a smooth user experience.

3. Operability and Health Monitoring:

  • Maintainability ensures your software stays healthy. It’s like having regular check-ups for your code.
  • Picture a doctor checking your vital signs. They monitor your health to catch issues early. Similarly, software needs effective ways to monitor its well-being.

Maintainability is making the next developer and Operation people life easier.

So, this was the key building blocks of a Big Software Systems who can serve the user through data.

Remember, If any of the leg of Tripod got misbalanced, then there is no use of the whole tripod. So, All this 3 points are equally important for a big Data driven System.

--

--

Tushar Kanti Maji

SDE @PagarBook | Ex- Juspay, TCS | Knight @Leetcode (860+ Problem Solved) | Backend | Javascript | NodeJS | SQL | Redis | RabbitMQ | Microservice