Components of System Design

Logical Entities

All the systems in this world are made up of data. Data stays at the crux of any system. Now the question arises how do we store this data? The answer is a database.

Databases are the core of any system and can store the data and can serve the data to the user if required.

After storing the data in a database we need to read from the database, write to the databases, and fetch the information, for this, we need some sort of communication. Communication is provided to us by the application layer. Applications make up the logical entity for the communication of the system.

Think of the application as a part of code running on one machine and the database to be another part of code that is running on another machine. These two machines interact with each other through communication protocols like TCP/HTTP/IP.

The communication protocol is another logical entity which makes communication between different machines possible so that the components of the system can interact with each other.

Just like applications communicate with databases on a network level, applications and services communicate with other applications and services on a software basis through components like requests, APIs, RPCs

Presentation layer

All systems may or may not have a presentation layer. Presentation layers are mobile apps or desktop apps or web applications that provide a simple-to-use layout for users to communicate with the databases.

An example of a no-presentation layer system can be a logging system which stores the log of your application.

Tangible Entities

Tangible entities are the technologies or software used to make the system. Examples are MongoDB, Reactjs, Redis, etc.

The above image describes the infrastructure of a system.

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.