System Design Definitions

Section 2. Scaling the Compute/Service Layer
- Load Balancer
- 2.1 Load Balancer
- 2.2 Private IP Address
- 2.3 NAT
- 2.4 Database Replication
- 2.5 Cache
- 2.6 Client Side Cache
- 2.7 CDN Edge Cache
- 2.8 Server Cache
- 2.9 Database Cache
- 2.10 Expiration Policy
- 2.11 Consistency
- 2.12 Mitigating Failures
- 2.13 Eviction Policy
- 2.14 CDN
- 2.15 Cost
- 2.16 Appropriate Cache Expiry
- 2.17 CDN Fallback
- 2.18 Invalidation
System Design Intro
Hub for question card definitions. Will be linked to diagrams across all system design notes.
Will be ordered by system design intro section
Section 1. Single Machine Fundamentals
- Single Server
1.1 Server
Responsible for serving an API and return data to user or others systems
- etc
1.2 Client
Responsible for consuming an API and presenting data to users or other systems Rely on servers to process requests and return results
- any software or device that initiates requests to a server or service over a network
- web browsers
- mobile apps
- desktop programs
- any service consuming an API
1.3 DNS
- responsible for resolving domain names into IP addresses
- (e.g.,
www.google.comto 8.8.8.8) - system usually provided by third parties
- registrars
- hosting providers
- dedicated DNS services
1.4 Domain Name
- human readable address of a resource on the internet
- acts as an alias for an IP address, easier to remember
- registered through registrars
- resolved to IP addresses via DNS
1.5 IP Address
- numerical label assigned to device on a network
An Internet Protocol (IP) address is the numerical label assigned to a device on a network. It is returned to the browser or mobile app after a DNS lookup so the client knows where to send requests.
1.6 HTTP Protocol
Hypertext Transfer Protocol (HTTP) is an application level protocol used for communication between clients (e.g., browsers, mobile apps) and servers on the web. It defines how requests and responses are formatted and transmitted over TCP/IP networks.
HTTP itself does not define the format of the data being sent, it only provides a way to transport it (e.g. of data being sent: HTML, JSON, img, binary files).