All content related to system-design-interview

Data Partitioning: System Design Concept

Data Partitioning is a partitioning technique of dividing the data into independent components. It is a way of partitioning data into smaller pieces so that data can be easily accessed and becomes manageable at a much finer level. Database partitioning is the backbone of modern distributed database management systems. Data Partitioning is very useful in improving the scalability and performance of the system. It enhances the manageability and availability of the service and effectively reduces the cost of storing a large amount of data.

Load Balancers in System Design

A load balancer is a software or a hardware device that sits between clients and a set of servers and basically has a balancing workload across resources. Not only do load balancers save our server or multiple servers from overloading, but it also increases the throughput of your system.

Design WhatsApp Messenger

Whatsapp is a social messenger platform, which allows users to send messages to each other. It is a messaging system that is widely used throughout the globe. Here in this blog, we’ll be discussing WhatsApp’s generic architecture and which could also be used as a base for designing any such chat application. So let’s get started by discussing the key requirements of our service.

Design YouTube

YouTube is a frequently used social networking platform for video sharing and is a convenient tool for advertising. Hence before designing such type of service, it is necessary to consider various requirements and system boundaries. The system should be reliable, resilient, consistent as well as remain available all the time. It should offer latency-free services and able to provide high throughput. YouTube is a widely used service, and hence our service must fulfill various primary requirements and function efficiently.

Design Google Docs

Google Docs is an online word processor that is part of Google’s free, web-based Google Docs Editors package. It is a massive system with tons of features. If you spend a few minutes thinking about how Google Docs is built and how it works, you may realize that it is much more complex than it seems to be. Without any much delay let’s see how Google Docs work :)

Design Dropbox

Dropbox is a cloud storage service that allows users to store their data on remote servers. The remote servers store files durably and securely, and these files are accessible anywhere with an Internet connection.

Design Instagram

Instagram is a photo and video-sharing social media platform that allows users to share their creations with others. The original poster can set the visibility of these posts (photos/videos) to private or public. Posts can be liked and commented on by users. Users can follow and see the news feeds of other users (a collection of posts from the users they are following).

Design Facebook Newsfeed

Whenever you open Facebook, the News Feed is the first service that you encounter. It is a continually updating service consisting of posts, photos, videos, comments, and activities of the people and pages you follow. Every Social media platform, such as LinkedIn, Twitter, Youtube, Instagram, etc., has a News Feed service, the main landing page, and displays real-time updates. Many companies also use Social Media platforms for advertising their products and using Machine Learning to offer customized and relevant advertisements to the user to increase their profits. Over the past few years, social media platform such as Facebook has scaled tremendously. News Feed is a vital component of Facebook as it directly affects user engagement and constant interaction. Hence Facebook teams are highly concerned about every use case and aimed to provide real-time services. Without much, let's look into the critical requirement of the Facebook News Feed service.

Design Twitter

Twitter is a social media platform where users may post and interact with “tweets.” Users submit and engage with “tweets” on Twitter, a microblogging and social networking site. Users can subscribe to other users’ feeds and receive tweet notifications from those they follow. Tweets are almost 140–280 character communications.

Design Notification Service

In today’s world, notification services are widely employed in almost every product. They’re helpful if you’d like to be alerted of a price change or availability of a product you’re interested in, or if you’d want to be told if a new job specification for a job search criterion you’ve provided becomes available.

Design Yelp

Design a Yelp like service, where users can search for nearby places like restaurants, theaters, or shopping malls, etc., and can also add/view reviews of places.

Design QR code system for a Grocery store

QR code payment is one of the contactless payment methods to transfer funds from the buyer’s wallet to the seller’s wallet or account. here Payment is performed by QR code at POS from the mobile app.

Design API Rate Limiter

At its most basic level, a rate limiter restricts the number of events a certain object (person, device, IP, etc.) can do in a given time range. A rate limiter, in general, restricts the number of requests a sender can send in a given period of time. Once the cap is reached, Rate Limiter blocks requests.

Design Uber

Uber continues to improve its operations and services by deploying and developing new services to meet market demand, find the best and most efficient routes, detect any potential fraud, provide more customer-centric services, and monitor and update data to provide the most efficient real-time services. In this blog, we’ll be looking at how to design the Uber system.

Design a Web Crawler

A web crawler (also known as a spider) is a system for downloading, storing, and analyzing web pages. Web crawlers are used for a wide variety of purposes. Most prominently, they are one of the main components of web search engines, systems that compile a collection of web pages, index it, and allow users to issue index queries and find web pages that match queries.

