วิธีทดสอบโหลดแอปที่พัฒนาเอง: DDoS ผู้ใช้พร้อมกัน การกู้คืน และค่าใช้ AI เขียนโค้ด

ใช้ AI เขียนโค้ดแล้วแอปหลายผู้เล่นเกิดขึ้นเร็วมาก ห้องสร้างได้ คนเข้าได้ โพสต์ได้ โหวตได้ สมองก็ประกาศทันทีว่า

วิธีใช้เครื่องมืออ่าน

ฟังจะอ่านบทความออกเสียง อ่านเร็วแสดงวลีทีละช่วงตามความเร็วที่เลือก ฝึกภาษาใช้เปรียบเทียบบทความฉบับแปลที่มีอยู่ บันทึกจะเก็บบุ๊กมาร์กในเบราว์เซอร์นี้ และเปิดอีกครั้งได้จากรายการที่บันทึกในเครื่องเล่น

แชร์บทความนี้

แชร์บทความนี้

โฆษณา
โฆษณา

AI ทำให้สร้างแอปเร็วขึ้น แต่สิ่งที่อันตรายคือความรู้สึกว่า “เสร็จแล้ว”

ใช้ AI เขียนโค้ดแล้วแอปหลายผู้เล่นเกิดขึ้นเร็วมาก ห้องสร้างได้ คนเข้าได้ โพสต์ได้ โหวตได้ สมองก็ประกาศทันทีว่า

เสร็จแล้ว

เซิร์ฟเวอร์ตอบว่า

เมื่อกี้ทดสอบอยู่คนเดียวเองนะ

ของจริงคือคำถามถัดไป ถ้า 100 คนกดพร้อมกันล่ะ ถ้าฐานข้อมูลบันทึกสำเร็จแต่ข้อความตอบกลับหายล่ะ ถ้าโหวตสุดท้ายมาตรงกับเส้นตาย ถ้าระบบชำระเงินส่งแจ้งเตือนซ้ำสองครั้ง หรือถ้าทุกคน reconnect พร้อมกันหลังระบบกลับมา

การ review โค้ดของเว็บแอปหลายผู้เล่นขนาดเล็กหนึ่งตัวขยายเป็น 324 รายการทดสอบ แต่ไม่ได้แปลว่าเจอ 324 บั๊ก ตอนนั้นทั้ง 324 รายการยังไม่ได้รันจริง เป็นแผนทดสอบ ไม่ใช่ใบรับรองว่าผ่าน

1. อย่ามองแค่ DDoS

Cloudflare มีการตรวจจับและลดผลกระทบ DDoS อัตโนมัติในทุกแพ็กเกจ แต่เอกสารของ Cloudflare เองก็แนะนำมาตรการระดับแอป เช่น rate limiting เพราะการโจมตีขนาดใหญ่ยังส่งผลต่อแอปได้[1]

สำหรับโปรเจกต์เล็ก ปัญหาแรกอาจเป็นผู้ใช้ปกติ ไม่ใช่คนโจมตี

ถ้า client เช็กสถานะทุก 3 วินาที:

อุปกรณ์พร้อมกัน การเช็กสถานะต่อชั่วโมง
10 12,000
30 36,000
100 120,000
1,000 1,200,000

นี่ไม่ใช่การคาดการณ์ความจุจริง ระบบหน่วงเวลาและ cache อาจลดลง แต่การโพสต์ รูปภาพ inbox หลายแท็บ และงานตามเวลาอาจเพิ่มขึ้น

ณ 5 ตุลาคม 2026 Workers Free ระบุ 100,000 requests ต่อวัน ส่วน D1 Free ระบุอ่าน 5 ล้านแถวต่อวัน เขียน 100,000 แถวต่อวัน ฐานข้อมูลละ 500MB และ 50 queries ต่อ Worker invocation[2][3] ฐานข้อมูล D1 หนึ่งตัวประมวลผล query ทีละรายการ ถ้ามีพร้อมกันมากเกินไปจะเข้าคิวและสุดท้ายอาจเกิด overloaded error[3]

ดังนั้นสิ่งน่ากลัวไม่ใช่แค่ “ผู้โจมตีหนึ่งล้านคน”

ผู้ใช้จริง 100 คนที่กำลังสนุกพร้อมกันก็เป็น load test ได้

2. ทำไมถึงกลายเป็น 324 รายการ

รายการครอบคลุม 16 กลุ่ม: ทางเข้าและ abuse, capacity, concurrency และ recovery, งานตามเวลา, ห้องและสิทธิ์, รูปภาพ, ข้อความ, โหวต, deadline, การเปิดผล, ห้องสาธารณะ, connection แบบค้างไว้, อุปกรณ์และ reconnect, integration, payment และ deployment/monitoring

ไม่ต้องทำทุกอย่างพร้อมกัน ให้จัดลำดับก่อน

