Category: System Design
-
QPS and storage calculation of a twitter
Hello friends, Today, let’s undersand how to calculate QPS (Query Per Second) and Storage calculation of a twitter app (now a days called x). Let’s get started. QPS (Query Per Second) Calculation: Storage capacity planning (1 year): For easy calculation, some of the numbers are taken conservately however the goal was to explain the concept…
-
Latency, bandwidth and throughput are not same
Hello friends, Today we shall discuss similar looking terms in networking such as Latency, bandwidth and throughput. Sometimes they are used interchangeably however in reality, they are not same. Let’s go through them one by one and try to get clarity. Latency– Delay or time it takes for a single data packet to travel from…
-
Network Protocols Every Developers Should Know
Hello Friends- Hope you’re doing well. Today we shall go over some of the super basics of networking that developers should know. This can be helpful when deciding load balancers and application gateways during system design. TCP/IP -> Transmission Control Protocol/ Internet Protocol supports communication between different network devices on the internet. The TCP model…
-
YouTube System Design-1
Hello friends, Hope you’re doing well. In today’s blog, let’s go though the system design of YouTube. In first part, we shall talk about the capacity estimation of upload engine of YouTube. Storage Estimation (Per Day): Let’s assume number of users – 1B No of users uploading videos = 1B / 1000 [1 in 1000]=…
-
What is Database Sharding?
Database sharding is a method for horizontal scaling of databases, where the data is split across multiple database instances, called as shards. Sharding sometimes called as data partitioning. Sharding helps to improve performance and scalability. Advantages: Disadvantages: Type of Sharding: When to use sharding? Hope you liked the blog. Look forward to your comments/suggestion below.
-
Working with Prototype Design Pattern
Hello friends, I am resuming series on design patterns. Today we will go through another design pattern called Prototype. It falls under a creational pattern category. Before talking about its implementation let’s begin with defining it. A prototype is a design pattern that believes and enforces object cloning or copying over new object creation. But…
-
Working with Facade Software Design Pattern
Hello friends, Hope you are doing well. Today we will be looking into another software design pattern called Facade. Before talking about its implementation, let’s begin by defining it. As per GOF guys, Facade pattern is defined as: “Provide a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface…
-
Working with Bridge Software Design Pattern
Hello friends, I am here to go though one of the useful design pattern called Bridge. Before talking about its implementation let’s begin with defining it. As per GOF guys, Bridge Pattern is defined as follows. “Decouple an abstraction from its implementation so that the two can vary independently.” Well! Let’s understand what they mean…
-
Working with Builder Software Design Pattern
Hello friends, Hope you are doing great. Today Lets go through another software design pattern called Builder. Before talking about its implementation let’s begin with defining it. As per GOF, Builder pattern is defined as following. “Separate the construction of a complex object from its representation so that the same construction process can create different…
-
Working with Abstract Factory Pattern
Hello friends. Today I am here to go though another variant of Factory design pattern called Abstract Factory. In case, you have not had a look at my previous article about Factory pattern, I would suggest you to look for them in ARCHIVES section. Before talking about its implementation let’s try to understand the purpose…