How to Choose the Right Database?

Databases are a critical component of the world’s most complex technology systems, and how they are used has a significant impact on their performance, scalability, and consistency. Because this is an essential topic with many moving components, hence in this article, we’ve outlined the most crucial database topics that you’ll need to know during a system design interview.

Long Polling in System Design

Polling is a technique that allows the servers to push information to a client. Long polling is a version of traditional polling that allows the server to send data to a client whenever available. It involves the Client requesting information from the server in the same way that standard polling does, but with the caveat that the server may not respond right away. A complete answer is delivered to the Client once the data is accessible.

Database Indexing In System Design

Database indexing is an excellent way to improve database performance and acts as a handy guide in increasing the performance of the database. An index is nothing more than a reference to data in a table. We should think of a database index in the same way we think of a book index. The aim of creating an index is to make reading and searching queries easier.

SQL vs NoSQL

Have you ever been in a dilemma while choosing the most appropriate storage type for your application? What could be the most viable storage type that could meet the business expectations and offers efficient services? The primary factor behind selecting the database is the data structure and the kind of operations associated with it. But before diving deep into selecting a suitable database, it is necessary to have a clear understanding of the structure and the functionalities of each kind of database. Databases are broadly categorized into Relational (SQL) and Non-Relational (NoSQL) databases.

Availability: System Design Concept

Availability is an important concept that is involved in most sought-after questions in a system design interview. Many of us may have experienced moments where we could not access certain applications due to an outage or unavailability. Let’s explore this blog to get an answer.

Server Sent Events - System Design Concept

Whenever we build any Web Application dealing with real-time data, we need to consider delivering data to the Client. While building such a Web Application type, one needs to consider the best delivery mechanism, right! We are presenting a series of three concept blogs focusing on data transfer between clients and servers. In this blog, we are focusing on Server-Sent Events, and here, we will give you a complete insight into its internal working and the underlying features.

Proxy Server

In computer networking, a proxy is a server that acts as an intermediary between a client and another server. In this blog, we discussed: What is a proxy server? How do proxy serves work? What are proxies used for? What are forward and reverse proxies?

Design a URL shortening service like TinyURL

Design a tiny-URL service. Tiny-URL is a URL-shortening web service that creates shorter aliases for long URLs. Whenever the user visits the short URL, he/she will be redirected to the original URL. The goal is to design a highly scalable service that could allow users to create shorter URLs, given long URLs, and have read and write functionality.

Latency in System Design

Latency is an essential concept in System Design that determines how fast the data transfers from the client to the server and back to the client. Latency is a direct measure of performance, i.e., the lower the Latency, the better the performance. In this blog, we'll focus on the conceptual understanding of Latency, how it impacts the system's performance, and what measures should be adopted to improve the Latency of the system.

Distributed System in System Design

Nowadays, almost every large scale application is based on Distributed Computing. Technological expansion and the increasing use of highly scalable systems have paved the way for Distributed Computing, and hence Distributed Systems have became the necessity. It is the need of the hour to have the full grasp of the Distributed System to achieve fault-tolerant, scalable, and latency-free service. This blog will introduce you to the fundamentals of Distributed Systems, their functioning, and how they are applicable in real-world systems using some of the exciting examples. So, let us dive in and learn how to deal with trade-offs while designing our System.

Network Protocols - System Design Concept

A network can be defined as a group of computers and other devices connected in some ways to exchange data. It is one of the critical system design concepts to learn.

Caching - System Design Concept

In this blog, we will learn about Caching, an important fundamental concept in a system's design. Have you ever experienced that when you open a website the first time, it takes more time than usual, but when you open the same website again, it takes no time to load? Do you know why this happens? Let's find out!

Design PasteBin - System Design Interview Question

Have you ever thought of any such service that could make our life easier by allowing us to store data over the internet and simultaneously allow others to access the same data? If it is so, then this is the perfect blog for you. Here, in this blog, we'll be discussing the PasteBin System. Here, the aim is to design a highly scalable service that could allow users to paste various content (images, text, etc.) over the internet and allow others to access the pasted content. So let's look at the formal definition of PasteBin.

How to approach System Design Interview

The system design interview is an open-ended conversation. As a candidate, we are expected to lead it along with a discussion with the interviewer.

Our weekly newsletter

Subscribe to get free weekly content on data structure and algorithms, machine learning, system design, oops and math. enjoy learning!