What is system design, The process of designing any application's Interface, modules, architecture, and components is called System Design. In Simple words let's consider you have an application to be developed Before jumping into the coding part you will have to create a plan of its elements, interfaces, and components and decide its strategy this process is called the System Design Process.
Types of System Design
There are two types of system design:
High-Level Design :
it is a process where we describe the parent or main components of the application that will be developed in which architecture, storage, or database design, etc. takes place.
It is a process where we design the components of High-Level Design in which classes, interfaces, and actual business logic of components are defined.
What is Architecture?
Architecture can be described as the design of an application that is performed internally is called Architecture. For example, suppose we are developing an e-commerce project so before jumping into the coding part we will design the application internally to manage its major and minor components.
Types of Architecture
There are two types of Architecture:
Monolithic and Distributed Architecture
So here the main part begins, We will explore monolithic architecture for a web application, In a web application, three major things take part Frontend, backend, and Database, and the codebase where these three are developed and deployed is called Monolithic architecture. In simple words where Frontend, backend, and Database are all developed and deployed in a single codebase is called Monolithic architecture. it is good for a fresh start for any project also known as a centralised system.
Advantages of Monolithic Architecture
Everything is present in a single codebase no need to go here and there.
It is not complicated and easy to understand
if someone (developer) starts a project he can go with it
Disadvantages of Monolithic Architecture
Everything is present in a single codebase so if there is any bug in a single component then the project will not run.
if any new component or new business login is implemented then we have to deploy the full system so is time-consuming.
The Architecture in which all single systems are distributed through the networks to share or communicate with each other is called distributed architecture. In simple words in Monolithic everything is present on a single codebase but in a distributed system, everything is deployed on other resources for example we developed an application in which the Frontend part is deployed on goddady and the backend and database is hosted on AWS, so everything is not depended to each other but they communicate with each other for data communication.
Advantages of Distributed Architecture
It is Scalable, we can simply scale it to improve performance.
it is not dependent on any other resources.
Not SPOF(Single Point of Failure).
Disadvantages of Distributed Architecture
It is complex to understand because of servers but not impossible obvious.
LoadBalancers are required for distribution.
Difficult to authenticate because we have multiple servers.
Data loss can be resolved by Data Replication.
What is Latency?
In Simple words if a user hits any website URL and that request goes to the website's server then it gives a response to the user and the time taken in this process is called Latency. So latency is equal to network delay + computational delay.
Latency in Monolithic Architecture
In Monolithic there will be no network delay because everything is deployed in a single server so there will be no delay here Latency is equal to the computational delay.
Latency in Distributed Architecture
In Distributed there will be network delay as well as computational delay because everything is deployed in multiple servers.
To Reduce latency we can use CDN or Caching
Caching: When a user hits a website and the website provides a response this process will take time so here we will add a layer between client and server and when the user hits the website we response will be provided by Caching.
CDN: When we have static data then we can provide or deploy that data to any CDN server when it is required we can ask that CDN Server.
Conclusion - What is system design
So in the above article, we learn about system design, architecture, and its types and now we can implement it in our Application for better User Experience.
we hope you enjoy it For any suggestions comment below.