Tài liệu chuyên sâu về System Design dành cho Backend Engineer, Senior Backend Engineer, Tech Lead, Solution Architect và Software Architect.
Mục tiêu: xây dựng tư duy thiết kế hệ thống — không phải bộ sưu tập lời giải phỏng vấn.
Triết lý của tài liệu
Mọi quyết định kiến trúc trong tài liệu này đều đi theo chuỗi tư duy:
Business Requirement
↓
Functional Requirement
↓
Non-functional Requirement
↓
Scale Estimation
↓
Constraint
↓
Bottleneck
↓
Architecture Pattern
↓
Distributed Systems
↓
Trade-off
↓
Production
↓
EvolutionMọi kết luận kỹ thuật phải trả lời được 5 câu hỏi:
- Tại sao?
- Nếu không làm như vậy thì sao?
- Trade-off là gì?
- Có lựa chọn nào khác không?
- Chi phí vận hành là gì?
Không có “kiến trúc tối ưu”. Chỉ có kiến trúc phù hợp với bài toán, quy mô, ngân sách và đội ngũ tại một thời điểm.
Mục lục
Chương mở đầu
- 00. Tư duy thiết kế hệ thống — Framework tư duy xuyên suốt toàn bộ tài liệu. Đọc trước tiên.
Phần 1 — Foundations (hoàn chỉnh)
- 1.1. Functional & Non-functional Requirements
- 1.2. SLA, SLO, SLI
- 1.3. Throughput & Latency
- 1.4. Scale Estimation & Capacity Planning
- 1.5. Bottleneck Analysis
Phần 2 — Scalability (hoàn chỉnh)
- Tổng quan & ba mệnh đề
- 2.1. Vertical vs Horizontal Scaling — và bài toán state
- 2.2. Load Balancer — người gác cổng của scale-out
- 2.3. Auto Scaling — co giãn theo tải
Phần 3 — Availability & Reliability (hoàn chỉnh)
- Tổng quan & ba mệnh đề nền
- 3.1. High Availability & Failover — giải phẫu quá trình chuyển đổi
- 3.2. Backup & Recovery — lớp phòng thủ cuối cùng
- 3.3. Active-Active vs Active-Passive — hai triết lý redundancy
Phần 4 — Distributed Systems (hoàn chỉnh)
- 4.1. CAP Theorem & PACELC
- 4.2. Replication & Consistency Models
- 4.3. Consensus, Quorum & Leader Election
- 4.4. Clock Synchronization, Network Partition & Split Brain
Phần 5 — Data Layer (hoàn chỉnh)
- Tổng quan & nguyên tắc polyglot
- 5.1. PostgreSQL — mặc định đúng cho dữ liệu nghiệp vụ
- 5.2. MySQL — người anh em song sinh khác tính cách
- 5.3. MongoDB — khi dữ liệu thật sự là document
- 5.4. Redis — cấu trúc dữ liệu trong RAM
- 5.5. ClickHouse — cỗ máy quét tỷ hàng
- 5.6. Elasticsearch — index, không phải database
- 5.7. So sánh & khung quyết định lựa chọn
Phần 6 — Communication (hoàn chỉnh)
- Tổng quan & bốn kỷ luật cho mọi cạnh giao tiếp
- 6.1. REST — hợp đồng chung của web
- 6.2. GraphQL — client tự khai hình dữ liệu
- 6.3. gRPC — RPC có kỷ luật cho nội bộ
- 6.4. RabbitMQ — smart broker cho work queue
- 6.5. Kafka — distributed log cho sự kiện
- 6.6. Event-driven Architecture — nghĩ bằng sự kiện
- 6.7. Saga — transaction khi không còn transaction
- 6.8. Outbox Pattern — móng của mọi event đáng tin
Phần 7 — Caching (hoàn chỉnh)
- Tổng quan & nguyên tắc bất di bất dịch
- 7.1. Bốn chiến lược cache — Cache Aside, Read Through, Write Through, Write Back
- 7.2. Cache Invalidation — bài toán khó thứ nhất
- 7.3. Distributed Cache — cache khi một node không đủ
Phần 8 — Data Partitioning (hoàn chỉnh)
- Tổng quan: ba khái niệm hay lẫn
- 8.1. Partitioning & Sharding — cái giá của shard key
- 8.2. Consistent Hashing
- 8.3. Resharding & vận hành hệ đã shard
Phần 9 — Search (hoàn chỉnh)
- Tổng quan & phân vai với Phần 5
- 9.1. Full-text Search — inverted index, analyzer, relevance
- 9.2. Kiến trúc hệ search hoàn chỉnh — pipeline, query side, vận hành
- 9.3. Lựa chọn công nghệ — PG FTS, Elasticsearch, OpenSearch, engine gọn
Phần 10 — Observability (hoàn chỉnh)
- Tổng quan & ba mệnh đề
- 10.1. Ba trụ — Logging, Metrics, Tracing
- 10.2. OpenTelemetry & pipeline tín hiệu
- 10.3. Dashboard, Alerting & On-call
Phần 11 — Security (hoàn chỉnh)
- Tổng quan & ba nguyên tắc gốc
- 11.1. Authentication & Authorization
- 11.2. OAuth2, OIDC & JWT
- 11.3. Biên phòng thủ — API Gateway, Rate Limiting, WAF
Phần 12 — System Design Evolution (hoàn chỉnh — chương quan trọng nhất)
Hành trình tiến hóa của một hệ thống E-commerce qua 10 giai đoạn, từ 0 đến hàng chục triệu người dùng:
- Tổng quan hành trình tiến hóa
- Giai đoạn 1 — Monolith + PostgreSQL
- Giai đoạn 2 — Thêm Redis
- Giai đoạn 3 — Tách Background Worker
- Giai đoạn 4 — Thêm Message Queue
- Giai đoạn 5 — Modular Monolith
- Giai đoạn 6 — Tách Microservices
- Giai đoạn 7 — Kafka & Event-driven
- Giai đoạn 8 — CQRS
- Giai đoạn 9 — Multi-region
- Giai đoạn 10 — Disaster Recovery
Phần 13 — Production Failure Cases (hoàn chỉnh)
21 tình huống sự cố production, mỗi tình huống phân tích: triệu chứng → root cause → metric → dashboard → alert → điều tra → khắc phục → phòng tránh.
- Tổng quan & phương pháp phân tích sự cố
- 13.1. Caching Failures — Cache Stampede, Cache Avalanche, Thundering Herd
- 13.2. Database Failures — Hotspot, N+1 Query, Deadlock, Replica Lag, Connection Pool Exhaustion, Hot Partition
- 13.3. Messaging Failures — Kafka Lag, Message Duplication, Queue Backlog, Retry Storm
- 13.4. Distributed Failures — Cascading Failure, Split Brain, Leader Election Failure
- 13.5. Infrastructure Failures — GC Pause, Out of Memory, DNS Failure, Region Outage, Third-party API Down
Phần 14 — Case Studies (hoàn chỉnh)
- Tổng quan & cách đọc
- 14.1. URL Shortener — bài tập khởi động hoàn hảo
- 14.2. Social Network — fan-out và celebrity problem
- 14.3. Chat Application — triệu kết nối sống
- 14.4. Notification System — fan-out đa kênh
- 14.5. Banking & FinTech — khi sai một đồng là sai tất cả
- 14.6. Video Streaming — băng thông là kiến trúc
- 14.7. Ride Hailing — geo real-time và dữ liệu phù du
- 14.8. SaaS Platform — multi-tenancy và noisy neighbor
- 14.9. AI Platform — GPU đắt và hai chế độ phục vụ
- 14.10. Search System — Phần 9 trong hành động
Cách đọc tài liệu này
Nếu bạn là Backend Engineer (2–4 năm kinh nghiệm): đọc tuần tự 00 → Phần 1 → Phần 12. Phần 12 là nơi mọi khái niệm được đặt vào bối cảnh thực tế.
Nếu bạn là Senior/Tech Lead: đọc 00 để thống nhất framework tư duy, sau đó đi thẳng vào Phần 4 (Distributed Systems) và Phần 13 (Failure Cases) — đây là hai phần phân tách một Senior với một Architect.
Nếu bạn là Architect: dùng Phần 12 và 13 làm tài liệu training cho team, dùng template trong 00 làm chuẩn cho Architecture Decision Record (ADR) nội bộ.
Nguyên tắc quan trọng nhất khi đọc: đừng ghi nhớ giải pháp. Hãy ghi nhớ câu hỏi dẫn đến giải pháp. Giải pháp thay đổi theo thời gian; câu hỏi thì không.
Template phân tích bắt buộc
Mỗi chủ đề trong tài liệu tuân theo template 9 phần:
| # | Phần | Câu hỏi trung tâm |
|---|---|---|
| 1 | Problem Statement | Bài toán kinh doanh là gì? Ràng buộc là gì? |
| 2 | Tại sao giải pháp này tồn tại | Nó giải quyết vấn đề business/technical/scale/reliability nào? |
| 3 | First Principles | Bản chất là gì? Bỏ đi thì sao? Giả định nào đang được đặt ra? |
| 4 | Internal Architecture | Component, Data Flow, Control Flow, Deployment Flow, Failure Flow |
| 5 | Trade-off | Được gì, mất gì, chi phí, rủi ro |
| 6 | Production Considerations | Monitoring, Deployment, DR, Security, Cost |
| 7 | Best Practices | Cách dùng đúng trong production |
| 8 | Anti-patterns | Cách dùng sai và vì sao nguy hiểm |
| 9 | Khi nào KHÔNG nên dùng | Bối cảnh mà giải pháp này là lãng phí |
Diagram trong tài liệu dùng Mermaid — render trực tiếp trên GitHub, VS Code (extension Markdown Preview Mermaid), Obsidian.