สรุป Topics ของบทที่ 20-28 สำหรับการเตรียมตัวสัมภาษณ์ System Design
20. Metrics Monitoring
Time-series DB, Push/Pull Model, Alerting, Visualization, Grafana
21. Ad Click Aggregation
Stream Processing, MapReduce, Lambda Architecture, Deduplication
22. Hotel Reservation
Concurrency, Optimistic/Pessimistic Lock, Database Constraints, Overbooking
23. Distributed Email Service
SMTP/IMAP, Metadata DB, Elasticsearch, Email Deliverability
24. S3-like Object Storage
Object Storage, Data Nodes, Durability 99.999999%, Erasure Coding
25. Gaming Leaderboard
Redis Sorted Set, Skip List, Sharding, Real-time Updates
26. Payment System
Pay-in/Pay-out, PSP Integration, Double-entry Ledger, Reconciliation
27. Digital Wallet
Event Sourcing, Saga Pattern, TC/C, CQRS, Distributed Transactions
28. Stock Exchange
Matching Engine, Order Book, Sequencer, High Availability, Determinism
Key Patterns
Data Processing
- Batch Processing: MapReduce, Hadoop
- Stream Processing: Kafka, Flink, Spark Streaming
- Lambda Architecture: ผสม Batch + Stream
- Kappa Architecture: Stream-only
Distributed Transactions
- 2PC (Two-Phase Commit): Coordinator-based
- Saga: Compensation-based
- TC/C (Try-Confirm/Cancel): Parallel execution
Storage Patterns
- Time-series: InfluxDB, Prometheus
- Search: Elasticsearch
- Object: S3, GCS
- Graph: Neo4j
Interview Tips
- Clarify Scope: ถามคำถามเพื่อกำหนดขอบเขต
- Scale First: ประมาณ QPS, Storage, Users ก่อน
- API + Data Model: เสนอตั้งแต่เริ่มต้น
- Trade-offs: อธิบายข้อดีข้อเสียเสมอ
- Bottlenecks: พูดถึงคอขวดและวิธีแก้ไข
เนื้อหานี้อ้างอิงจาก ByteByteGo - System Design Interview - An Insider's Guide