System Design Tutorial: Choosing between SQL and NoSQL
This tutorial we shall learn in brief about what is SQL DB, No-SQL DB and when to choose SQL and when to choose No-SQL. SQL: SQL stands for Structured Query Language. Here the data will be stored in a structured way in the form of rows and columns. Each record will have a Schema. These […]
System Design Tutorial: CAP Theorem
If you are building a distributed database, and you expect that your database should have below 3 properties: Consistency: The read is the most recent write. Available: The server should be available all the time Partition Tolerant: There are multiple database, if any one database goes down, then the data should still be available. So CAP […]
System Design Tutorial: REST API
This tutorial we shall study about REST API. What is an API? API stands for Application Programming Interface. It is a set of tools for building an application. With the help of API it will be come easy for the programmer to build an application and distribut its services. With the help of API 2 […]
System Design Tutorial: LRU cache
In this tutorial, we shall learn about LRU cache and why it is important in System Design. LRU is used for cache eviction. Cache eviction is a process where stored cache will be released when it reaches a certain limit. There are many algorithms used for cache eviction like LRU – Least Recently Used, FIFO […]
System Design Tutorial: Message Queue
In this tutorial we shall learn about Message Queue, why it is used, how it works and some of the open source tools Message Queue. Nowadays big Monolithic Architecture are converted into Micro-service Architecture. Because of this communicating between each microservice is very critical. Nowadays the data size is also increased, it is not possible […]
System Design Tutorial: Load Balancing
In this tutorial we shall learn about load balancing. A load balancer is a server that takes the incoming traffic and distribures accross multiple servers. Why do we need Load Balancing? Let us assume we have a online shopping website. It recieves around 1 Million visitors per day. To serve those many customers, the website […]
System Design Tutorial: Consistent Hashing
Consistent Hashing In this tutorial we shall understand what is Consistent Hashing and why it is important for system design or in Distributed System. Introduction So before understanding about Consistant Hashing, let us understand about Hashing, working of Hashing and why we moved to consistant hashing. What is Hashing? Hashing is a technique to index […]
System Design Tutorial: Data Sharding
In this tutorial we shall look at what is data sharding, why it is important and complexities involved in data sharding. Before going to data sharding, let us understand Single storage and why we moved to data sharding. Before introduction of distributed systems, we had a single master storage. where in all the data will […]
System Design Tutorial: Micro Architecture
In this tutorial we shall understand about what a micro architecture is and how it is useful in designing a highly scalable system. So before learning about Micro Architecture, we shall first understand why Micro Architecture came into existence and how it is useful for the companies. Before the introduction of Micro Architecture, there was […]
Introduction to System Design
Note: Before starting reading this Tutorial, let us be clear about below things: 1. System design is a very vast topic, and covering every aspect is impossible. 2. This Tutorial should be treated as a “getting started” or “introduction” to system design. We go through most of the concepts, but in brief. 3. I have […]