จาก blog เรื่อง ว่าด้วยเรื่อง Project CRaC กับ Spring framework
ยังขาดตัวอย่างการใช้งาน
จึงทำการสร้าง project ตัวอย่าง สำหรับการใช้งาน Spring Boot 3 กับ CRaC
เพื่อทำให้เห็นว่าเวลาในการ start up ดีขึ้นอย่างไรบ้าง
มาเริ่มกันเลย

ขั้นตอนที่ 1 สร้าง Apache Maven project และเพิ่ม library crac ใน pom.xml

ขั้นตอนที่ 2 ตอนนี้ CRaC นั้นสนับสนุน Linux OS เท่านั้น และ JDK 17, 21 เท่านั้น

จึงใช้งาน docker มาช่วยจัดการ มีขั้นตอนดังนี้

  • ทำการ Download JDK + CRaC มาใช้งาน
  • ทำการ build JAR file ของ Spring Boot project
  • ทำการ build docker image และ container
  • ในการ run java จะเพิ่ม parameter เพื่อสร้าง checkpoint ของการทำงานไว้คือ java -XX:CRaCCheckpointTo
  • จากนั้นทำการบันทึก checkpoint ไว้โดยทำการ commit container มาเป็น image (demo:checkpoint) เพื่อใช้ในการ start ครั้งต่อไป

Dockerfile เป็นดังนี้

การทำการอยู่ในไฟล์ entrypoint.sh

จากนั้นทำการ run เพื่อสร้าง image ของการ checkpoint ไว้

ขั้นตอนที่ 3 ทำการ run container เพื่อดูผลจากการบันทึก checkpoint ด้วย CRaC

จะเห็นได้ว่า เวลาในการ start จะเร็วมาก ๆ
ปกติที่เครื่องจะใช้เวลา 0.6 วินาที แต่พอใช้ CRac จะเหลือเพียง 0.039

Reference Websites