อย่าอีโก้จน "โง่" ลืม Load Test

อย่าอีโก้จน “โง่” ลืม Load Test K6

#อย่าอีโก้จน “โง่” ลืม Load Test 😆

คำเตือน! เนื้อยาว สาระล้วนๆ กดแชร์ไว้
ว่าง ๆ ไว้มาอ่าน เดียวหาโพสไม่เจอะ
อย่าหาว่าแอดไม่เตือน 55++

ช่วงนี้เวลาขึ้น production ทำโปรเจคใหม่ ๆ
ประเด็นใหญ่ ๆ ที่ถูกจับมาสนทนา
ก็คงหนี้ไม่พ้นเรื่อง Load Test
(หากระบบไม่ล่ม ก็รอด ไป 55+++
แต่หากล่มแล้วล่ะก็ โดนขยี้ 😆)

Load Test แตกออกได้เป็น 3 ประเด็น

1). Performance Testing
(แยกประเด็น Hardware และ Application)
2). Load Testing
3). Stress Testing

Performance Testing
คือการที่เราทดสอบระบบในแง่มุมต่าง ๆ
เพื่อบ่งบอกประสิทธิภาพของระบบ
เช่น การอ่าน เขียน ดิกส์, การรับส่งข้อมูลบนเครือข่าย

ส่วน Load Testing
การที่เราทดสอบระบบแอพพลิเคชั่น
ว่ามันรับรองจำนวน Request ได้สูงสุด
ไหวเท่าไหร่ หลักหมื่น หลักแสน หลักล้านคน?

และ Stress Testing
การที่เราทดสอบระบบแอพพลิเคชั่นแบบเพิ่มการ Request
ให้สูงขึ้นเรื่อย ๆ แบบเกินปกติ
แล้วดูว่าระบบเราจะรองรับได้ที่เท่าไร เช่น Request per sec.

หลังจากที่เราทราบประเภทการทำ Load Test
แต่ละแบบแล้ว
คราวนี้แอดจะพาไปรู้จักกับ #k6
เครื่องมือฟรี open-source load testing tool
ขั้นเทพ 55+++😆

หากพูดถึงการทำเว็บเพื่อรองรับผู้ใช้จำนวนมาก
การทดสอบโหลดสำคัญอย่างยิ่ง
ปกติเครื่องมือ Load Test ที่เรารู้จักกัน
ก็คงหนีไม่พ้น ab (Apache Bench)
และ Apache jMeter หรือ wrk (ภาษา C) เป็นต้นครับ

แต่วันนี้โปรแกรมที่แอดอยากมาแนะนำ
คือ k6

#k6
เขียนด้วยภาษา Go สำหรับทำ Load Testing
เราสามารถรันคำสั่งผ่าน CLI ได้เลย

#k6
สามารถเขียนเป็นสคริปต์ (.js)
จำลองการเข้าใช้งานพร้อม ๆ กันของผู้ใช้งาน
เพื่อดูว่าเว็บเซิฟเวอร์ของเรานั้น
จะสามารถรองรับผู้ใช้งานเหล่านั้นได้หรือไม่

ตัวอย่าง เช่น
ทดสอบโหลด ทำ Load Testing ระบบ Login
ด้วยการจำลองสัก 50 vus (จำลองผู้ใช้ 50คน)
Request จำนวน 500 ครั้ง
ก็ใช้คำสั่งที่เราเคยลองทำมาคือ

เราก็รัน CLI

k6 run --vus 50 --iterations 500 k6-script-login.js

Wrk กับ K6 และ ab
Wrk (เขียนจากภาษา C) เราสามารถเขียนสคริปต์
สร้าง Request ที่ซับซ้อนได้ โดยใช้ภาษา Lua

ส่วน K6 (เขียนจากภาษา GO) เราสามารถเขียนสคริปต์
ทำ Automated Testing ในรูปแบบโค้ดใน Javascript แบบ Stress Testing ได้

สำหรับ ab
เป็นเครื่องมือ Load Test ที่ใช้งานง่าย
แค่พิมพ์คำสั่งและตามด้วย parameter ก็ทดสอบโหลดได้แล้ว
ไม่ต้องเขียนโค้ดจึงมีข้อจำกัดการทำ Stress Testing

Note: ปัจจัยอื่น ๆ
เรื่องนี้คุยยาว คุยไม่จบ เพราะมันมีปัจจัยหลายอย่าง
ในการออกแบบเว็บแอพลิเคชัน หรือพวก Network infrastructure เป็นต้น

วิธีติดตั้ง k6 ก็ง่ายมาก ๆ 🤫
กดไปดูเพิ่มเติมที่เว็บเลย 55+++😃
https://k6.io/
รองรับสาวก Linux, MacOS และ Windows
(อ่อๆๆ Docker ก็รันได้)

โพสนี้น่าจะถูกอกถูกใจชาว DevOps กดแชร์โหลดด

ผู้ที่สนใจสามารถศึกษาได้จากที่นี่:
https://k6.io/docs/getting-started/running-k6
และดู Options ต่าง ๆ ที่นี่เลยครับ
https://k6.io/docs/using-k6/options

💻 สรุป: ข้อดีสุด ๆ ของเจ้า k6 คือ
แอดชอบตรงมันสามารถเขียนโค้ดการทดสอบได้ (Scriptable)
และเขียนด้วยภาษา Javascript ครับ

#SUSE #LoadTest #ApacheBench #ApachejMeter #wrk #ab

Leave a Reply

Scroll to top
X