Designing a Robust Web Crawler - From Requirements to Implementation
Have you ever wondered how a search engine knows about the contents of a web page? How does it know when the contents of the page are updated? Well, the simple answer is web crawlers.
Memcached at Scale- How Facebook Scaled and Optimized for Massive Request Volumes
Facebook, one of the world largest social media platforms, handles billions of requests per second and stores trillions of key-value pairs. To manage this scale, Meta uses Memcached, a simple Key-Value cache that stores data in memory. Since users consume a lot of content than they create caching had significant advantages. It reduced latency, reduced load on database servers, and much more. In this blog, we will explore Meta strategy for scaling their Memcached clusters to handle their high demand and discuss optimizations in these areas to improve performance and storage.
Making a Dynamic Renderer with Golang from Scratch
Understanding Dynamic Rendering- Why It Matters for Your Website SEO
Mastering Factory Design Patterns through the Construction of a Banking System
Understanding how factory pattern works by building a banking system
Preventing Goroutine Leaks- Best Practices and Tips for Go Developers
Lets deep dive into goroutines, and what are the best practices to avoid leaks
Cache - Fundamentals
What are the different types of caches? How do we pick the best write policies for our use cases? And what replacement policies does Memcache use to improve performance?
Single Point of Failure
What is a Single Point Of Failure? How do we identify it in a system and how can we avoid it?
Horizontal v/s Vertical Scaling
How do we scale systems to handle a large number of requests? Different methods of scaling and their advantages and disadvantages.
Consistency in Distributed System
What are the different types of consistency levels? What is transaction isolation and how do we implement different types of transaction isolation?
Event Driven Architectures
What is an event driven architecture? How is it different from request-repsonse architecture? And what are its advantages and disadvantges?
Cache - Low-Level Design
Designing a cache with asynchronous processing, read your own write policy, request collapsing and many other features
Data Replication in Distributed System
How does data replication ensure availability, what is master-slave architecture, and solving the Split-Brain Problem.
Designing a Live Video Streaming System Like ESPN
How would you design a fault-tolerant video streaming system like ESPN? And what are the protocols and services that make it possible?
How do databases recover from failure?
In this blog, we will discuss one of the most widely used recovery techniques called Log-Based Recovery.
How to design good APIs?
We will learn what is an API, What is a good API and how to design them?
Computer Networks Fundamentals
The different layers of computer networks, TCP, UDP. Communication Standards like REST, and GraphQL and versions of HTTP and the problems solved by them.
What is database sharding?
How would you make your relational databases scalable and available and what are the trade-offs that you should keep in mind?
What are NoSQL databases ?
What makes NoSQL databases different and what are the tradeoffs compared to relational databases.
How Netflix onboards new content onto their platform
Video onboarding, processing and storing at Netflix is complex. We pick each part of this process and dive in detail.
Distributed Rate Limiting
Rate limiting with multiple microservices is tricky, and can lead to cascading failures if done poorly. How is a global rate limiter implemented at scale?
High Level Design for Instagram News Feed
How would you design the backend for Instagram Feed? Persisting posts, comments, likes, authentication, images and notifying users.
Migrating from a Monolith to Microservices
Moving from a monolith architecture to microservices is complex, but sometimes worth it. Here is a detailed plan on how to do so.
Low Level Design for Event Bus
What is an event bus, how do we handle concurrent events, ordering, and idempotency?
WhatsApp Calling - High Level Design
How can you make a phone call over the internet? What is VOIP and PSTN? How do you bill users per minute, following regulations of different regions, and pick the most efficient provider for each call are discussed here.
Low Level Design of Splitwise
Simplified Transitive Payments, graph algorithms and group payments with code.
How can we design an audio search engine?
Given an audio signature, how can you match it to a list of sounds in your database?
High Level Design for Gmail
How would you design an emailing service like Gmail? Registering users, authenticating them otps (Two-factor auth), service deployments and group mailing.
What is a load balancer?
A fundamental component of large scale distributed systems, here is how a load balancer sends requests from clients to servers efficiently.
Workflow Management platform like Airflow and Flink
Workflow management that processes data in real-time and in batches. Engineering optimizations needed to make the system fault tolerant.