DEV Community

Cover image for System Design (Comprehensive List)
Chiranjeev Thomas
Chiranjeev Thomas

Posted on

System Design (Comprehensive List)

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)
Enter fullscreen mode Exit fullscreen mode

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)