System Design 101: #1 A Comprehensive Guide to the Basics and Beyond

Niveditha Praveen
4 min readMar 12, 2023

Previously on my tech blog — Edge computing

System Design- Why do we need it?

System — A system can be physical or abstract. Physical systems include machines, buildings, and vehicles, while abstract systems include software, processes, and organizations.

System Design — A system has to be architected with a well-thought design as it is a collection of technologies that would interact with each other.

For example, If you want to build any kind of a building or a vehicle, you will have to do systems thinking and then plan its architecture. Think of the components required for any such system.

Components —

Components/modules are the building blocks of a system. They are designed to perform specific tasks and can be reused in other systems

For example, If you want to build any kind of vehicle, there would be some common components that one can think of, such as the engine, transmission, wheels, suspension, brakes, and electrical system. Each of these components needs to be designed and integrated to create a functional and reliable vehicle.

When it comes to the design of a software application, design thinking should similarly break down the components.

Design Thinking

Components can be either logical entities or technical entities.

Even though the components of system design look very similar, the system designs are very different for different systems.

For example, the design of a chat application would be very different from the design of a travel booking website Or a banking application.

Some systems would require security as its primary requirement without which it is a No-go. Some systems on the contrary would require a number of concurrent users’ support as the primary requirement. Based on the system, users, and their requirements, the appropriate technologies and design systems should be chosen.

As democracy is defined as the Government Of the people, By the people, For the people, the design mantra is — Of the system, By the services, FOR THE USERS.

Design your infrastructure well for today, but keep it extensible for the future. Keep your UI and back-end components independent of each other.

Client Types

Depending on the system, one has to choose whether to go for thick clients or thin clients.

What are Thick clients — Heavy business logic resides on the client side. Applications like MS Excel, MS Outlook, or any Image editing software might be thick clients.

What are Thin clients — The client is lightweight and the business logic exists on the server side. Applications like Netflix, Myntra, Snapdeal, etc, would be thin clients as their streaming business or the huge customer’s data sets, analytics, and processing would always be on the server.

Client Server Architecture

Normally, in an enterprise application where there is a bare minimum of a presentation layer, business layer, and data layer, the architecture is a client-server design.

A 3-tier architecture is optimally chosen by applications that require basic management. For example, A small-scale shop accounting system, college library management systems, etc.

Primitive diagram of a 3-tier architecture —

3-Tier Architecture

However, as and when the number of users increases to your application, your application requires scale. The 3 Tiers might not be sufficient. We might have to extend this for more tiers.

For example, Applications like Instagram, Zoho, etc will be much more complex than a 3-tier architecture.

Load balancer, Caching and other services as per system needs can add up to form N-Tier architecture

For example, In the above design, a load balancer is added whose responsibility is to serve the request to the available server(s) when services are scaled up to multiple instances.

Depending on the huge number of data requests, the most frequently used queries and their responses can be cached. A caching layer can be introduced between the server and data layer to serve the requests faster.

This way, we can start our system design, and upgrade it as per the scale. When the number of services offered by your application increases, or when the number of users increases, the above design can be extended to microservices architecture. We will talk about microservices in our next blog.

To be continued …

…. Follow me to read more blogs on system designs and the latest technology trends.

Read Next about Monolithic vs Microservices vs Serverless Architecture

Attributions —

Image by <a href=”https://www.freepik.com/free-vector/man-working-his-computer_773734.htm#query=Software%20system%20design%20thinking&position=5&from_view=search&track=ais">Freepik</a>

--

--

Niveditha Praveen
Niveditha Praveen

Written by Niveditha Praveen

I am a technology enthusiast and dedicated to staying ahead of the technology curve. I am eager to share my journey and insights with my blog followers.