System Design Interview fundamental concepts and popular topics

Anil Kurmi
System Design Interview Question
2 min readJun 2, 2020

System design interview questions now a days becoming like a must have skill. If you are a experienced developer and looking for top companies, you must understand the fundamental concepts of designing large scale system.

In this post, we will navigate this diverse land of system design by given some short description and lots of reference links to understand each concept in depth. It start with designing simple architecture that scale. we keep adding more services as requirement grows but how do we handle scalability, data consistency and maintainability.

1. Scalable Architecture

Scalability is most important concept while designing architecture, Scalability is the system’s ability to perform and give reasonable performance in the situation of heavy load. it is all about how can we add more services or hardware to achieve if product become popular and more and more users stated using it.

These are various ways to achieve scalability

  1. Design simple Component/Service
  2. Adding Load balancer
  3. Statelessness
  4. CDN
  5. Loose coupling using Message Queue
  6. Using Distributed Cache e.g. Redis, Memcached
  7. Database Sharding
  8. Proxy server

2. Handling Failure of Network/Service

  1. Retry
  2. Circuit-breaker pattern
  3. Rate limiter
  4. Time
  5. Network latency
  6. Availability using cloning
  7. Network capacity estimation
  8. Response Time estimation

3. Database

  1. Data Model designing e.g. Class Diagram ,ER diagram
  2. Database Sharding
  3. Indexing concepts and algorithms, underlying data-Structure B-Tree, Hash Table
  4. Data Consistency
  5. Data Replication
  6. NoSQL
  7. Key Generation algorithms

4. Data Consistency Handling in Distributed Services

5. CAP theorem

6. API Gateway

7. Communication style

8. Observability and Tracing

9. Storage

  1. File Storage
  2. S3
  3. HDFS
  4. Key-Value

10. High Level API Designing

--

--