เพิ่งไปแบ่งปันเรื่อง 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 แบบง่าย ๆ ได้แล้ว
แน่นอนว่ายังมีเครื่องมือตัวอื่น ๆ อีก
ไว้จะมาเขียนอธิบายต่อไป