Selenium Grid 4 ใช้ W3C WebDriver protocol
จากเดิมที่ยังใช้งาน JSONWire protocol ไป
และยังได้เพิ่มเรื่องของการสนับสนุน DevTools protocol อีกด้วย
แต่ยังอยู่ในช่วงของ experiment feature เท่านั้น
เรื่องที่น่ายินดีมาก ๆ คือ การปรับปรุงเอกสารให้อ่านง่าย เข้าใจได้ง่ายขึ้น
แน่นอนว่า ชัดเจนและทำตามได้ดีกว่าเดิมเยอะ
ลองไปอ่านกัน Selenium Grid 4 Documentation
ใน version นี้แบ่ง component ออกจากกันชัดเจน
ซึ่งประกอบไปด้วยดังนี้ (แต่ก็เพิ่มความซับซ้อนขึ้น)
- Router
- Session queue
- Session map
- Distributor
- Event bus
- Nodes
แสดงดังรูป
ในเรื่องของการติดตั้งทำได้ 4 แบบคือ
- แบบที่ 1 คือ แยก Hub และ Node ตาม role ปกติ
- แบบที่ 2 คือ standaone ซึ่งทำงานได้ทุก role ใน instance เดียว
- แบบที่ 3 คือ distributed mode ซึ่งจะต้องสร้างแต่ละส่วนงานขึ้นมาตามลำดับ ก่อนที่จะทำการเพิ่ม node ดังนี้ Event bus, Session map, Session queue, distributor และ router นี่มันแนวคิด Microservices ชัด ๆ
- แบบที่ 4 คือ การใช้งานผ่าน Docker
เปลี่ยนจาก Jetty มาเป็น Netty
ส่งผลให้การทำงานรวดเร็วขึ้นแต่ก็ยังต้องการใช้ Memory 1 GB ต่อ 1 process เช่นเดิม
นั่นหมายความว่า ยังคงกิน resource เยอะเช่นเดิม
เมื่อมี request ต่าง ๆ เข้ามา ยังคงเก็บเข้า queue ใน memory เช่นเดิม
ดังนั้นถ้ามีปัญหาก็หายหมดทันที
ซึ่งเป็นอีกหนึ่งส่วนงานที่ยังทำให้ไม่เสถียรอย่างมาก
ถ้ามีการใช้งานพวก database หรือ messaging server เข้ามาช่วยจะทำให้เสถียรขึ้น
แต่ก็เพิ่มความซับซ้อนเช่นเดียวกัน
เมื่อทำการเปลี่ยนแปลง configuration แล้ว จำเป็นต้อง restart เช่นเดิม
ถ้าต้องจัดการจำนวน instance เยอะ ๆ
แนะนำให้ไปใช้ Selenoid (Selenium + Docker) เลยดีกว่า
ไปดูอีก project ที่น่าสนใจคือ Moon
มันคือ Selenium in Kubernetes
น่าจะเป็นอีกทางเลือกที่น่าสนใจ