PLAYBOOK #3: MASTERING SYSTEM DESIGN FOR HIGH-SCALE ARCHITECTURE
Dành cho: Senior Developers, Tech Leads & Software Architects
“Hệ thống tốt không phải là hệ thống không bao giờ lỗi, mà là hệ thống được thiết kế để chịu lỗi một cách duyên dáng.” Playbook này giúp bạn làm chủ tư duy thiết kế hệ thống quy mô lớn, vượt qua các vòng Case Study hóc búa nhất.
PHẦN 1: The Architect’s checklist
Khi thiết kế, hãy tự hỏi hệ thống của bạn sẽ hành xử ra sao khi lượng truy cập tăng gấp 100 lần trong 1 giây?
1. Scalability & Load Balancing (Khả năng mở rộng)
- Vertical vs. Horizontal Scaling: Khi nào nên nâng cấp Server, khi nào nên thêm máy ảo?
- Load Balancing: Sử dụng thuật toán nào (Round Robin, Least Connections, Consistent Hashing) cho từng lớp hệ thống?
- Caching Strategy: Tối ưu hóa Read-heavy system với Redis/Memcached. Chiến lược Cache Aside, Write-through hay Write-back?
2. Database Design & Consistency (Dữ liệu là trái tim)
- SQL vs. NoSQL: Phân tích sự đánh đổi giữa tính nhất quán (ACID) và khả năng mở rộng (Scaling).
- Database Sharding & Replication: Cách chia nhỏ dữ liệu để tránh điểm nghẽn (Bottleneck). Hiểu rõ Master-Slave vs. Multi-master.
- CAP Theorem: Bạn chọn CP (Consistency & Partition Tolerance) hay AP (Availability & Partition Tolerance)? Tại sao?
3. Communication Patterns (Luồng giao tiếp)
- Synchronous (REST, gRPC): Khi nào cần phản hồi tức thì?
- Asynchronous (Message Queues - Kafka, RabbitMQ): Sử dụng kiến trúc Event-driven để giải quyết bài toán "Spike" (truy cập tăng đột biến) và Decoupling hệ thống.
PHẦN 2: Framework Để Trả Lời Case Interview về Tư Duy Thiết Kế
Đừng vẽ sơ đồ ngay lập tức. Hãy đi theo quy trình 4 bước của một Architect:
- Step 1: Understand Constraints (Hiểu giới hạn): Hỏi về DAU/MAU (lượng người dùng), Read/Write ratio, lưu trữ dữ liệu trong bao lâu?
- Step 2: High-level Design: Vẽ các thành phần chính (API Gateway, Load Balancer, Services, DB).
- Step 3: Deep Dive: Xoáy sâu vào các điểm "nhạy cảm". Ví dụ: "Làm sao để đảm bảo không bị double-payment khi mạng lag?" (Idempotency).
- Step 4: Identify Bottlenecks & Single Point of Failure (SPOF): Thừa nhận điểm yếu của thiết kế và đưa ra phương án dự phòng.
PHẦN 3: Reverse Interviewing: Đọc vị Engineering Culture
Đặt những câu hỏi này cho người phỏng vấn để biết bạn sẽ vào công ty để xây dựng hệ thống hay để "chữa cháy" suốt ngày.
- Technical Debt: "Hệ thống hiện tại đang gặp Bottleneck lớn nhất ở đâu? Team dành bao nhiêu % thời gian để xử lý 'Legacy code'?"
- Testing: "Quy trình Integration Test và Load Test cho các hệ thống tải cao được thực hiện như thế nào trước khi Go-live?"
- Release: "Công ty có hỗ trợ Canary Release hay Feature Flags để giảm thiểu rủi ro khi thay đổi kiến trúc lớn không?"
- Disaster Recovery: "Nếu Database chính bị sập hoàn toàn, mất bao lâu để hệ thống tự phục hồi (RTO) và lượng dữ liệu bị mất tối đa là bao nhiêu (RPO)?"
Tài Liệu Tham Khảo Cho Architect
- Designing Data-Intensive Applications (DDIA - Martin Kleppmann): Cuốn sách được coi là "Kinh thánh" cho mọi Senior Engineer về thiết kế hệ thống phân tán. Link: https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/
- ByteByteGo (Alex Xu): Nguồn tài liệu trực quan nhất về System Design hiện nay. Link: https://blog.bytebytego.com/
- High Scalability Blog: Các bài phân tích thực tế (Case Studies) từ Netflix, Uber, Amazon... về cách họ xây dựng hệ thống triệu người dùng. Link: https://highscalability.com/
- AWS Architecture Center: Các mẫu thiết kế (Design Patterns) chuẩn mực cho Cloud-native. Link: https://aws.amazon.com/architecture/