Part 10 · System Design · 10.1.03

Ướ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.

Nguyên tắc: viết assumptions trước phép tính. Khi input thay đổi, ta có thể cập nhật estimate nhanh mà không phải tranh luận về một con số tưởng như tuyệt đối chính xác.

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
EstimateDùng để nhìn nhanh
Average / peak QPSTải trung bình và tải cao điểm mà service, database hoặc node cần chịu.
BandwidthLưu lượng mạng phát sinh từ số operation và kích thước payload.
StorageDung lượng theo write rate, kích thước mỗi write, thời gian retention và số replica.
ConcurrencySố 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.

Tránh false precision. Capacity estimation chủ yếu cần đúng bậc độ lớn và chỉ ra bottleneck; đừng để nhiều chữ số thập phân che mất uncertainty trong assumptions.

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”.

Mental model: nếu arrival rate tạm thời lớn hơn service rate, backlog sẽ tăng. Estimate cần trả lời burst kéo dài bao lâu, backlog đạt cỡ nào và hệ thống mất bao lâu để drain sau khi tải giảm.

4. Dùng estimate để ra quyết định thiết kế

EstimateQuyết định mà nó hỗ trợ
QPSMột database/node có đủ capacity hay cần scale/shard.
Working setCache cần lớn đến đâu và dữ liệu nóng nào nên nằm trong cache.
BandwidthCó cần CDN, compression hoặc thay đổi cách truyền payload.
Storage / retentionCó 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

Capacity không chỉ là steady-state. Hãy kiểm tra peak/burst, latency, queue growth và headroom cùng nhau; một hệ thống đủ cho average traffic vẫn có thể overload ở thời điểm cao điểm.
Tài liệu chính thức: Google SRE: Handling Overload · AWS Performance Efficiency