System Design Concepts Explained in 10 minutes
System design concepts explained in the video:
1. Vertical Scaling
Refers to increasing the resources (such as CPU, memory, or storage) of a single machine to improve its performance or handle higher workloads.
2. Horizontal Scaling
Adding more servers to a system to distribute the workload and increase overall capacity and performance.
3. Load Balancer
A load balancer is a network device or software that evenly distributes incoming network traffic across multiple servers or resources to optimize performance and ensure high availability.
4. Content Delivery Networks
Content Delivery Networks (CDNs) are distributed networks of servers located geographically closer to end users, designed to deliver web content efficiently by caching and serving it from nearby locations.
5. Caching
Caching is the process of storing frequently accessed data or content in a temporary storage location (cache) to improve retrieval speed and reduce the need for repeated requests.
6. Internet Protocol Address
An IP address is a unique numerical label assigned to each device connected to a computer network.
7. TCP
TCP (Transmission Control Protocol) is a communication protocol that ensures reliable, connection-oriented transmission of data by dividing it into smaller packets, numbering them, and reassembling them at the receiving end.
8. DNS
DNS (Domain Name System) is a decentralized naming system that translates human-readable domain names into IP addresses.
9. HTTP
HTTP (Hypertext Transfer Protocol) is a protocol that governs the communication between web browsers and servers, allowing for the retrieval and transfer of web pages and resources over the internet.
10. REST
REST (Representational State Transfer) is an approach to designing web services that uses standard HTTP methods and URLs to facilitate communication between clients and servers.
11. GraphQL
GraphQL is a query language for APIs that provides a flexible and efficient way for clients to request and retrieve data from servers by allowing them to specify exactly what data they need. Using single query, it can fetch multiple resources without over fetching as well.
12. gRPC
gRPC (Google Remote Procedure Call) is an open-source framework that enables efficient communication and interoperation between services by defining the interface and data contracts using Protocol Buffers and facilitating bi-directional streaming and error handling.
13. Web Sockets
Web Sockets is a communication protocol that provides full-duplex, real-time, and bidirectional communication between a client and a server over a single, long-lived connection. Web Sockets can be used in applications such as chat systems or real-time collaboration tools, where instant and continuous data exchange between clients and servers is required.
14. SQL
SQL (Structured Query Language) is a programming language used for managing and manipulating relational databases, allowing users to perform tasks such as querying data, defining database structure, and modifying data records. SQL is considered to use when fast retrieval of data is needed.
15. ACID compliance
ACID (Atomicity, Consistency, Isolation, Durability) compliance is a set of properties that ensure reliability and integrity in database transactions, guaranteeing that they are executed reliably, consistently, and without interference.
16. NoSQL databases
NoSQL (Not Only SQL) databases are a class of databases that provide flexible, schema-less data models and horizontal scalability, making them suitable for handling large volumes of unstructured or semi-structured data.
17. Sharding
Sharding is a technique in database management where data is horizontally divided and distributed across multiple servers or nodes to improve performance, scalability, and load balancing.
18. Replication
Replication is the process of creating and maintaining identical copies of data across multiple servers or nodes, providing redundancy, fault tolerance, and improved data availability in distributed systems.
19. CAP Theorem
The CAP theorem states that in a distributed system, it is impossible to simultaneously guarantee consistency, availability, and partition tolerance, and therefore, trade-offs must be made between these three properties.
20. Message Queues
Kind of like databases because they have durable storage. They can be replicated for redundancy or sharded for scalability. This can be used in task distribution and workload decoupling.
A Special Thanks to @avishkahettiarachchi8617 for presenting the synopsis of the entire video in the YouTube comment section. Please note the above content is inspired from the comment of the fellow user mentioned.