
มีโอกาสแบ่งปันความรู้เรื่องของการพัฒนาระบบงานด้วย
ภาษา Java และ Spring Boot จำนวน 2-3 วัน
เป้าหมายหลัก ๆ ที่ตั้งใจไว้คือ
- ทำการ update ความรู้เรื่องของ java modern feature ที่น่าสนใจ
- การพัฒนาระบบงานด้วย Spring Boot version 4 + Spring Framework 7
- ทำ workshop ของแต่ละเรื่อง เพื่อเปรียบเทียบก่อนและหลัง เพื่อให้เห็นภาพชัดเจน
มีรายละเอียดที่น่าสนใจ ดังนี้
เริ่มด้วยการอธิบายเกี่ยวกับ java feature ที่น่าสนใจ (ส่วนใหญ่ใช้ Java 21+ กัน หรือต่ำสุดก็ 17 แล้ว)
และเน้นเรื่องของ Cloud Native Application
ซึ่งเน้นที่ความเร็วของระบบ
การใช้งาน resource ที่น้อยลง
การสร้าง software package แบบ Single executable
การ deploy ที่ง่ายขึ้น
โดย feature ของภาษา Java ที่น่าสนใจเรื่องแรกคือ Virtual Thread
จะสนับสนุนตั้งแต่ Java 21 นั่นเอง
เหมาะสมกับงานพวก I/O bound นั่นเอง
เช่นใน RESTful API นั้นเหมาะกับ การติดต่อ database
และการเรียกใช้งาน external service ผ่าน HTTP protocol (network) นั่นเอง
ส่วนถ้าเป็นงานที่ใช้ CPU เป็นหลักจะไม่เหมาะ
โดยทำการจะลอง workshop ให้เห็นก่อนและหลังการใช้งาน เช่น
- ใช้ Java 21 + Spring Boot 4 + Tomcat (platform thread) กับการทำงานช้า ๆ ซึ่งการทำงานแตก thread ด้วย Virtual Thread
- ใช้ Java 21 + Spring Boot 4 + Tomcat (enable virtual thread) กับการทำงานช้า ๆ ซึ่งการทำงานแตก thread ด้วย Virtual Thread
สิ่งที่น่าสนใจคือ แบบหลังได้ผลการทำงานที่ดีกว่า
ทั้งในแง่ความเร็ว และ การรองรับผู้ใช้งาน
รวมทั้ง resource ที่ใช้งานต่อ request
ในการทดสอบนั้นจะใช้การ load test ทั้งจาก wrk และ K6
จากนั้นทำการแนะนำการ build Java + Spring Boot ด้วย GraalVM
หรือแนะนำ framework นอกเหมือน Spring Boot เช่น Quarkus และ Micronaut
ซึ่งถูกสร้างขึ้นมาด้วยแนวคิด Cloud Native เลย
เป็นสิ่งที่ควรเรียนรู้และทำ Poc กันไว้จะดีมาก
จากนั้นแนะนำ feature อื่น ๆ ที่ควรรู้พร้อม workshop เช่น
- Stream API และ Lamda ด้วยการทำงานกับข้อมูลขนาดใหญ่
- ปัญหาต่าง ๆ ที่ต้องแก้ไข เป็นที่มาของ feature ต่าง ๆ เช่น Generic PECS(Producer Extends Consumer Super), Optional และ try-with-resource
- Java main compact
รวมทั้งเรื่องพื้นฐานต่าง ๆ ที่ Spring Boot + Spring Framework ใช้งาน
- S.O.L.I.D principle
- การเปลี่ยนแปลง package ต่าง ๆ จาก javax.* ไปเป็น jakatar
- การจัดการ bean ใน context ของ Spring ที่ต้องเข้าใจ
- การทำงานร่วมกัย Virtual Thread รวมทั้งการใช้งาน Spring Reactive Web อีกด้วย
- ความสามารถใหม่ ๆ เช่น Retryable และ ConccurenctLimit เป็นต้น
- การเปลี่ยนแปลงสำหรับ module ต่าง ๆ
- แนวทางในการจัดการ project structure และการใช้งาน Spring modulith สำหรับการวางโครงสร้างแบบ modular monolith
- แนวทางในการออกแบบ database model ให้เหมาะสมกับการใช้งานทั้ง read และ write
- การจัดการ database ผ่าน JDBC vs JPA เพื่อให้เห็นข้อดีและข้อเสีย เพื่อใช้ในการใช้งานตาม use case
- ทำความเข้าใจเกี่ยวกับ transaction management, transaction propagation และ isolation level
- เรื่องของ observability ของระบบทั้ง log, metric และ tracing
ทั้งหมดนี่เป็นเรื่องพื้นฐานล้วน ๆ
ที่นักพัฒนาระบบงานด้วยภาษา Java และ Spring Boot ควรต้องเตรียมตัวให้พร้อม
ปิดท้ายด้วยการนำ AI Agent for coding เข้ามาใช้งาน
ทั้งการสร้าง project ใหม่ และ existing project อีกด้วย
ว่าแต่ไปเขียน Kotlin ก็ได้นะครับ !!
ขอให้สนุกกับการ coding