Introduction
Learning system design is kind of challenging. What I like to do is to watch a few videos on youtube.com first, and then I like to come out the idea how good those videos are.
This one I chose to watch is made by an Apple engineer. Here is the link. Let me rate this video as 10 out of 10.
I like to write down those topics I need to learn basics.
System design
Here are some notes I like to write down.
Ask good question. What features to work for, how much to implement.
Don't use buzzwords.
Clear and organized thinking
Drive discussion (80-20 rules)
- Features
- Define APIs
- Availability
- Latency performance
- Scalability
- Durability
- Class Diagram
- Security & privacy
- Cost effective
Let us move on the topics for system design:
- vertical vs horizontal scaling
- CAP theorem
- ACID vs BASE
- Partition/ Sharding Data
- consistent hashing
- Optimistic vs pessimistic locking
- Strong vs Eventual consistency
- Relational DB vs NoSql
- Type of NoSql
. key value
. wide column
. document based
. graph based
- Caching
- Data center/ Racks/ Hosts
- CPU/ Memory/ Hard drive/ Network bandwidth
- Random vs Sequential read/write on disk
- http vs http2 vs websockets
- TCP/ IP model
- Ipv4 vs ipv6
- TCP vs UDP
- DNS lookup
- Https & TLS
- Public key infrastructure & Certificate Authority
- Symmetrix vs Asymetric key
No comments:
Post a Comment