Ước lượng QPS, concurrency, storage và burst
Capacity estimation dùng để chọn đúng order of magnitude và tìm bottleneck có khả năng chi phối thiết kế; mục tiêu không phải tạo ra false precision.
1. Core formulas
average QPS = operations/day ÷ 86,400
peak QPS = average QPS × peak factor
bandwidth = QPS × bytes/operation
storage = writes/sec × bytes/write × retention × replicas
concurrency ≈ arrival rate × latency // Little's Law
| Estimate | Dùng để nhìn nhanh |
|---|---|
| Average / peak QPS | Tải trung bình và tải cao điểm mà service, database hoặc node cần chịu. |
| Bandwidth | Lưu lượng mạng phát sinh từ số operation và kích thước payload. |
| Storage | Dung lượng theo write rate, kích thước mỗi write, thời gian retention và số replica. |
| Concurrency | Số request/in-flight work xấp xỉ theo arrival rate và latency. |
2. Assumptions phải ghi rõ
Các input thường cần nêu gồm DAU/MAU, operations/user/day, read:write ratio, payload distribution, peak/burst factor, retention, replication, compression, growth và headroom. Viết assumption trước phép tính để interviewer hoặc reviewer có thể đổi input và thấy ngay estimate thay đổi thế nào.
3. Peak và burst
Daily average có thể che mất flash crowd. Ngoài average QPS, cần ước lượng peak duration, tốc độ queue tăng theo arrival − service rate, autoscaling lag và drain time sau burst. Queue capacity phải gắn với deadline hoặc retention của workload, không chỉ đặt mục tiêu “đủ lớn”.
4. Dùng estimate để ra quyết định thiết kế
| Estimate | Quyết định mà nó hỗ trợ |
|---|---|
| QPS | Một database/node có đủ capacity hay cần scale/shard. |
| Working set | Cache cần lớn đến đâu và dữ liệu nóng nào nên nằm trong cache. |
| Bandwidth | Có cần CDN, compression hoặc thay đổi cách truyền payload. |
| Storage / retention | Có cần partition, archive hoặc thay đổi lifecycle dữ liệu. |
| Concurrency | Ảnh hưởng đến threads, connection pools và số work đang in-flight. |
Nếu estimate không làm thay đổi architecture hoặc không giúp xác định bottleneck, chỉ cần trình bày ngắn thay vì kéo dài phần tính toán.
5. Caveats
- Payload average có thể che phần tail hoặc các large objects.
- Replication, index và metadata làm storage thực tế lớn hơn dữ liệu thuần.
- Khi QPS giữ nguyên nhưng latency tăng, concurrency cũng tăng.
- Autoscaling không giải quyết stateful bottleneck ngay lập tức.