Phỏng vấn System Design không chỉ dừng lại ở việc vẽ sơ đồ, mà là sự hiểu biết thấu đáo về các trade-offs trong thiết kế hệ thống. Dưới đây là 5 nền tảng kỹ thuật quan trọng mà nhà tuyển dụng thường đào sâu để đánh giá tư duy giải quyết vấn đề thực tế của bạn.
1. Vertical vs Horizontal Scaling
Scaling là khả năng của hệ thống để xử lý lượng traffic gia tăng. Nhà tuyển dụng sẽ quan sát cách bạn định nghĩa chiến lược mở rộng cho hệ thống của mình.
Vertical Scaling (Scale up) tập trung vào việc gia tăng sức mạnh phần cứng như CPU, RAM cho một server đơn lẻ. Dù đơn giản để implement, phương pháp này có giới hạn về phần cứng và tiềm ẩn rủi ro single point of failure.
Horizontal Scaling (Scale out) là việc thêm nhiều nodes/servers vào hệ thống. Đây là xu hướng bền vững cho các kiến trúc microservices nhờ khả năng chịu tải tốt và không giới hạn theo chiều ngang.
- Vertical Scaling: Phù hợp với hệ thống nhỏ hoặc ứng dụng stateful.
- Horizontal Scaling: Yêu cầu stateless backend và cơ chế load balancing hiệu quả.
2. Chiến lược Load Balancing
Load Balancer (LB) là chốt chặn đầu tiên giúp phân bổ traffic đồng đều giữa các servers. Đây là vị trí thường xuyên bị chất vấn về khả năng xử lý failure và hiệu suất.
Bạn cần thuộc lòng các thuật toán phổ biến như Round Robin, Least Connections, và đặc biệt là Consistent Hashing - kỹ thuật giúp giảm thiểu tối đa việc tái cấu trúc dữ liệu khi thêm hoặc bớt node trong hệ thống distributed caching.
- Layer 4 (Transport) vs Layer 7 (Application) Load Balancing.
- Sử dụng Consistent Hashing để tránh hiện tượng hot spots trong hệ thống caching.
3. Tối ưu hóa với Caching
Caching là 'vũ khí' tối thượng để giảm latency cho hệ thống. Tuy nhiên, người phỏng vấn sẽ không hỏi 'có dùng cache không', mà sẽ hỏi 'dùng chiến lược nào và tại sao'.
Bạn cần phân biệt rõ Cache-aside, Write-through hay Write-back. Ngoài ra, việc hiểu cách eviction policy như LRU (Least Recently Used) hay LFU hoạt động trong môi trường bộ nhớ hạn chế (Redis/Memcached) là điểm cộng rất lớn.
- Đảm bảo cache consistency giữa database và cache.
- Tránh hiện tượng Cache Stampede bằng cách sử dụng semaphore hoặc probabilistic early expiration.
4. Database Partitioning (Sharding)
Khi database đạt đến ngưỡng lưu trữ hoặc tải xử lý, sharding là giải pháp tất yếu. Nhà tuyển dụng sẽ xem xét cách bạn chọn Shard Key và phương thức phân vùng dữ liệu.
Sharding giúp tăng khả năng truy xuất dữ liệu song song. Hãy chuẩn bị để giải thích về sự khác biệt giữa Range-based sharding và Hash-based sharding, cũng như các thách thức mang tên cross-shard joins hay rebalancing dữ liệu.
- Hash-based sharding: Đều traffic tốt nhưng khó thay đổi số lượng shard.
- Range-based sharding: Dễ truy vấn theo khoảng giá trị nhưng dễ bị hot-spots.
5. CAP Theorem và Trade-offs
CAP Theorem là thước đo tư duy của một kỹ sư về sự đánh đổi giữa Consistency, Availability và Partition Tolerance.
Trong một hệ thống phân tán, khi có network partition xảy ra, bạn buộc phải chọn giữa Consistency hoặc Availability. Việc hiểu rõ hệ thống của bạn thuộc mô hình nào (CP hay AP) và lý do tại sao lại ưu tiên cái đó trong business case cụ thể chính là cách thuyết phục người phỏng vấn.
Ghi nhớ nhanh
- Luôn bắt đầu bằng việc làm rõ Requirements (Functional/Non-functional) và Traffic Estimation.
- Không có kiến trúc hoàn hảo, chỉ có kiến trúc phù hợp với trade-offs (Performance vs Consistency).
- Luôn đề cập đến Single Point of Failure và cách khắc phục trong thiết kế của bạn.
- Đừng quên vấn đề Security và Observability (Logging/Monitoring) cho hệ thống thực tế.