ในการออกแบบระบบนั้น มีหลายสิ่งที่เราต้องรู้ก่อนก่อนที่จะออกแบบระบบให้ดีได้ หนึ่งในนั้นคือ QPS เป็นคำถามแรกๆ ที่เราจะถามเมื่อต้องออกแบบระบบ

QPS (Queries Per Second) หมายถึง จำนวนการกระทำของผู้ใช้ หรือ การทำงานของระบบ (API calls, DB queries, requests) ที่เกิดขึ้นต่อวินาที

ตัวอย่าง

ถ้ามีผู้ใช้ 1,000 คน แต่ละคนส่ง 10 requests ต่อวัน รวมเป็น 10,000 requests ต่อวัน

วิธีคำนวณ QPS:

QPS = จำนวน requests ต่อวัน / 86,400 วินาทีต่อวัน


กรอบการประมาณ QPS

  1. เริ่มจาก DAU (Daily Active Users) เช่น 1 ล้านคน
  2. สมมติจำนวนการกระทำต่อผู้ใช้ต่อวัน เช่น 10 actions
  3. คำนวณจำนวนการกระทำทั้งหมดต่อวัน: 1,000,000×10 = 10,000,000
  4. หารด้วยจำนวนวินาทีต่อวัน: 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

Product type and heavy

QPS Estimates by System Design

ตัวอย่างการ estimate

แถม... การคำ 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