สัปดาห์ที่ผ่านมา Spring Boot 3.3.0 ถูกปล่อยออกมาแล้ว
ใครจะไม่ upgrade แนะนำเลยครับ
โดยความสามารถที่น่าสนใจประกอบไปด้วย
- สนับสนุน CDS (Class Data Sharing) ทำให้ start เร็วขึ้น และใช้งาน memory น้อยลง
- ปรับปรุงเรื่อง observability เช่นเพิ่ม @SpanTag เข้ามา สำหรับ tracing แบบง่าย ๆ
- เพิ่ม SBOM (Software Bill of Materials) actuator endpoint เข้ามา ช่วยให้เราเห็นว่าระบบงานใช้ library อะไรบ้าง
- ทำการเปลี่ยนแปลงเอกสารใหม่
ความสามารถที่น่าสนใจมาก ๆ คือ CDS (Class Data Sharing)
เป็น feature ใน JVM ที่มีมาตั้งแต่ Java 12
โดยจะทำการสร้างไฟล์สำหรับ load standard library ที่จะใช้งานขึ้นมา
จากนั้นในการใช้งานก็ load จากไฟล์เดียวเท่านั้น
ไม่ต้องไป load แบบ class-by-class เหมือนเดิม
รวมทั้งถ้า class ไหนใช้ซ้ำก็ใช้ที่เดียวกันไปเลย ไม่ต้อง load ใหม่
จึงช่วยลดการใช้งาน memory และ load เร็วขึ้นนั่นเอง
ดังนั้นมาลองดูกันว่า เร็วขึ้น และ ใช้ memory น้อยลงจริงไหมกัน ?
เป็นการทดลองใช้งาน Spring 3.3.0 กับ 3.2.6 บน Java 22
ก่อนอื่นทำการ print การใช้งาน memory ของ app มาก่อน
[gist id="0e519e39ed0766084cb4e194c9ab6ff7" file="MemoryUsageLogger.java"]จากนั้นสร้าง JAR fil แบบปกติ
[gist id="0e519e39ed0766084cb4e194c9ab6ff7" file="1.txt"]ต่อจากนั้นทำการสร้าง CDS JAR file และลองใช้งาน
[gist id="0e519e39ed0766084cb4e194c9ab6ff7" file="2.txt"]ผลออกมาไม่ต่างมากเท่าไร ถ้าระบบใหญ่ ๆ น่าจะเห็นชัดมากขึ้น
อีกเรื่องคือ การเพิ่ม SBOM endpoint เข้ามา ทำงานกับ CycloneDX
สามารถ config เพิ่มมาได้ดังนี้
[gist id="0e519e39ed0766084cb4e194c9ab6ff7" file="pom.xml"]จากนั้นเปิด management web endpoint ใน Actuator ดูได้เลย
- http://localhost:8080/actuator/sbom/application
ตัวอย่างเช่น
[gist id="0e519e39ed0766084cb4e194c9ab6ff7" file="sbom.json"]ช่วยให้เราเอาไป analyze ต่าง ๆ ได้ง่าย เช่น Security เป็นต้น
Upgrade กันได้แล้วนะ ตอนนี้ Spring Boot 3.1 ไม่ support แล้วนะครับ !!