3. 23 จุดที่ควรทดสอบก่อนเปิดจริง

  1. request ที่ต้องถูกปฏิเสธยังไปทำงานหนักใน DB หรือไม่
  2. ตัวนับ usage ภายในนับทุกเส้นทางที่แพงจริงหรือไม่
  3. rate limit ยังทำงานหลัง restart และหลาย instance หรือไม่
  4. polling ที่ “ไม่มีอะไรเปลี่ยน” ยังอ่าน DB มากหรือไม่
  5. ที่นั่งหนึ่งที่เปิด persistent connection ได้ไม่จำกัดหรือไม่
  6. HTTP กับ persistent connection ใช้ข้อจำกัดเดียวกันหรือไม่
  7. emergency stop หยุด client ที่ต่ออยู่แล้วหรือไม่
  8. scheduler ช้าทำให้ action หลัง deadline ผ่านหรือไม่
  9. side effect บางส่วนล้มเหลวแต่ห้องยังเดินต่อหรือไม่
  10. repair job รันซ้ำแล้วสถิติซ้ำหรือไม่
  11. โควตาเริ่มเกมถูกใช้ก่อนเกมสร้างจริงหรือไม่
  12. retry ทำให้คำตอบหนึ่งกลายเป็นสองหรือไม่
  13. ชื่อที่ดูเหมือนกันหลบกฎชื่อซ้ำได้หรือไม่
  14. คนสองคนแย่งที่นั่งสุดท้ายพร้อมกันได้หรือไม่
  15. scheduled job สะสมงานจนตามไม่ทันหรือไม่
  16. วัดขนาด DB และ index ทั้งหมด ไม่ใช่เฉพาะรูปภาพหรือไม่
  17. คนอื่นยึด identity จากอุปกรณ์ที่หายได้หรือไม่
  18. ตรวจรูปแบบ ขนาด metadata และ location ของรูปอย่างปลอดภัยหรือไม่
  19. ประวัติยาวทำให้ทุกหน้าช้าลงเรื่อย ๆ หรือไม่
  20. reconnect พร้อมกันหลัง outage ทำให้ล่มรอบสองหรือไม่
  21. ทดสอบ payment ซ้ำ ช้า ล้มเหลว ยกเลิก และ restore แล้วหรือไม่
  22. เอาผลผ่าน local test ไปคิดว่า production ผ่านหรือไม่
  23. ถ้า DB ล่ม ระบบ monitoring ล่มตามหรือไม่

4. บั๊กชอบเงื่อนไขผสม

ตัวอย่างที่มีค่า:

100 คนโหวตพร้อมกัน → 20 คน refresh → 10 คนหลุด → บาง write สำเร็จแต่ response หาย → retry

จากนั้นดูว่าโหวตซ้ำหรือไม่ โหวตหลัง deadline หลุดเข้ามาหรือไม่ หน้าจอย้อน state หรือ action เดิมทำสองครั้งหรือไม่

OWASP ก็แยก concurrent sessions, abnormal input และ error handling เป็นหัวข้อทดสอบต่างหาก[4]

5. “บันทึกสำเร็จ” กับ “ผู้ใช้ได้รับคำว่าสำเร็จ” เป็นคนละเหตุการณ์

เซิร์ฟเวอร์อาจบันทึกแล้ว แต่ response หายกลางทาง

ผู้ใช้เห็นว่า fail แล้วกดใหม่

ถ้าไม่มี operation ID หรือ deduplication ก็อาจได้คำตอบสองอัน ห้องสองห้อง โหวตสองครั้ง แจ้งเตือนสองครั้ง หรือเก็บเงินสองครั้ง

retry ต้องออกแบบ

6. ทดสอบโหลดแบบไล่ระดับ

ในสภาพแวดล้อมที่ควบคุมเอง: 10 → 30 → 100 clients

แล้วเปลี่ยนรูปแบบ: รวมในห้องเดียว กระจายหลายห้อง join พร้อมกัน โหวตสุดท้ายพร้อมกัน reconnect พร้อมกัน งานตามเวลาชนกัน และจำลอง storage failure

อย่าส่งทราฟฟิกจำนวนมากไปยังระบบที่ไม่มีสิทธิ์ทดสอบ กำหนดงบและเงื่อนไขหยุดก่อนเริ่ม

7. “ไม่ล่ม” ยังไม่ใช่ผ่าน

ตั้งเป้าเริ่มต้นได้ เช่น 95% ของ request ปกติภายใน 1 วินาที 99% ภายใน 3 วินาที และ 5xx ที่ไม่คาดคิดต่ำกว่า 0.1%

แต่สิ่งต่อไปนี้ควรเป็นศูนย์:

  • เห็นข้อมูลคนอื่น
  • action ไม่มีสิทธิ์
  • คะแนนซ้ำ
  • ข้อมูลที่บันทึกแล้วหาย
  • เก็บเงินซ้ำ

8. แผนทดสอบ 9/10 แต่หลักฐาน 0/10 เป็นเรื่องปกติ

324 รายการกับ 23 จุดเสี่ยงอาจเป็นแผนที่ดีมาก

แต่ก่อนรันจริง หลักฐานก็ยังเป็นศูนย์

ข้อดีคือจาก “ไม่รู้จะทดสอบอะไร” กลายเป็น “รู้ว่าจะลองทำให้พังตรงไหน”

