เดี๋ยวนี้ใครๆ ก็น่าจะได้ยินชื่อ Node หรือ Node.js กันแล้ว หลายๆ ที่ก็เอาไปใช้ในระบบของตัวเอง หลายคนก็เอา Framework ที่สร้างจากเทคโนโลยี Node ไปใช้
ซึ่งถ้าเรากำลังใช้หนึ่งในเครื่องมือพวกนี้อยู่ ก็รู้ได้เลยว่าเรากำลังใช้เทคโนโลยี Node ในการทำงานแล้วล่ะ
- MEAN Stack (Web App, Web API)
- SASS
- React
- React Native (Mobile App)
- Ionic (Hybrid Mobile App)
- Vue.js
- Angular CLI
- Meteor
- Electron (Desktop App)
- และอื่นๆ อีกมากมาย หาได้ในเว็บ NPM
ซึ่ง Node ก็เหมือนระบบอื่นๆ มันมีการพัฒนา และปรับปรุงตัวเองอยู่เสมอ แต่ในเวอร์ชั่น 8.3 นี้ มีการเปลี่ยนแปลงสำคัญ 2 ส่วนทีเดียว มาดูกันครับ
ความเร็ว
ถ้าพวกเราศึกษาที่มาที่ไปของ Node.js (ดู Slide ที่พลใช้สอนได้ที่นี่) จะรู้ว่ากลไกสำคัญหนึ่งของการทำงาน คือ JavaScript Engine ที่ชื่อ V8 ของ Google
เอาง่ายๆ ถ้า Node เป็นรถยนต์ V8 ก็เครื่องยนต์ที่ใช้ขับเคลื่อนให้ Node โลดแล่นนั่นเอง
ทีนี้ V8 ในรุ่นแรกๆ ใช้ JIT Compiler (Just-in-time) ที่ทำหน้าที่บีบอัดโค้ด JavaScript ตอนถูกเรียกใช้งาน ซึ่งก็ได้มีการพัฒนาต่อยอดมาเพื่อเพิ่มความเร็วของ V8 มากขึ้นเรื่อยๆ ดังนี้
- FullCodeGen
- CrankShaft
แต่ก็เหมือนเครื่องยนต์ของรถ มันมีจุดดี จุดด้อยเหมือนกัน JavaScript ที่ว่าทำงานได้เร็วแล้ว ก็อาจจะช้าบ้างในบางกรณี อันนี้ถ้าเราตาม Matteo Collina ก็จะได้เรียนรู้การเขียน JavaScript ที่รีดพลังของ V8 ออกมาได้สูงๆ หลากหลายวิธี
ซึ่งปัญหาประสิทธิภาพนี้ ทำให้ทีมงาน V8 ตัดสินใจ “สร้าง” JIT Compiler ขึ้นมาใหม่ เลยทีเดียว และตอนนี้มีชื่อเรียกว่า TurboFan ครับ (แค่ชื่อก็เหมือนจะเย็นสบาย)
ง่ายๆ คือ TurboFan ตัวนี้ ทำการจัดการปัญหาประสิทธิภาพระดับตำนานหลายแบบ (ดูรายชื่อปัญหา และผลการ benchmark ได้ที่นี่) เพื่อเพิ่มประสิทธิภาพของ JavaScript ที่ทำงานบน Google Chrome (Front-end) และ Node.js (ฝั่ง Server)
พร้อมเข้าสู่ LTS
การเปลี่ยนแปลงนี้จะดูไม่มีอะไรโดดเด่นนัก เพราะตอนนี้ใครต้องการทดสอบความแรง เร็ว มักจะดาวน์โหลด Node.js เวอร์ชั่นล่าสุด ไปท้าทายตัวเองอยู่แล้ว (พลจะเชียร์ Node.js เวอร์ชั่น LTS มากกว่าสำหรับ Production)
แต่ Node 8.3 ที่มี TurboFan จะเข้าสู่ LTS (Long Time Support) แทน 6.X ในตอนที่พลคุยอยู่นี้ ช่วงเวลาน่าจะเป็นช่วงตุลาคมหน่ะสิครับ เตรียมตัวกันได้เลย
แนวทางสำหรับคนใช้ Node.js อยู่แล้ว
การเปลี่ยนแปลงนี้ใหญ่พอตัว เพราะถ้าเราต้องการเปลี่ยนจาก Node 6.X มาใช้ 8.3+ แล้วส่วนสำคัญคือการทดสอบประสิทธิภาพในหลายๆ จุด ซึ่งพลรวบรวมแนวทางมาให้ดังนี้
- วางแผนทดสอบ ปัจจุบันเราสามารถดาวน์โหลด Node 8.X มาใช้ทดสอบได้แล้ว สามารถทำได้ทันที ลองใช้ใน Local, Staging Environment, หรือ Production เล็กๆ ได้
- เจอ bug? ให้รายงานไปที่ issue tracker ของโครงการได้เลย
- หากตอนนี้ Application ที่รันอยู่ ยังไม่ได้ใช้ Node 7.X หรือ 8.X ก็รอหลังจากตุลาคมก็ได้
อ้างอิง – V8 Project, Node.js Collection, Node.js Foundation Announcement