Ruby on Rails เว็บเฟรมเวิร์คที่ได้รับความนิยมอย่างสูงในงานสาย startup เปิดตัวเวอร์ชัน 8.0.0 Beta 1 เป็นที่เรียบร้อยเมื่อวันที่ 27 กันยายน 2567 โดยมีสโลแกนใหม่ของการอัปเดตครั้งนี้ว่าเพื่อการ deploy แอป โดยไม่ต้องใช้ PaaS (Platform as a Service)
ใน Rails 8.0.0 Beta 1 มีฟีเจอร์สำคัญดังนี้:
- การ deploy แบบใหม่ที่ไม่ต้องพึ่งพา PaaS: Rails 8 มาพร้อมความสามารถจัดการ deploy บนเซิร์ฟเวอร์ของตนเอง ลดการพึ่งพา third-party PaaS โดยให้ Rails ทำหน้าที่ทุกขั้นตอน ไม่ว่าจะเป็นการกำหนดค่าเซิร์ฟเวอร์, การจัดการ certificates, หรือการจัดการ scaling ของแอป
- การ deploy ผ่านเครื่องมือ Kamal: ใน Rails 8 Dockerfile ได้รับการปรับปรุงให้รองรับ Thruster ซึ่งเป็น proxy ใหม่ที่อยู่ด้านหน้าของ Puma web server ช่วยเพิ่มประสิทธิภาพด้วย X-Sendfile acceleration, caching assets, และ asset compression ทำให้ไม่ต้องใช้ Nginx หรือเว็บเซิร์ฟเวอร์อื่นๆ โดย container ของ Rails พร้อมรับทราฟฟิกจากอินเทอร์เน็ตได้ทันที
- Kamal Proxy: proxy เฉพาะของ Kamal 2 ถูกเพิ่มเข้ามาแทนที่ Traefik ที่เคยใช้ ช่วยให้ deploy แบบ zero-downtime เร็วขึ้น พร้อมการจัดการ SSL certificates อัตโนมัติผ่าน Let's Encrypt และรองรับหลายแอปบนเซิร์ฟเวอร์เดียวกันโดยไม่ต้องตั้งค่าซับซ้อน
- ระบบจัดการ secrets: ได้รับการปรับปรุงให้รองรับการเชื่อมต่อกับ 1Password, Bitwarden, และ LastPass รวมถึงฟีเจอร์ aliases ช่วยให้เรียกใช้คำสั่งอย่าง "kamal console" เพื่อเปิด remote Rails console session ได้ง่ายขึ้น เป็นแพ็คเกจที่ครอบคลุมทั้งการ deploy และการปฏิบัติงานของแอปพลิเคชันใน production
- การจัดการ asset ผ่าน propshaft: Rails 8 เปลี่ยนมาใช้ propshaft แทนที่ sprockets ซึ่งจะช่วยลดความซับซ้อนของการจัดการไฟล์ frontend เช่น รูปภาพ, ฟอนต์, JavaScript, และ stylesheets โดยลดการพึ่งพา libraries ภายนอก และการตั้งค่า build tools ซับซ้อนต่างๆ
- Solid Queue และ Solid Cache: การใช้งาน Solid Queue และ Solid Cache เป็นค่าเริ่มต้น ทำให้งานประมวลผลเบื้องหลังและการ caching ถูกจัดการได้อย่างเรียบง่าย ลดการพึ่งพา Redis หรือ Sidekiq สำหรับงานทั่วไป
ผู้พัฒนายังเน้นย้ำว่าการ deploy โดยไม่ต้องใช้ PaaS นอกจากช่วยลดความซับซ้อนและเพิ่มความยืดหยุ่นให้กับนักพัฒนา Rails แล้ว ยังสามารถช่วยลดค่าใช้จ่ายสำหรับการ deploy บน cloud service ได้มากอีกด้วย
ที่มา: Rails 8 beta 1, Rails World 2024 Opening Keynote