Tuesday, September 21, 2021

Systems Design Interview Concepts (for software engineers / full-stack web)

Sept. 21, 2021

Here is the link. 

In this video, we discuss load balancing, CDNs, database replication, sharding, caching layers, database schema and indexes, distributed filesystems, and other ways to scale an application. You don't want to scale your design too early or needlessly, but consider where the bottlenecks are. Sometimes you will need database sharding for instance, while other times you may not need a database at all (ie., if the data does not need to persist to disk). Note: the concepts will differ somewhat for a frontend or mobile systems design, which are more focused on the client-side architecture and software design patterns.


Topics:

  1. Load balancer | roudn robin, hash IP address, more 
  2. Cache - Redis, Cassandra, memCache | CDN 
  3. database replication -> slave database | replication | consistency 
  4. horizontal sharding | consistent hashing | master table for sharding algorithm
  5. NoSQL database - key value pair, hybrid - ?
  6. API design - Jason, protocol buffer, make it fast | Ask clarification | simplicity 
Replay | My second play notes

  1. Senior, Facebook | two system design interviews 
  2. Framework, design pattern, scalability 
  3. Top concepts - Load balancer - throughput, latency, ... NGINX | DNS load balancing | Round robin | web server not go down
  4. Caching - memcached - memcached, redis, 
  5. CDN - pool technique - fetch and cache | push - high frontend cost 
  6. Distributed file system - 
Replay third time | My notes 

  1. Framework, design pattern, a lot of them relate to scalability 
  2. CDN - image, javascript file, CSS, all others | Pull technique | first visit slow | high front cost 
  3. Distributed file system - Amazon S3 | database index | query | ...



No comments:

Post a Comment