ทำ Load Testing ด้วย Go: ใช้ Vegeta, k6 หรือ wrk ดี?

Sharing is caring!

ในการพัฒนา Web Service หรือ API หนึ่งสิ่งที่หลีกเลี่ยงไม่ได้คือการทำ Load Testing หรือการจำลองการใช้งานจากผู้ใช้จำนวนมาก เพื่อทดสอบความสามารถของระบบก่อนปล่อยจริง โดยเฉพาะในระบบที่เขียนด้วยภาษา Golang (Go) ซึ่งสามารถรองรับงานหนักและตอบสนองเร็วมาก แต่เราจะใช้เครื่องมืออะไรดี?

เป้าหมายของ Load Testing

  • ตรวจสอบ ความเร็วในการตอบสนอง (Latency)
  • วัด Throughput หรือปริมาณ Request ต่อวินาที
  • ทดสอบ ความทนทานของระบบ (Stability) ภายใต้ภาระหนัก
  • ดูว่าเมื่อเกิด overload แล้วระบบ Fail gracefully หรือพังทั้งระบบ

ภาพรวมของเครื่องมือยอดนิยม: Vegeta, k6 และ wrk

เครื่องมือเขียนด้วยภาษาจุดเด่นเหมาะกับ
VegetaGoเบา, script ง่าย, ประสิทธิภาพสูงDev ที่ชอบ CLI / Go ecosystem
k6Go (แต่ scripting ด้วย JS)มี GUI, CI/CD friendly, Analytics เจ๋งทีม DevOps, QA Automation
wrkCเร็วมาก, เหมาะ benchmarkทดสอบ throughput แบบ hardcore

ตัวอย่างการใช้งาน: Vegeta

ติดตั้ง:

go install github.com/tsenart/vegeta@latest

สร้างไฟล์ target.txt:

GET http://localhost:8080/api/hello

ยิงโหลด:

echo "GET http://localhost:8080/api/hello" | vegeta attack -duration=10s -rate=100 | tee results.bin | vegeta report

ตัวอย่างการใช้งาน: k6

ติดตั้ง:

brew install k6

เขียนสคริปต์ script.js:

import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('http://localhost:8080/api/hello');
  sleep(1);
}
    

รัน:

k6 run script.js

ตัวอย่างการใช้งาน: wrk

ติดตั้ง:

brew install wrk

รัน:

wrk -t12 -c400 -d30s http://localhost:8080/api/hello

หมายเหตุ: wrk ไม่สามารถวัด Latency per request ได้ละเอียดเท่า Vegeta หรือ k6 แต่ Throughput สูงที่สุด

ภาพเปรียบเทียบผลลัพธ์

เลือกอะไรดี?

  • Vegeta: เหมาะสำหรับ Dev ที่ต้องการความเร็ว พกง่าย เขียน script สั้นๆ
  • k6: ครบเครื่อง เหมาะสำหรับการใช้ร่วมกับ CI/CD
  • wrk: เบนช์มาร์กความเร็วแบบสูงสุด เหมาะกับ stress test

หากคุณอยู่ในทีม DevOps หรือ QA – แนะนำให้ใช้ k6
หากคุณเป็นนักพัฒนา Go – ใช้ Vegeta จะสบายมือกว่า
หากคุณต้องการเบนช์มาร์กจริงจัง – wrk เร็วที่สุด

สรุป

การเลือกเครื่องมือ Load Testing ที่ดีควรขึ้นกับรูปแบบการใช้งาน และความถนัดของทีม โดยไม่ลืมว่า “ผลลัพธ์ไม่สำคัญเท่าวิธีวัด” อย่าลืมวิเคราะห์ข้อมูลที่ได้มาอย่างมีเหตุผล และปรับปรุงระบบตามผลทดสอบอย่างต่อเนื่อง

ถ้าใครมีระบบ Go ที่ยังไม่เคย Load Test เลย ลองหยิบ Vegeta ขึ้นมาลองวันนี้ดู แล้วคุณจะทึ่งกับ performance ของระบบคุณเอง!


คำค้น SEO: Load Testing ด้วย Go, k6 vs Vegeta, wrk Benchmark, Golang Performance Test, ทดสอบ API ภาษา Go

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *