Friday, 9 September 2022

System Design Short - Short Definitions

Availability

A System is said to be available if it is operational.

Reliability

The probability that a system will remain available for use during a period. 

Scalability

The ability of a system to increase or decrease performance or cost depending on the demand. A system may need to scale when it needs more data storage or processing power.

Vertical Scaling

You add more storage, RAM, GPU power, CPU to an existing system.

Horizontal Scaling

You scale by adding more nodes/servers to tackle increased demands.

Redundancy & Replication

To increase the reliability of a system in case of failures, duplication of resources is performed; this is called achieving redundancy & replication.

Efficiency

Measures how a system performs with a given set of resources in a particular situation.

Distributed System

Multiple machines are involved and behave as a single computer, mainly to achieve a more excellent processing capability to achieve a common goal.

Load Balancing

Load balancing is balancing the network load from clients across multiple servers, increasing responsiveness, availability, maintaining less response time, and eliminating the single point of failure. Prevent a single point of failure by removing the unhealthy node from the working pool. Sits between the users and many redundant resources to direct a request to a healthy server with less load.

Proxies

access some resources that are unavailable in your locality, or you might want to hide your identity, VPNs are a kind of proxies. It is an intermediate server that requests resources from other servers on behalf of a client.

Caching

One or many nodes are stored between a client and the backend server to keep the copies of data (based on FIFO, LIFO, LRU, LFU, MRU) in temporary storage for faster access in future.

Content Delivery Network - CDN

A geographically distributed collection of servers, just like a cache, to serve static media (media that does not change, for example, images, homepage, etc.).

Data Partitioning

Dividing data into smaller chunks, spreads the load across various devices, increases availability, and is much more manageable.

Indexing

Reduce the access time by creating a separate table based on one or more database columns.

ACID Properties


NoSQL

NoSQL databases are non-relational databases that do not need a structure or a schema like a relational database; examples are Document databases (MongoDB, FireStore), Key-Value (Dynamo, Redis), Column databases (Cassandra), and Graph databases (Neo4j).

Sharding

A technique used to divide data into multiple smaller parts known as shards (Horizontal partitioning), which are smaller, faster, and more manageable.

Polling

Traditional Polling - client communicates with the server, server responds immediately based on data availability.

Long Polling - client does not need to wait, server accepts the request and lets the client know once the data is ready.

Websockets

Bi-directional communication or duplex between client and server (at first, client creates connection using WebSocket handshake).

Fault Tolerance

The ability of a system to perform well despite some failures in the system.

API - Application Programming Interface

Enables two software components to communicate with each other using a set of definitions and protocols.



No comments:

Post a Comment