The prerequisite for learning the Instagram architecture design is, how to design a URL Shortner Service like a tiny URL. Please read it here…

1. What is Instagram?

Instagram is a free photo & video-sharing and social networking service that is very popular.

In this tutorial, we will learn to design a simple architecture of Instagram that enables users to share photos, follow other users and create a unique “NewsFeed” for each user consisting of top photos from accounts they follow.

2. Design Goals

Our service should provide the following features to a user:

Mandatory Features

  1. Users should be able to upload and view photos.
  2. Users can…


System Design Guide Nlogn
System Design Guide Nlogn
System Design Guide

System Design” or “ System Architecture “ is a very popular term when it comes to job interviews at Big tech companies like Facebook, Google, DELL, Netflix, etc. and some people do find it intimidating. But not anymore. At Nlogn we have designed a System Design Guide to help you get an in-depth understanding of every concept by teaching you basic software architecture concepts and how to create the system architecture of Large Systems and help you ace the next System Design Interview.

What is System Design?

The system design is a systematic approach to designing modules, architecture, interfaces, or APIs to meet…


DNS(Domain Name System) is a decentralized naming system that converts domain names(such as nlogn.in) to its corresponding IP addresses.

Each device connected to the internet has a unique IP address, which is a 32-bit number for example 152.52.0.1(in IPv4), and remembering such an IP address is almost impossible. The solution to this problem was using English letters, as we humans beings are good at memorizing English words. Hence the concept of Domain Name came into the picture. Each domain name is a combination of English alphabets(generally) and points to an IP address.

To create a mapping between domain names and…


Photo by Dennis Kummer on Unsplash

Before discussing the difference between Eventual & Strong Consistency, let’s first understand consistency in distributed systems.

A consistent distributed systems are those in which all nodes see the same data at the same time. In other words, if we perform read operations after multiple write operations then a consistent system should return the same value for all the read operations and that too the value of the most recent write operation.

To understand this concept properly, I highly recommend reading about CAP Theorem.

Eventual Consistency

Eventual consistency guarantees that if an update is made to the data of a node (say node…


Consistency, Availability, Partition Tolerance

Photo by Michael Dziedzic on Unsplash.

The CAP theorem, also known as Brewer’s theorem, states that it is impossible for any distributed database system to provide more than two of the following properties together:

  • Consistency
  • Availability
  • Partition tolerance


Photo by Marc Sendra Martorell on Unsplash

Let’s say we are designing a social networking app and call it Nlognconnect and we will try to make is fast using cache first policy and Redux state management tool.

Nlognconnect will work by automatically pushing data to the users/client device, instead of waiting for a client to explicitly request it. But there is an issue using only this approach and that is a blank screen for a while.

As a user turns up the Nlognconnect app, and if his bandwidth/connectivity is low, in such case user will experience an empty white screen for a while until something is not…


Photo by Joshua Sortino on Unsplash

Database sharding is a process of breaking up large tables into multiple smaller tables, or chunks called shards, and distributing data across multiple machines or clusters. Each shard has the same schema and columns like that of the original table but data stored in each shard is unique and independent of other shards.


Photo by Makarios Tang on Unsplash

Ever wondered how tech giants providing access to their services using API, control the number of requests that can be made by the requester/user per hour. Example GitHub allows 5000 requests per hour per user, Facebook allows only 200 calls per user per hour, etc.

Let’s learn how these tech giants implement rate-limiting.

Introduction to Rate Limiting

Rate limiting is a defensive measure for API or services. It provides a mechanism to limit the number of requests to our API or service in a given time period. …


Photo by Jason Leung on Unsplash

A message queue comprises of two terms message and queues. Let’s understand them before understanding the message queue.

Message — A message is a data passed between a sender and receiver applications. It is anything like a plain message or a status code or a command to execute some task, etc.

Queue — A message queue allows applications or services to asynchronously communicate with each other by sending messages and storing the message in a temporary buffer (called queue) if the destination program is busy or not active.

Asynchronous behaviour

The message queue provides an asynchronous communication protocol which means the producer…


HTTP is the most common method of data transfer in client server-based architecture. But there are two ways to data transfer: HTTP Push and HTTP Pull. Let’s understand them.

HTTP Pull

In the HTTP pull method, the client sends a request to the server and the server responds to that request (and the connection is closed). The client pulls the data from the server whenever it requires (by creating a new connection). And it keeps doing it over and over to fetch the updated data.

The most common example of this is the REST API calls or Remote Procedure Calls (RPC). In…

Mayank Joshi

I read books because it helps me stay relevant.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store