- System Design Cheatsheet · GitHub
- System Design Primer
- Components of System Design
- Client Server Architecture
- Proxies
- Data & Data Flow
- Databases types: SQL, NoSQL, Column, Search, Key Value
- Anatomy of applications and services
- Application Programming Interface (API)
- Caching | Cache Patterns | Cache Invalidation & Eviction
- What is a REST API? | CRUD APIs| REST vs HTTP
- Message Queues | Producer Consumer Model
- Pub Sub Messaging | Publisher Subscriber(Part 1 of 2)
- Pub Sub Use Cases | Publisher Subscriber (Part 2 of 2)
- Performance Metrics
- Performance Metrics of components in a software
- Fault and Failure in distributed systems
- Horizontal vs vertical scaling
- Database Replication | Synchronous vs Asynchronous
- CAP | Consistency, Availability and Partitioning
- What is CAP Theorem? Degrees of CAP theorem, use cases
- What is Database Sharding, Logical and Physical Shards, Dynamic vs Algorithmic Sharding
- Key based Sharding | Shard Key | Hash function | Advantages and disadvantages
- Range based sharding | Advantages and disadvantages | Hotspots
- Directory based sharding
- Basics of consistent hashing
- How to solve capacity estimation problems faster?
- Bloom Filter
- Cache Stampede
- Request Coalescing
- Three Tier Caching
- Consistent Hashing
- Count min sketch
Easy
Medium
- Design Uber
- Design Instagram
- Design Facebook Messenger
- Design URL Shortener
- Design Dropbox / Google Drive
- Design News Feed System / Quora
- Design Price Surging Service
- Design AirBnb
- Desgin Distributed Queue
- Design Rate Limiter
- Design Distributed cache
Hard
- Cassandra writes in depth. Surprises you can expect from a… | by Andrzej Ludwikowski
- Cassandra Data Modelling
- Why Cassandra writes faster than Traditional RDBMS?
- When to use Cassandra and when to steer clear
- Log Structured Merge Trees
- How is data read? | Apache Cassandra 3.0
- Redis Persistence – Redis
- Goodbye Cache: Redis as a Primary Database
- Transactions in Redis
- Partitioning: how to split data among multiple Redis instances. – Redis
- Horizontal scaling in/out techniques for redis cluster
- Redis Cluster
- Key Problems with Redis Persistence
- Elasticsearch from the Top Down
- Uses of Elasticsearch, and Things to Learn
- Elasticsearch from the Bottom Up, Part 1
- Comparing Data Stores for PostgreSQL - MVCC vs InnoDB
- Postgres MVCC
- PostgreSQL 10: Partitions of partitions!
- Choose the right data store - Azure Application Architecture Guide
- Redis vs Aerospike
- Elasticsearch vs MongoDB
- MongoDB vs CouchDB
- All Company Blogs !!
- Building Reliable Reprocessing and Dead Letter Queues with Kafka
- A Practical Introduction to the Internals of Kafka Storage
- How To Design A Scalable Rate Limiting Algorithm
- Data Compression for Large-Scale Streaming Experimentation | by Netflix Technology Blog
- WhatsApp-Engineering Inside-1. Real Time messaging are now an…
- WhatsApp-Engineering Inside-2. In "WhatsApp-Engineering Inside-1" we…
- NETFLIX system design. System Design
- A Design Analysis of Cloud-based Microservices Architecture at NetflixMicroservice Architecture pattern
- Resiliency: Cache Me If You Can
- Microservices Design Patterns
- Kafka Message Delivery Semantics
- Replication In Depth - Kafka
- Design Decisions for Scaling Your High Traffic Feeds
- The Architecture Twitter Uses to Deal with 150M Active Users, 300K QPS, a 22 MB/S Firehose, and Send Tweets in Under 5 Seconds
- Instagram Saves Switching to Cassandra from Redis
- Jepsen Blog
- Aerospike Developer Blog – Medium
- Patterns for distributed transactions within a microservices architecture
- A Guide to Atomikos
- How to do distributed locking
- Taming Garbage Collection
- Jeff Dean's talk at Stanford
- Building Billion user Load Balancer at Facebook
- Netflix Guide to Microservices
- Amazon DynamoDB deep dive
- Twitter: Timelines at Scale
- The Google File System
- Dynamo: Amazon's Highly Available Key-value Store
- MapReduce: Simplified Data Processing on Large Clusters
- TAO: Facebook's Distributed Data Store for the Social Graph
- Kafka: a Distributed Messaging System for Log Processing
- Bigtable: A Distributed Storage System for Structured Data
- Spark: Cluster Computing with Working Sets