System Design Basics

·

2 min read

What is a System?

A system is a loosely used term for an architecture or a collection of software or technologies that communicate with each other to serve a set of users to fulfil a set of requirements.

Examples of computing systems can be Instagram, Whatsapp, and Netflix.

Examples of real-world systems can be Hospitals, Schools, Hotels, Theatres, etc.

All systems have one common point which is that they are made up of some sort of components which need to interact among themselves to fulfil the purpose of the system.

For example, buildings are made up of walls, floors, ceilings, electrical supply, and water supply but different buildings serve different users with different sets of requirements. The same goes for computing systems as well, servers, caches, messaging queues, and applications are all building blocks or components of the system and they communicate with each other to serve a different set of users.

What is Design?

Design is the process of understanding the user requirements and selecting the components, and software technologies and intertwining them to serve the need of a system.

The whole process of selecting different technologies, making them communicate with each other and learning about the tradeoffs is known as system design.

Why System Design?

Suppose the reader of this blog wants to make an application as a hobby project. Now, questions may arise in his mind that what technology stack should I pick up or which database should I use so that my application can scale to a huge number of users. This is where the knowledge of system design comes into the picture.

With the knowledge of system design, one can take decisions on what technologies to use and what not to use and know about the tradeoffs and constraints.

Reference

I am learning system design basics from SudoCODE

Connect with me

If this blog helped you in some way, drop me a 'Hi' on Twitter and connect with me.