1.
Motivation
2.
Anki flashcards
3.
Coding Resource: Interactive Coding Challenges
4.
Contributing
5.
Study guide
6.
How to approach a system design interview question
7.
System design interview questions with solutions
7.1.
Design Pastebin.com (or Bit.ly)
7.2.
Design the Twitter timeline and search (or Facebook feed and search)
7.3.
Design a web crawler
7.4.
Design Mint.com
7.5.
Design the data structures for a social network
7.6.
Design a key-value store for a search engine
7.7.
Design Amazon's sales ranking by category feature
7.8.
Design a system that scales to millions of users on AWS
8.
Object-oriented design interview questions with solutions
9.
System design topics: start here
9.1.
Step 1: Review the scalability video lecture
9.2.
Step 2: Review the scalability article
9.3.
Next steps
10.
Performance vs scalability
11.
Latency vs throughput
12.
Availability vs consistency
12.1.
CAP theorem
12.1.1.
CP - consistency and partition tolerance
12.1.2.
AP - availability and partition tolerance
12.2.
Source(s) and further reading
13.
Consistency patterns
14.
Availability patterns
14.1.
Fail-over
14.2.
Replication
14.3.
Availability in numbers
15.
Domain name system
16.
Content delivery network
17.
Load balancer
17.1.
Layer 4 load balancing
17.2.
Layer 7 load balancing
17.3.
Horizontal scaling
17.3.1.
Disadvantage(s): horizontal scaling
17.4.
Disadvantage(s): load balancer
17.5.
Source(s) and further reading
18.
Reverse proxy (web server)
18.1.
Load balancer vs reverse proxy
18.2.
Disadvantage(s): reverse proxy
18.3.
Source(s) and further reading
19.
Application layer
19.1.
Microservices
19.2.
Service Discovery
19.3.
Disadvantage(s): application layer
19.4.
Source(s) and further reading
20.
Database
20.1.
Relational database management system (RDBMS)
20.1.1.
Master-slave replication
20.1.1.1.
Disadvantage(s): master-slave replication
20.1.2.
Master-master replication
20.1.2.1.
Disadvantage(s): master-master replication
20.1.2.2.
Disadvantage(s): replication
20.1.2.3.
Source(s) and further reading: replication
20.1.3.
Federation
20.1.3.1.
Disadvantage(s): federation
20.1.3.2.
Source(s) and further reading: federation
20.1.4.
Sharding
20.1.4.1.
Disadvantage(s): sharding
20.1.4.2.
Source(s) and further reading: sharding
20.1.5.
Denormalization
20.1.5.1.
Disadvantage(s): denormalization
20.1.5.1.1.
Source(s) and further reading: denormalization
20.1.6.
SQL tuning
20.1.6.1.
Tighten up the schema
20.1.6.2.
Use good indices
20.1.6.3.
Avoid expensive joins
20.1.6.4.
Partition tables
20.1.6.5.
Tune the query cache
20.1.6.6.
Source(s) and further reading: SQL tuning
20.2.
NoSQL
20.2.1.
Key-value store
20.2.1.1.
Source(s) and further reading: key-value store
20.2.2.
Document store
20.2.2.1.
Source(s) and further reading: document store
20.2.3.
Wide column store
20.2.3.1.
Source(s) and further reading: wide column store
20.2.4.
Graph database
20.2.4.1.
Source(s) and further reading: graph
20.2.5.
Source(s) and further reading: NoSQL
20.3.
SQL or NoSQL
20.3.1.
Source(s) and further reading: SQL or NoSQL
21.
Cache
21.1.
Client caching
21.2.
CDN caching
21.3.
Web server caching
21.4.
Database caching
21.5.
Application caching
21.6.
Caching at the database query level
21.7.
Caching at the object level
21.8.
When to update the cache
21.8.1.
Cache-aside
21.8.1.1.
Disadvantage(s): cache-aside
21.8.2.
Write-through
21.8.2.1.
Disadvantage(s): write through
21.8.3.
Write-behind (write-back)
21.8.3.1.
Disadvantage(s): write-behind
21.8.4.
Refresh-ahead
21.8.4.1.
Disadvantage(s): refresh-ahead
21.9.
Disadvantage(s): cache
21.10.
Source(s) and further reading
22.
Asynchronism
22.1.
Message queues
22.2.
Task queues
22.3.
Back pressure
22.4.
Disadvantage(s): asynchronism
22.5.
Source(s) and further reading
23.
Communication
23.1.
Hypertext transfer protocol (HTTP)
23.1.1.
Source(s) and further reading: HTTP
23.2.
Transmission control protocol (TCP)
23.3.
User datagram protocol (UDP)
23.3.1.
Source(s) and further reading: TCP and UDP
23.4.
Remote procedure call (RPC)
23.4.1.
Disadvantage(s): RPC
23.5.
Representational state transfer (REST)
23.5.1.
Disadvantage(s): REST
23.6.
RPC and REST calls comparison
23.6.1.
Source(s) and further reading: REST and RPC
24.
Security
24.1.
Source(s) and further reading
25.
Appendix
25.1.
Powers of two table
25.1.1.
Source(s) and further reading
25.2.
Latency numbers every programmer should know
25.2.1.
Latency numbers visualized
25.2.2.
Source(s) and further reading
25.3.
Additional system design interview questions
25.4.
Real world architectures
25.5.
Company architectures
25.6.
Company engineering blogs
25.6.1.
Source(s) and further reading
26.
Under development
27.
Credits
28.
Contact info
29.
License
Light (default)
Rust
Coal
Navy
Ayu
Source(s) and further reading: wide column store