Tech IndustryNov 21, 2019
Newearni

System design approach

Below is my approach when I have a system design question. Could anyone see if I am missing something? is this totally wrong approach? Thanks a lot in advance. 1. Ask questions. - ask who is a user - ask what is going to use this service (devices? api?) - ask how many users (metrics) 2. Ask features - ask what are core features for MVP - ask nice to have features (if time left, talk about these) 3. Go over things to consider - scalability (horizontal vs vertical) - high availability (fault tolerance) - performance - CAP theorem 4. Draw the architecture on the whiteboard - how user interacts with the services (http, websocket) - WAF - Load balancers - APIs (microservices) - Caching (memcachd, redis, CDN) - Database (SQL, NoSQL) - Failover

Intel qePv13 Nov 21, 2019

System design is very open ended so you have the gist of it correct. Just make sure to change items in step 3 depending on the answers you get in step 1 and 2. I've seen people plow ahead with microservices and distributed databases even when the system only had a couple thousand users occasionally doing stuff.

New
.Username Nov 21, 2019

These are good points but one extremely important point to note is SD interviews are extremely interviewer specific. Need to carefully calibrate your approach to what the guy is asking and expecting.