The client-server architecture is a distributed application framework consisting of clients and servers in which the server hosts, manages, and delivers the client’s services. Here clients are connected to a central server, and they communicate over a network or internet connection through a computer network.
YouTube is a frequently used social networking platform for video sharing and advertising. It is a widely used service, so our system should be cost efficient, highly available, scalable, and reliable. It should offer low latency and high throughput. This blog will focus on youtube system design and discussion around various components.
A key-value database is a non-relational database that stores data using a simple key-value mechanism. Data is stored in a key-value database to collect key-value pairs, with a key serving as a unique identifier. Both keys and values can be any object, from simple to complex compound objects.
Load balancers can receive and distribute requests to a particular server based on various load balancing techniques. These techniques use different algorithms to select servers based on a specific configuration. These algorithms are categorized into two parts: Static load balancing, 2) Dynamic load balancing
Latency is an essential concept that determines how fast the data transfers from the client to the server and back to the client. The lower the Latency, the better the performance. This blog will focus on the conceptual understanding of Latency, how it impacts the system's performance, and measures to improve Latency.
In this blog, we will learn about Caching, an important fundamental concept in system 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!
Availability is the percentage of time in a given period that a system is available to perform its task and function under normal conditions. One way to look at it is how resistant a system is to failures. High Availability comes with its own tradeoffs, such as higher latency or lower throughput.
Throughput is defined as the total number of items processed per unit of time or the rate at which something is produced. It is generally represented as the number of bits transmitted per second or HTTP operations per day. In this blog, we’ll be talking about the importance of Throughput in designing any system.
Process management involves executing various tasks such as creating processes, scheduling processes, managing deadlock, and termination of processes. It is the responsibility of the operating system to manage all the running processes of the system. In this blog, we will learn about process management and various algorithms related to it.
The least frequently used (LFU) is a cache algorithm used to manage memory within a computer. In this method, the system keeps track of the number of times a block is referenced in memory, and when the cache is full, our system removes the item with the lowest reference frequency.
A key-value database is a non-relational database (NoSQL) that stores data using a simple key-value mechanism. Its structure is similar to maps or dictionaries, where each key is associated with one value only. The simplicity of this model makes a key-value database fast, easy to use, scalable, portable, and flexible.
System design is one of the critical topics that large tech companies ask about during the interview. On the other hand, it is also necessary for solving large-scale software problems. This blog will help you get familiar with concepts important for solving system design questions and learning system design at an advanced level.
Data Partition(Sharding) is a 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 managed. Partitioning is the backbone of modern distributed database management systems, which helps to improve scalability, manageability, and availability of the system.
Load balancing is essential for building high-performance and scalable applications. It is also a popular topic for system design interviews. In terms of definition: a load balancer is a software or a hardware device that sits between clients and servers to balance the workload. It saves servers from overloading and increases system throughput.
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.
As users type their search query, the Typeahead feature guesses the rest of a word and offers the top suggestions that begin with whatever they have written. Here frequency and recentness of a query are used to sort suggestions. Autocomplete is used by many search platforms like Facebook, Instagram, Google, etc.
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 :)
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.
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).
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.
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 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.
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.
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.
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.
MapReduce is a batch processing programming paradigm that enables massive scalability across a large number of servers in a Hadoop cluster. It was published in 2004, was called “the algorithm that makes Google so massively scalable.” MapReduce is a relatively low-level programming model compared to the parallel processing systems developed for data warehouses many years previously.
A web crawler is a system for downloading, storing, and analyzing web pages. It is one of the main components of web search engines that compile a collection of web pages, index it, and allow users to issue index queries and find web pages that match queries.
The objective of leader election is to provide one item (a process, host, thread, object, or human) specific powers in a distributed system. These specific abilities could include the capacity to delegate tasks, the ability to edit data, or even the responsibility for managing all system requests.
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.
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. In general, a rate limiter caps how many requests a sender can issue in a specific time window. Rate Limiter then blocks requests once the cap is reached.
In the common client-server architecture, multiple clients will communicate with a central server. A peer-to-peer (P2P) architecture consists of a decentralized network of peers, which are nodes that can act as both clients and servers. Without a central server's need, P2P networks distribute workload among peers, and all peers contribute and consume resources within the network.
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.
While building any Web Application, one needs to consider what kind of delivery mechanism would be best. The web has been built around the HTTP's request and response paradigm. However, such a paradigm faces the overhead problem of HTTP, and as a result, they are not suitable for low latency applications. In this blog, we focus on Web-Sockets, which are vital components behind the applications like multiplayer games or any application that rely on real-time data transfer. In this blog, we tried to give a complete insight into Web-Socket, how it works, and its key components. So without any much delay, let's look at what Web-Sockets are :)
CAP Theorem is an essential concept in distributed systems for designing networked shared data systems. It allows a distributed database system to have only two of these functionalities: Consistency, Availability, and Partition Tolerance. We can make trade-offs between the three available functionalities based on the unique use case for our system.
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.
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 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.
Consistent Hashing is the most widely used concept in a distributed system as it offers considerable flexibility in the scaling of the application. This blog discusses the key concepts and approaches which comes in handy while scaling out the distributed storage system. Consistent Hashing is beneficial and frequently applied to solving various system related challenges and is quite helpful in System Design Interviews.
Distributed systems are crucial in designing fault-tolerant, highly scalable, and low latency services. This blog will introduce you to the fundamentals of distributed systems, their functioning, and how they are applicable in real-world scenarios.
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.
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.
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.
Subscribe to get free weekly content on data structure and algorithms, machine learning, system design, oops design and mathematics.