เพิ่งไปแบ่งปันเรื่อง Performance testing ด้วย JMeter มานิดหน่อย
สิ่งหนึ่งที่ยังไม่ได้แนะนำไป คือ Distributed performance testing
เพื่อทำการขยายเครื่องที่สร้าง workload หรือ จำนวนผู้ใช้งาน
เพื่อส่งไปยังระบบที่ต้องการทดสอบ
จึงทำการเขียนสรุปไว้นิดหน่อย
เครื่องมือที่ใช้งานประกอบไปด้วย
- OpenJDK 11 (JRE)
- Apache JMeter 5.2.1
- Docker + Docker Swarm
โดยสิ่งที่จะทำคือ Distributed Testing ด้วย JMeter
และทำการขยายเครื่องสร้าง workload หรือเครื่อง worker/slave ด้วย Docker Swarm
แสดงโครงสร้างการทำงานดังนี้
จากรูปนั้น สิ่งที่เราจะสร้างขึ้นมาคือ JMeter server หรือ worker จำนวน 4 เครื่องขึ้นมา
เครื่องมือที่ใช้จัดการคือ Docker Swarm
(ส่วน Kubernetes ก็ทำได้ง่าย ๆ แต่จะซับซ้อนขึ้นมาหน่อย ไว้อธิบายแยกไปอีก blog)
มาเริ่มสร้างกันเลย
ขั้นตอนที่ 1 สร้าง Docker Image ของ JMeter กันก่อน
โดยใช้ base image ของ OpenJDK 11 (JRE)
และทำการ download JMeter 5.2.1 มาใช้งาน ดังนี้
จากนั้นทำการสร้าง Docker image ตามที่กำหนด
โดยผมสร้างชื่อว่า somkiat/jmeter
$docker image build -t somkiat/jmeter .
ขั้นตอนที่ 2 ทำการ deploy JMeter Slave จำนวน 4 เครื่องด้วย Docker Swarm
สามารถจัดการด้วย docker-compose.yml นี่แหละ
จากนั้นทำการ deploy ด้วย Docker Swarm ดังนี้
จากนั้นทำการดู IP ของแต่ละ container ว่าเป็นอะไร
เพื่อเอามาใช้งานในขั้นตอนที่ 3
ขั้นตอนที่ 3 สร้าง JMeter Master สำหรับควบคุม worker ทั้ง 2 เครื่อง
นั่นคือการสร้าง JMeter container ขึ้นมา
จากนั้นสั่งการให้ทั้ง 2 เครื่องสร้าง workload
เพื่อส่งไปยังระบบที่ต้องการทดสอบ
โดยทำการสร้าง container จาก image ที่สร้างจากขั้นตอนที่ 1 นั่นเอง
เพียงเท่านี้ก็สามารถขยายชุดการทำ Performance testing แบบง่าย ๆ ได้แล้ว
แน่นอนว่ายังมีเครื่องมือตัวอื่น ๆ อีก
ไว้จะมาเขียนอธิบายต่อไป