9. แล้วสิ่งที่หมดก่อนอาจเป็นโควตา AI

ถ้าใช้ AI อ่าน repository ใหญ่ทั้งวัน สร้าง แก้ review แล้ววนใหม่ โควตา AI อาจหมดก่อนเซิร์ฟเวอร์มีปัญหา

ณ 5 ตุลาคม 2026 Claude Max 20x ราคา 200 ดอลลาร์ต่อเดือนบนเว็บ คำว่า 20x หมายถึง capacity ต่อ session เทียบกับ Pro session reset ทุก 5 ชั่วโมง แต่ยังมี weekly limit ที่ทุกโมเดลใช้ร่วมกัน[5]

20x ไม่ได้แปลว่าไม่จำกัด

การใช้จริงขึ้นกับโมเดล context และงาน ดูได้จาก Settings > Usage

10. “Fable แพง” ดูจากตัวเลขก็เข้าใจได้

ใน Max ใช้ Fable 5 และ 5.1 ได้ แต่ Fable ใช้ได้สูงสุด 50% ของ weekly limit และ Anthropic ระบุว่า Fable กินโควตาเร็วกว่า Claude รุ่นอื่น[6]

โมเดล Input / 1M token Output / 1M token
Sonnet 5.5 $2 $10
Opus 5.5 $4 $20
Fable 5.1 $10 $50

Fable 5.1 มีราคาต่อ token ฝั่ง input และ output เป็น 2.5 เท่าของ Opus 5.5 แม้ cache read ที่ถูกลงจะลดต้นทุนจาก Fable 5 แต่ราคาสัมบูรณ์ยังสูง[6][7][8]

ราคา API ไม่สามารถแปลงตรงเป็นนาทีของ Max weekly quota ได้ แต่ทิศทางชัด: โมเดลหนักที่ใช้หลายชั่วโมงยังมีต้นทุนสูง

11. อย่าใช้รถเครนกับน็อตทุกตัว

Sonnet 5.5: แก้ทั่วไป บั๊กที่เข้าใจแล้ว งานซ้ำ งานขอบเขตชัด

Opus 5.5: หาสาเหตุยาก ออกแบบใหญ่ review หลายไฟล์ ตัดสินใจก่อนปล่อย

Fable 5.1: งานที่ยากจริง ๆ และความสามารถเพิ่มคุ้มกับต้นทุนหรือ quota ที่สูงขึ้น

นี่ไม่ใช่อันดับโมเดล แต่คือการคุมต้นทุนต่อชิ้นงาน

12. AI ไม่ได้ลบคอขวด แค่ย้ายคอขวด

เมื่อก่อน: ไอเดีย → เขียนโค้ดหลายสัปดาห์ → ทดสอบ

ตอนนี้: ไอเดีย → ทำเร็ว → testing, operation, server quota และ AI quota มาพร้อมกัน

“ทำแอปเสร็จในวันเดียว” อาจจริง

แต่พูดให้แม่นกว่า:

“ในวันเดียวมาถึงจุดที่เริ่มลองทำให้มันพังอย่างจริงจังได้แล้ว”

ตรงนั้นแหละคือจุดเริ่มต้นของการเตรียมปล่อยจริง

เอกสารอ้างอิง (8 รายการ)

  1. Cloudflare DDoS developers.cloudflare.com
  2. Cloudflare Workers developers.cloudflare.com
  3. Cloudflare D1 developers.cloudflare.com
  4. OWASP WSTG wstg.owasp.org
  5. Anthropic Max support.claude.com
  6. Anthropic Fable support.claude.com
  7. Opus 5.5 anthropic.com
  8. Sonnet 5.5 anthropic.com

แชร์บทความนี้

โฆษณา

วันนี้อ่านเรื่องนี้

แต่ละบทความตอบคำถามที่ผู้อ่านบทความนี้มักสงสัยต่อ

ดูบทความทั้งหมดบทความเรื่อง AI เพิ่มเติม

หาบทความอื่น

บทความทั้งหมด

Mendoi-chan

ผู้ดูแลเว็บไซต์

Mendoi-chan

เรียบเรียงความยุ่งยากในที่ทำงานและชีวิตประจำวันให้เป็นโครงสร้างที่ชัดเจนและขั้นตอนถัดไปที่ทำได้จริง

โฆษณา

บทความล่าสุด

  1. 1ทำไมเขียนโค้ดด้วย AI แล้วหยุดยาก? เพราะมันเหมือนกาชาที่ได้งานจริงกลับมา
  2. 2ความเข้ากันได้เรื่องสกินชิพขึ้นอยู่กับอะไร? ทำไมเราถึงรู้สึกสบายใจกับการกอดบางคน
  3. 3อายุ 23 ส่วนใหญ่มีแฟนกันแล้วหรือยัง?
  4. 4ทำไมระบบผลิตคอนเทนต์ด้วย AI ถึงติดขัดกับ Cloudflare งานตามเวลา และ GitHub Actions
  5. 5AI ทำบริการเสร็จใน 2 วัน แต่คอขวดกลับเป็นการอนุมัติของคน
โฆษณา