System Design Interview
1) Requirement Clarification:
First get it clarify the questions to understands the problem and expectation from interviewer
1.1) Functional Requirements (Business Requirements)
- Focused use cases to cover MVP (Minimal Viable Product)
- In-scope and Out-scope points
- Who/How will use the system
- Total/Daily active users
1.2) Non-Functional Requirements (NFR)
- Is system Highly available or Highly consistent?
- CAP theorem?
- Does system required low latency?
- Does the system needs to be reliable?
- Latency/throughput expectations
- QPS(Query per second) Read/Write ration
- Traffic estimates
- Storage estimates
- Memory estimates
2) API Design
- Outline the different Rest API's required as per use cases scenario
3) Database Schema Design
- Identity the type of database needed like RDBMS (SQL) or No-SQL
- If RDBMS, design the schema objects like Tables, Columns and relationship with other tables by using Normalization forms methods
- If No-SQL, design the attributes will be used
4) System's Detailed Design
Draw and explain the high level design components of system get involved
- Consumer of system via client (Mobile, Browser, Thick client tool etc.)
- DNS (Domain Name System)
- CDN (Content Delivery Network) - It is a network of interconnected servers that speeds up webpage loading for data-heavy applications. CDN can stand for content delivery network or content distribution network.
- Load balancer (LB)
- Web or Application Servers
- Microservice architecture design
- Any Blob or Object storage
- Proxy or Reverse proxy settings
- Cache at various level (Client side, CDN, Server side, Database end, Application level caching)
- Messing systems for queues for asynchronous communications
Identify observability methods like scaling, availability and reliability
- Scaling individual components - Horizontal or Vertical
- Database partitioning methods - Horizontal, Vertical or Directory based
- Database partitioning criteria's - Range based , Hash based or Round robin
- Replication & Redundancy - Redundancy on Primary & Secondary server
- Replication - Data replications from active to mirrored database
- Databases - SQL - Sharding, indexes, Master-Slave, Master-master, Denormalization
- No-SQL - Key-value documents, Wide-column, Graph(g) communication protocols & standard like IP, TCP, UDP, HTTPS, RPC, REST, Web sockets
Sample High level design architecture diagram:
Comments
Post a Comment