- What is system design?
- General view of system design.
- Maintaining the privacy of clients and servers.
- Understanding Data storage, dataflow and data generation.
- Deciding factors for system design.
What is system design
System means an application in computer terminology which is used to serve the requirements of users. Examples for such includes instagram, facebook, whatsapp, hotstar, gmail. System contains x number of components which are connected to each other to serve the user requirements. System design means choice of these components and how to connect them effectively. In short, one can say that system design includes a set of components, users and their requirements.
Check the video for this blog from hereSystem Design Overview
General View of System design
Presentation side is also called the client side as it is operated by the client and the infrastructure side is also called the server as response is coming from this side.
Types of client
Thin client: If client only requests data and processing is not part of client side. It is termed as thin client. For example streaming applications and e commerce websites
Thick client: If along with sending a request, processing is implemented on the client side, it is termed as thick client. For example video editing software
Different tier client servers
2 tier: Light weight website for small business
3 tier: Basic library management for schools.
N tier: Applications like facebook and gmail
Maintaining the privacy of clients and servers
To maintain the privacy of client and server use proxy. Proxy is a middle server between the client and server. If one uses the forward proxy, it is used with the client and if one uses the reverse proxy, it is used with the server side. When the forward proxy is used, servers do not know the ip address of the client, they communicate with the proxy server ip address and then proxy server communicates with the client. In this way the privacy of the client is not known to the server. Same is true for reverse proxy where the privacy of the server is not known to the clients.
Understanding Data storage, dataflow and data generation
Lets understand in steps how data flow from client to server and come back
- Business layer: This is client side and operated by the user. Users send some requests here to get responses for it. For example one is using an app for image classification, then a person will upload the image to get a response. Data could be text or video also.
- Application layer: This will apply logic to it and there will be an option to return response to the user as well as save it to the database to analyse the insights in the later stage.
- Database layer: The result processed by the application layer can be saved in the database
- Network Layer: Response is travelled to these layers in the form of packets handled using the network layer.
In making the proper dataflow it must be clear what format of data to be allowed at business, application and database layer.
Dataflow methods could be using API’S, Messages and Events.
Data Storage could be Databases, Queues, Caches and Indexes. Next question is where these are used.
- Databases: These are used when one is storing a lot of information in the form of tables such as username, email, address, phone number.
- Caches: These are meant for request response mechanisms.
- Queues: These are used for sending sms and email requests.
- Indexes: These are used when one needs to get the most searched items searched in the last x hours.
Data generation: Mostly data is generated by user but the system i.e server also generates data for logging which is called internal data as well as data is generated for insights such as when one books an order in the amazon or ecommerce website then one can download invoice which comes under insights.
Deciding factors for system design
- Type of data
Type of data: To make the system design, one must understand his or her niche. Based on that such data is to be used at the business and other layers.
Volume: Based on your niche, you can estimate the amount of volume of the data. That will make you choose the right database, cloud computing service for hosting and type of programming and framework needed in the application layer.
Consumption/Retrieval: Based on your niche, you know if fast retrieval or slow retrieval is needed for your application. Do you need an application log and produce insights to the end user.
Security: If one is dealing with sensitive information or data which needs very high security, this points need to be considered.
In a nutshell, discussion is done on what is system design and what are the factors that need to be considered to make a strong and logical system design for your application. SOme light is also thrown on understanding dataflow, data generation and data storage. Moreover we try to help you understand how to maintain the privacy of the client and server with the help of proxy in simple and layman language. Different types of clients are also explained and we hope that you enjoy reading this blog and some useful insights are also learnt from this. One may contact us at firstname.lastname@example.org and watch some of our data science specific videos from AI Sangam Official YouTube Channel.