คำถามที่เจอจากการปรับปรุงการทำงานของระบบที่พัฒนาด้วย Spring Boot
ว่าจะลดเวลาของการ start up และการใช้งาน memory ลงอย่างไรบ้าง ?

โดยแนวทางก็มีหลายอย่างทั้ง

  • ลดจำนวน bean ของการ initial ตอน load ซึ่ง load เท่าที่จะใช้งาน
  • เปลี่ยนไปใช้ GraalVM หรือ Spring Native ไปเลย
  • เปลี่ยนจากทำงานแบบ request-response model มาเป็น Reactive เช่น WebFlux, Vert.x เป็นต้น
  • เปลี่ยนมาใช้ JDK ตัวใหม่ ๆ
  • เปลี่ยนภาษาเลยดีไหม ซึ่งก็ได้ทำ performance test เปรียบเทียบไปแล้ว

มีอีกวิธีที่น่าสนใจคือ เปลี่ยน JVM จาก Hotspot มาเป็น OpenJ9

โดยที่ OpenJ9 นั้นถูกพัฒนามาจาก community
ซึ่งตอนนี้อยู่ภายใต้ Eclipse foundation
มีเป้าหมายเพื่อปรับปรุง JVM
ให้ทำงานได้อย่างมีประสิทธิภาพมากกว่า HotSpot ของ Oracle
ทั้งความเร็วและการใช้ resource ต่าง ๆ
ช่วยให้ระบบที่พัฒนาเหมาะสมต่อการ deploy บนระบบ cloud มากยิ่งขึ้น

ในการใช้งานนั้นสามารถ Download ง่าย ๆ ได้จาก AdoptionOpenJDK

หรือจะใช้งานผ่าน Docker Image ได้เลย
ซึ่งผมเคยทำการสรุปไว้แล้วที่ มาใช้งาน OpenJ9 + Docker

แต่ก็ยังมีตัวอื่น ๆ ถูกพัฒนาเพิ่มเข้ามา เช่น SubstrateVM
เป็น internal project ที่อยู่ด้านหลังของ GraalVM อีกที
ที่ลดการใช้งาน memory ไปมากอีกด้วย

และเท่าที่ดู HotSpot version ใหม่ ๆ
ก็จะมี performacne ไปในทิศทางเดียวกับ OpenJ9 เช่นเดียวกัน
ดังนั้นคนใช้งานจำเป็นต้องรู้และเข้าใจ
ตลอดจนนำมาทดสอบในระบบงานของเราอีกด้วย
เพื่อให้เห็นชัดว่า เหมาะสมกับระบบงานหรือความต้องการหรือไม่ต่อไป