System Design Concepts List and related links to comprehensive reviews
Objectives :
π To have a comprehensive understanding of different software architectures ( SOA , Monoliths , Micro-Services )
π To confidently design complex systems such as Stripe , Amazon , Instagram ... While discussing the tradeoffs of a selected architectural style
π Identify and select various auxiliary services for special use cases in a system , while discussing their benefits and trade offs
Key Concepts ( Pre - Req's )
1> Scalability
2> Availability
3> Reliability
4> Replication
5> Load Balancing
> a. What problems do load balancers solve ?
>
> b. Types of Load Balancer
>
> c. Different Algorithms used in Load balancers
>
> d. Pros & Cons (discussing the trade-offs when to use LBs are when to avoid)
6> Caching
- What is caching? And what problems caching systems are trying to solve? - Cache Invalidation & Cache eviction policies
7> Sharding Or Data Partitioning
- Partitioning Techniques - Leader Selection
8> Challenges that Sharding brings into the system
- Joins & Denormalization
- Enforcing Integrity Checks & Validations
- Rebalancing
9> Indexing
- Need for Indexing and the problem Indexing is trying to solve
- MySQL Indexes
- NoSQL Indexes Challenges that Indexes bring into the systems
10> Proxies
11> Proxy Servers
- What problem Proxy servers are trying to solve?
- Types of Proxy Servers
12> Reverse Proxy Servers
13> Importance of Replication and Redundancy
14> NoSQL vs SQL
> - Differences between SQL & NoSQL (Storage, Schema, ACID properties, Scalability)
15> CAP (Consistency, Availability & Fault Tolerance) theorem
16> Distributed Hash Tables (DHTS) & Consistent Hashing
- What Problem Consistent Hashing is trying to solve?
- Examples when to use consistent hashing
17> HTTP Long Polling, Server Sent Events & Web-sockets
18> APIs (Application Programming Interfaces)
19> Client-Server Architecture and Peer-to-peer
20> Microservice Patterns
- Decomposition Pattern
- Strangler Pattern
- SAGA Pattern
- CQRS Pattern
20>Different Types of Storage
> - Object
> - File
> - Block
21> Message Queues
22> Gossip Protocols
23> Rate Limiting
Framework To Design Systems in System Design Interviews
Gathering Requirements
> - Functional
> - Non-Functional
>
High Level APIs provided by the system
Capacity Planning
Data Models
High Level Design
Focus On 1-2 individual components in the system
Network Protocols
Bottlenecks & Single Point Of Failures in the system
Caching
Security
Data Compression
Designing Distributed Systems (From Scratch)
Designing Uber, Rapido & Ola
Designing Swiggy, Zepto & Blinkit
Design Amazon Retail
Designing Facebook/Instagram
Design File sharing platforms (DropBox, Google Drive)
Design A Key-Value Store (Like Amazon DynamoDB)
Top comments (0)