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

Popular posts from this blog

Full Stack Java Developer - FAQ

DSA Interview Coding Questions

Java Interview Question - New FAQs