ในการออกแบบระบบนั้น มีหลายสิ่งที่เราต้องรู้ก่อนก่อนที่จะออกแบบระบบให้ดีได้ หนึ่งในนั้นคือ QPS เป็นคำถามแรกๆ ที่เราจะถามเมื่อต้องออกแบบระบบ
QPS (Queries Per Second) หมายถึง จำนวนการกระทำของผู้ใช้ หรือ การทำงานของระบบ (API calls, DB queries, requests) ที่เกิดขึ้นต่อวินาที
ตัวอย่าง
ถ้ามีผู้ใช้ 1,000 คน แต่ละคนส่ง 10 requests ต่อวัน รวมเป็น 10,000 requests ต่อวัน
วิธีคำนวณ QPS:
QPS = จำนวน requests ต่อวัน / 86,400 วินาทีต่อวัน
กรอบการประมาณ QPS
- เริ่มจาก DAU (Daily Active Users) เช่น 1 ล้านคน
- สมมติจำนวนการกระทำต่อผู้ใช้ต่อวัน เช่น 10 actions
- คำนวณจำนวนการกระทำทั้งหมดต่อวัน: 1,000,000×10 = 10,000,000
- หารด้วยจำนวนวินาทีต่อวัน: 10,000,000/86,400 ≈ 116
สิ่งที่ต้องพิจารณา
QPS ≠ HTTP Requests Only
QPS ไม่ใช่แค่ HTTP requests นะ มันรวมถึง
- API calls ระหว่าง microservices
- Database read/write
- Cache hits/misses
- งานเบื้องหลัง (background jobs, data pipelines)
เราสามารถแยก QPS เป็น Read, Write, Background เพื่อให้เราสามารถออกแบบระบบได้ละเอียดขึ้น ว่าระบบรับ load ฝั่งไหนมากกว่านั้น
Advanced Tips
Traffic Profiling
- ใช้ percentiles (95th/99th) แทนค่าเฉลี่ย
- แยก QPS ตามประเภทงาน (read/write/background)
- คำนึงถึง geo-distribution และ peak hours
Resource Mapping
QPS ช่วยกำหนดจำนวน databases, caches, replica sets, pods ซึ่งมันส่งผลต่อ latency, rate limiting, autoscaling
Scaling Strategy
- ใช้ load balancers, sharding, partitioning, cache layers (Redis, CDN) เพื่อรองรับโหลดจาก QPS
- Precompute heavy queries
QPS Patterns by Product Type

QPS Estimates by System Design

แถม... การคำ QPS จาก DAU
1.หา DAU
เริ่มจากเราต้องรู้ก่อนว่า DAU (Daily Active User) เท่าไหร่
เช่น
- DAU = 1M users
2.หาค่าสมมติของผู้ใช้แต่ละคน ว่ามี actions โดยเฉลี่ยต่อวันเท่าไหร่
เราต้องประเมิน (หรือ สอบถาม interviewer) ว่า ผู้ใช้แต่ละคนมีปฏิสัมพันธ์กับระบบกี่ครั้งต่อวัน
เช่น
- เราสมมติว่า ผู้ใช้งานแต่ละคนทำ 10 actions ต่อวัน
3.คำนวนจำนวน actions ต่อ วันทั้งหมด
ใช้สูตร Total Actions per Day = DAU × Actions per User per Day
ก็จะได้
- 1,000,000 x 10 = 10,000,000 action per day
4.หา actions per second (QPS)
ในหนึ่งวันมีทั้งหมด 86,400 วินาที
เราก็เอามาหารเลย: QPS=Total Actions per Day/86,400
ก็จะได้
QPS = 10,000,00086,400 ≈ 115.74
ให้ปัดขึ้นไปเลย ก็จะได้ QPS ≈ 116