Network Fundamentals Review
Network Fundamentals Review¶
Overview¶
This document reviews essential network concepts for system design. You'll learn DNS operation and DNS-based load balancing, CDN Push/Pull models, features of HTTP/2 and HTTP/3, and criteria for choosing between REST and gRPC.
Difficulty: ββ Estimated Study Time: 2-3 hours Prerequisites: Networking folder basics
Table of Contents¶
- DNS Operation and Load Balancing
- CDN (Content Delivery Network)
- HTTP/2 and HTTP/3
- REST vs gRPC
- Practice Problems
- Next Steps
- References
1. DNS Operation and Load Balancing¶
1.1 DNS Operation Review¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DNS Query Process β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Client β
β β β
β β 1. www.example.com? β
β βΌ β
β βββββββββββββββββββββ β
β β Local DNS Resolverβ β ISP or 8.8.8.8 (Google) β
β β (Recursive) β β
β βββββββββββ¬ββββββββββ β
β β 2. Where is .com? β
β βΌ β
β βββββββββββββββββββββ β
β β Root DNS Server β (a.root-servers.net, etc. 13 total) β
β βββββββββββ¬ββββββββββ β
β β 3. Returns .com TLD server address β
β βΌ β
β βββββββββββββββββββββ β
β β TLD DNS Server β (.com, .org, .kr, etc.) β
β βββββββββββ¬ββββββββββ β
β β 4. Returns example.com NS β
β βΌ β
β βββββββββββββββββββββ β
β β Authoritative DNS β (responsible for example.com) β
β βββββββββββ¬ββββββββββ β
β β 5. A record: 93.184.216.34 β
β βΌ β
β Client ββββββ Returns IP address β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1.2 DNS-Based Load Balancing¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DNS Load Balancing Methods β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. Round Robin DNS β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β www.example.com β 192.168.1.1 β β
β β www.example.com β 192.168.1.2 β β
β β www.example.com β 192.168.1.3 β β
β β β β
β β 1st request β 192.168.1.1 β β
β β 2nd request β 192.168.1.2 β β
β β 3rd request β 192.168.1.3 β β
β β 4th request β 192.168.1.1 (cycles back) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 2. Weighted Round Robin β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Server A (Weight: 5) β 50% traffic β β
β β Server B (Weight: 3) β 30% traffic β β
β β Server C (Weight: 2) β 20% traffic β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 3. Geolocation DNS β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Korean users β Seoul server (ap-northeast-2) β β
β β US users β Virginia server (us-east-1) β β
β β European users β Frankfurt server (eu-central-1) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 4. Latency-based DNS β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Routes to server with lowest latency from user location β β
β β Provided by AWS Route 53, Cloudflare, etc. β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1.3 DNS Load Balancing Limitations¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DNS Load Balancing Limitations β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. TTL-induced delay β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Traffic continues to failed server until TTL expires β β
β β β’ Low TTL = fast failure response but high DNS query load β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 2. Client caching β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Browsers/OS cache DNS results β β
β β β’ Server-side changes don't reflect immediately β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 3. Uneven distribution β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Large ISP's DNS Resolver represents many users β β
β β β’ All users from that ISP connect to same server β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 4. Health check limitations β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Difficult to check real-time server status β β
β β β’ Less sophisticated health checks than dedicated LB β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Solution: Use DNS + L4/L7 load balancer combination β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2. CDN (Content Delivery Network)¶
2.1 What is CDN?¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CDN Concept β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β CDN = Geographically distributed server network β
β Serving static content close to users β
β β
β βββββββββββββββ β
β β Origin β β
β β Server β β
β ββββββββ¬βββββββ β
β β β
β ββββββββββββββΌβββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β βββββββββββ βββββββββββ βββββββββββ β
β β Edge β β Edge β β Edge β β
β β Server β β Server β β Server β β
β β (Seoul) β β (Tokyo) β β (NY) β β
β ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ β
β β β β β
β βΌ βΌ βΌ β
β Korean users Japanese users US users β
β β
β Advantages: β
β β’ Reduced latency (respond from nearby server) β
β β’ Reduced Origin server load β
β β’ DDoS defense β
β β’ High availability β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2.2 Push vs Pull CDN¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Push CDN vs Pull CDN β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Push CDN (Pre-distribution) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Origin Server β β
β β β β β
β β β Admin manually uploads β β
β β βΌ β β
β β βββββββββββ βββββββββββ βββββββββββ β β
β β β Edge 1 β β Edge 2 β β Edge 3 β β β
β β β (Seoul) β β (Tokyo) β β (NY) β β β
β β βββββββββββ βββββββββββ βββββββββββ β β
β β β β
β β Features: β β
β β β’ Upload directly on content change β β
β β β’ Pre-distributed to all edges β β
β β β’ Fast response from first request β β
β β β β
β β Suitable: Large files that change infrequently β β
β β (videos, game patches) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Pull CDN (Cache on request) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β User Request β β
β β β β β
β β βΌ β β
β β βββββββββββ Cache Miss? βββββββββββββββ β β
β β β Edge βββββββββββββββββββββββ Origin β β β
β β β Server β ββββββββββββββββββββ β Server β β β
β β βββββββββββ Fetch & Cache βββββββββββββββ β β
β β β β β
β β β Cached response β β
β β βΌ β β
β β User β β
β β β β
β β Features: β β
β β β’ First request fetches from Origin β β
β β β’ TTL-based cache management β β
β β β’ Simple operation (automatic caching) β β
β β β β
β β Suitable: Website static assets (images, CSS, JS) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2.3 Comparison Summary¶
| Item | Push CDN | Pull CDN |
|---|---|---|
| Distribution | Admin manually uploads | Automatic cache on request |
| First request | Immediate response | Origin access needed |
| Cache management | Manual | Automatic (TTL) |
| Storage cost | High (full distribution) | Low (as needed) |
| Suitable for | Large, infrequently changed files | Frequently changing content |
| Examples | Game updates, movies | Websites, API responses |
2.4 CDN Cache Invalidation¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CDN Cache Invalidation Strategies β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. TTL (Time To Live) setting β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Cache-Control: max-age=3600 (expire after 1 hour) β β
β β Cache-Control: s-maxage=86400 (CDN only, 1 day) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 2. Purge (immediate deletion) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Force delete cache for specific URL β β
β β β’ Use for urgent fixes β β
β β β’ API call: POST /purge?url=... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 3. Versioning (include version in filename) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β /static/app.v1.js β /static/app.v2.js β β
β β /static/app.abc123.js (use hash) β β
β β β β
β β Advantage: Deploy new version without cache invalidation β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 4. Soft Purge (Stale-While-Revalidate) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Serve stale cache while refreshing in background β β
β β Cache-Control: stale-while-revalidate=60 β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3. HTTP/2 and HTTP/3¶
3.1 HTTP Version Comparison¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP Version Evolution β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β HTTP/1.1 (1997) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Request 1 βββββββΆ Response 1 β β
β β Request 2 βββββββΆ Response 2 (sequential) β β
β β Request 3 βββββββΆ Response 3 β β
β β β β
β β Problems: β β
β β β’ Head-of-Line Blocking (HOL) β β
β β β’ One request per connection β β
β β β’ Workarounds: domain sharding, sprite images β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β HTTP/2 (2015) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β βββββββββββββββββ Single TCP Connection ββββββββββββββ β β
β β β β β β
β β β Stream 1 ββββββββΆ ββββββββΆ ββββββββΆ β β β
β β β Stream 2 ββββββββΆ ββββββββΆ ββββββββΆ (parallel) β β β
β β β Stream 3 ββββββββΆ ββββββββΆ ββββββββΆ β β β
β β β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Improvements: β β
β β β’ Multiplexing (multiple streams in one connection) β β
β β β’ Header Compression (HPACK) β β
β β β’ Server Push β β
β β β’ Binary Protocol β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β HTTP/3 (2022) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β βββββββββββββββββ QUIC (UDP-based) ββββββββββββββββββββ β β
β β β β β β
β β β Stream 1 ββββββββΆ (independent, no packet loss) β β β
β β β Stream 2 ββββββββΆ β β β
β β β Stream 3 ββββββββΆ β β β
β β β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β Improvements: β β
β β β’ 0-RTT connection (on reconnection) β β
β β β’ Independent packet loss handling per stream β β
β β β’ Connection Migration (connection survives IP change) β β
β β β’ Built-in encryption (TLS 1.3) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3.2 HTTP/2 Key Features¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP/2 Core Features β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. Multiplexing β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β HTTP/1.1: βββββββββββββββββββββββββββββββββββββββββββ β β
β β β Req1 β Res1 β Req2 β Res2 β Req3 β Res3 β β β
β β βββββββββββββββββββββββββββββββββββββββββββ β β
β β β β
β β HTTP/2: βββββββββββββββββββββββββββββββββββββββββββ β β
β β β R1βR2βR3βS1βS2βS1βR3βS3βS2βS3β β β
β β βββββββββββββββββββββββββββββββββββββββββββ β β
β β (frame-level interleaving) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 2. Header Compression (HPACK) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β HTTP/1.1: β β
β β GET /page HTTP/1.1 β β
β β Host: example.com β β
β β User-Agent: Mozilla/5.0... (repeated, ~800 bytes) β β
β β β β
β β HTTP/2: β β
β β β’ Static table (pre-defined common headers) β β
β β β’ Dynamic table (store repeated headers during session) β β
β β β’ Huffman encoding β β
β β β 85-88% header size reduction β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 3. Server Push β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Client: GET /index.html β β
β β Server: β β
β β β Response: /index.html β β
β β β Push: /style.css (send before request) β β
β β β Push: /app.js β β
β β β β
β β Caution: Can conflict with client cache, use carefully β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3.3 HTTP/3 (QUIC) Advantages¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β HTTP/3 (QUIC) Advantages β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. Independent stream handling β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β HTTP/2 (TCP): All streams wait on packet loss β β
β β β β
β β Stream 1 ββββ³ββββββββββββββββββ (loss) β β
β β Stream 2 ββββββββββββββββββββ (waiting) β β
β β Stream 3 ββββββββββββββββββββ (waiting) β β
β β β β
β β HTTP/3 (QUIC): Only lost stream affected β β
β β β β
β β Stream 1 ββββ³ββββββββββββββββββ (retransmit) β β
β β Stream 2 βββββββββββββββββββββββ (continue) β β
β β Stream 3 βββββββββββββββββββββββ (continue) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 2. Fast connection establishment (0-RTT) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β TCP + TLS 1.3: 2-3 RTT needed β β
β β ββββββ ββββββ β β
β β β C βββSYNβββΆβ S β β β
β β β ββSYN+ACKβ β 1 RTT (TCP) β β
β β β βββACKβββΆβ β β β
β β β βββββββββΆβ β 1 RTT (TLS) β β
β β ββββββ ββββββ β β
β β β β
β β QUIC (reconnection): 0 RTT β β
β β ββββββ ββββββ β β
β β β C βββDATAββΆβ S β Immediate data transfer β β
β β β βββββββββΆβ β (reuse previous session key) β β
β β ββββββ ββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 3. Connection Migration β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Wi-Fi β LTE switch: β β
β β β β
β β TCP: Connection drops, need reconnection β β
β β QUIC: Connection ID-based, connection survives β β
β β β β
β β Big advantage in mobile environments! β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3.4 Version Comparison Table¶
| Feature | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| Transport Layer | TCP | TCP | QUIC (UDP) |
| Multiplexing | X | O | O |
| HOL Blocking | O | Partial (TCP) | X |
| Header Compression | X | HPACK | QPACK |
| Server Push | X | O | O |
| Connection Setup | 1-2 RTT | 1-2 RTT | 0-1 RTT |
| Connection Migration | X | X | O |
4. REST vs gRPC¶
4.1 Overview¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β REST vs gRPC Overview β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β REST (Representational State Transfer) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β’ HTTP-based architectural style β β
β β β’ JSON/XML format β β
β β β’ Resource-centric (URL + HTTP Method) β β
β β β’ Stateless β β
β β β β
β β GET /users/123 β β
β β POST /users β β
β β PUT /users/123 β β
β β DELETE /users/123 β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β gRPC (Google Remote Procedure Call) β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β’ HTTP/2-based β β
β β β’ Protocol Buffers (Protobuf) serialization β β
β β β’ Function call style β β
β β β’ Bidirectional streaming support β β
β β β β
β β service UserService { β β
β β rpc GetUser(GetUserRequest) returns (User); β β
β β rpc ListUsers(ListRequest) returns (stream User); β β
β β } β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4.2 Detailed Comparison¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β REST vs gRPC Detailed Comparison β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Data Format β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β REST (JSON): β β
β β { β β
β β "id": 123, β β
β β "name": "John", β β
β β "email": "john@example.com" β β
β β } β β
β β β Human-readable, larger size β β
β β β β
β β gRPC (Protobuf): β β
β β message User { β β
β β int32 id = 1; β β
β β string name = 2; β β
β β string email = 3; β β
β β } β β
β β β Binary format, smaller size (10x difference) β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Performance β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β REST: β β
β β β’ Text parsing overhead β β
β β β’ One request per connection in HTTP/1.1 β β
β β β β
β β gRPC: β β
β β β’ Fast parsing with binary serialization β β
β β β’ HTTP/2 Multiplexing β β
β β β’ 7-10x faster serialization β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Streaming β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β REST: β β
β β β’ Basically request-response pattern β β
β β β’ Need SSE, WebSocket for streaming β β
β β β β
β β gRPC: β β
β β β’ Unary: single request-response β β
β β β’ Server Streaming: server sends multiple responses β β
β β β’ Client Streaming: client sends multiple requests β β
β β β’ Bidirectional: both directions streaming β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4.3 Selection Criteria¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β REST vs gRPC Selection Criteria β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Choose REST when: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β Public API (for external developers) β β
β β β Direct browser calls β β
β β β Simple CRUD operations β β
β β β Debugging convenience important β β
β β β Team familiar with REST β β
β β β Caching important (HTTP cache) β β
β β β β
β β Examples: β β
β β β’ GitHub API, Stripe API β β
β β β’ General web services β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Choose gRPC when: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β β Internal communication between microservices β β
β β β High performance needed (low latency, high throughput) β β
β β β Real-time bidirectional communication β β
β β β Strong-typed API contract β β
β β β Multi-language environment (code generation) β β
β β β Network bandwidth constraints β β
β β β β
β β Examples: β β
β β β’ Netflix, Google internal β β
β β β’ Real-time games, IoT β β
β β β’ Mobile backends β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Hybrid Approach: β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β External API: REST (developer-friendly) β β
β β Internal comms: gRPC (high performance) β β
β β β β
β β ββββββββββββ REST βββββββββββββ β β
β β β Client βββββββββββββββΆβ API β β β
β β β (Web/App)β β Gateway β β β
β β ββββββββββββ βββββββ¬ββββββ β β
β β β gRPC β β
β β βββββββββββββββΌββββββββββββββ β β
β β βΌ βΌ βΌ β β
β β ββββββββββ ββββββββββ ββββββββββ β β
β β βService β βService β βService β β β
β β β A β β B β β C β β β
β β ββββββββββ ββββββββββ ββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4.4 Comparison Summary Table¶
| Item | REST | gRPC |
|---|---|---|
| Protocol | HTTP/1.1, HTTP/2 | HTTP/2 |
| Data Format | JSON, XML | Protocol Buffers |
| Streaming | Limited | Native support |
| Code Generation | OpenAPI (optional) | Required |
| Browser Support | Perfect | grpc-web needed |
| Learning Curve | Low | Medium |
| Performance | Good | Very Good |
| Debugging | Easy | Tools needed |
5. Practice Problems¶
Problem 1: DNS Load Balancing Design¶
Assume you're running a global service. Design a DNS-based load balancing strategy.
Conditions: - 3 regions: Seoul, Tokyo, Virginia - Normal: Route to closest region - Failures: Automatic failover to other region
Problem 2: CDN Strategy¶
Develop CDN strategy for online video streaming service.
a) Decide between Push and Pull CDN and explain why. b) Design cache strategy for new content uploads.
Problem 3: HTTP Version Selection¶
Choose appropriate HTTP version for these scenarios and explain why.
a) Mobile app (frequent network switches) b) Legacy system integration c) News site with many images
Problem 4: REST vs gRPC¶
Must choose communication method for microservices architecture.
Situation: - 10 internal services - Services written in Go, Java, Python - Need real-time data synchronization
Answers¶
Problem 1 Answer¶
DNS Configuration:
1. Use Geolocation DNS
- Korea β Seoul region IP
- Japan β Tokyo region IP
- US β Virginia region IP
2. Health Check Setup
- Monitor health check endpoint for each region
- Remove from DNS on failure
3. Failover Configuration
- Primary: Closest region
- Secondary: Second closest region
- Example: Seoul β Tokyo β Virginia
4. TTL Configuration
- Low TTL (60-300 seconds) for fast failure response
Recommend AWS Route 53 or Cloudflare
Problem 2 Answer¶
a) Choose Push CDN
Reasons:
- Videos are large and change infrequently
- Need fast response on first view
- Can pre-distribute popular content
b) Cache Strategy:
1. New Content:
- Pre-distribute to major edge servers after upload
- Prioritize distribution for expected popular content
2. Live Content:
- Pull method + short TTL
- Streaming optimization settings
3. Version Management:
- Include version in content ID
- Issue new URL on update
Problem 3 Answer¶
a) Mobile app: HTTP/3
- Connection Migration survives network switches
- 0-RTT for fast reconnection
- Improved battery efficiency
b) Legacy system: HTTP/1.1
- Wide compatibility
- No conflicts with existing infrastructure
- Gradual upgrade if needed
c) Image-heavy site: HTTP/2
- Multiplexing loads many images simultaneously
- Header compression for efficiency
- Server Push for pre-sending CSS/JS
Problem 4 Answer¶
Choose gRPC
Reasons:
1. Internal service communication
- Not public, browser support not needed
2. Multi-language environment
- Go, Java, Python all support gRPC
- Protobuf auto-generates code β consistency
3. Real-time synchronization
- Bidirectional streaming for real-time data exchange
- Server Streaming for event push
4. Performance
- Efficient for high-frequency inter-service communication
- Protobuf serialization for network efficiency
Implementation:
- Manage common .proto files
- Generate gRPC client/server code per service
6. Next Steps¶
Now that you've reviewed network fundamentals, dive deeper into load balancing.
Next Lesson¶
- 04_Load_Balancing.md - L4/L7 load balancers, distribution algorithms
Related Lessons¶
- 05_Reverse_Proxy_API_Gateway.md - Proxy patterns
Recommended Learning¶
- Networking/12_DNS.md - DNS details
- Networking/13_HTTP_and_HTTPS.md - HTTP details
7. References¶
RFC Documents¶
- RFC 7540 - HTTP/2
- RFC 9000 - QUIC
- RFC 9114 - HTTP/3
Online Resources¶
Tools¶
- WebPageTest - HTTP version testing
- Postman - REST API testing
- grpcurl - gRPC testing
Document Information - Last Updated: 2024 - Difficulty: ββ - Estimated Study Time: 2-3 hours