ในบทความนี้เราจะพูดถึงเครื่องมือและฟีเจอร์หลักสำหรับ NodeJS บนแพลตฟอร์ม Ruk-Com Cloud ที่มีความรวดเร็ว สามารถปรับขนาดได้และมาพร้อมกับเครื่องมือที่มีประสิทธิภาพในการจัดการโดยอัตโนมัติ
การตั้งค่า Environment Node.js
การรันแอปพลิเคชัน Nodejs คุณจะต้องตั้งค่า environment ให้เหมาะสมโดยการใช้ Topology Wizard สลับไปที่แท็บ Node.js เลือกเวอร์ชัน engine ที่คุณต้องการสำหรับแอปพลิเคชันเซิร์ฟเวอร์และ software stack อื่นๆ จากนั้นปรับพารามิเตอร์เช่น จำนวนโหนด, cloudlets, Public IPv4
หมายเหตุ: แต่ละอินสแตนซ์เป็นคอนเทนเนอร์ที่แยกกันโดยสิ้นเชิงและโหนดที่ปรับขนาด Horizontal Scaling จะถูกกระจายออกไปในแต่ละเซิร์ฟเวอร์โดยอัตโนมัติ (physical servers หรือ VMs) เพื่อให้มั่นใจว่ามีความพร้อมใช้งานสูง
เวอร์ชัน Node.js
ปัจจุบันเรารองรับ Node.js เวอร์ชัน
- 12.x.x
- 14.x.x
- 16.x.x
- 17.x.x
คุณสามารถเลือกเวอร์ชันของ Node.js ที่คุณต้องการได้โดยตรงผ่าน topology wizard ในระหว่างการสร้าง enviornment ใหม่และคุณสามารถปรับเปลี่ยนเวอร์ชันที่มีอยู่ผ่าน container redeployment
การ deploy แอปพลิเคชัน Node.js
แพลตฟอร์มนี้จะดำเนินการ deploy อัตโนมัติ สำหรับการจัดการแอปพลิเคชันเซิร์ฟเวอร์ Node.js สามารถทำได้ด้วยวิธีดังนี้:
- Local File – อัปโหลดไฟล์จากเครื่องของคุณ (.zip .tar .tar.gz .tar.bz2 .tar.xz)
- URL (http://… ftp://… file://…)
- Git/SVN – remote VCS repository (เช่น GitHub)
หมายเหตุ: คุณสามารถเปลี่ยนเส้นทาง ports auto-redirect ได้ด้วยตนเองผ่านตัวแปร REDIRECT_EXCLUDE_PORTS
คู่มือเพิ่มเติมเกี่ยวกับการ deploy แอปพลิเคชัน Node.js ตามหัวข้อด้านล่างนี้
Node.js Package Managers
Process Managers มีความสามารถในการควบคุม application lifecycle, ตรวจสอบการทำงานของ service, และรักษาความสามารถในการทำงาน แพลตฟอร์มนี้รองรับ process manager ของ NodeJS stack:
- npm – start แอปพลิเคชัน
- pm2 – ฟีเจอร์การจัดการแอปพลิเคชันที่หลากหลายรวมถึงตรวจสอบ processes ของ Node.js ที่เปิดใช้งาน
- forever – รัน Node.js อย่างต่อเนื่องและรีสตาร์ทใหม่อัตโนมัติเมื่อเกิดความล้มเหลว
- supervisor – ตรวจสอบแอปพลิเคชันที่ทำงานอยู่เพื่อดูการเปลี่ยนแปลงและรีสตาร์ทโดยอัตโนมัติที่จำเป็นเพื่อให้อัปเดตอยู่เสมอ
คุณสามารถเลือกใช้ process manager ที่เหมาะสมในระหว่างการ redeploy คอนเทนเนอร์ใหม่หรือเปลี่ยนตัวแปร (forever, npm, pm2, หรือ supervisor) และรีสตาร์ทคอนเทนเนอร์เพื่อปรับใช้ตัวเลือกใหม่
การจัดการโดเมน
คุณสามารถผูกโดเมนของคุณเองได้อย่างง่ายโดยมี 2 ตัวเลือกตามการตั้งค่า environment topology ของคุณ
- CNAME redirect หากใช้ Shared Load Balancer ซึ่งแนะนำสำหรับ dev หรือการทดสอบ environment
- DNS A Record หากใช้ Public IP; สามารถรองรับปริมาณการใช้งานสูงและเหมาะสำหรับ production environment
นอกจากนี้ คุณสามารถสลับการรับส่งข้อมูลระหว่าง environment ของคุณได้อย่างรวดเร็ว (เพื่อเปลี่ยนเส้นทางลูกค้าไปยังแอปพลิเคชันเวอร์ชันใหม่กว่าโดยไม่มี downtime) โดยใช้ฟังก์ชัน swap domains หรือวิธี SwapExtIps API/CLI
Automatic Vertical Scaling
แพลตฟอร์มนี้คุณสามารถกำหนดจำนวนทรัพยากรที่ต้องการได้อย่างแน่นอน (RAM และ CPU) แบบไดนามิกที่โหนดของคุณตามการใช้งาน load ปัจจุบัน คุณจึงไม่ต้องจ่ายเงินมากเกินไปในส่วนของทรัพยากรที่ไม่ได้ใช้งาน
เพียงตั้งค่า cloudlets limit สำหรับแอปพลิเคชัน Nodejs (1 cloudlet เท่ากับ RAM 128 MiB และ CPU 440 MHz)
คู่มือเพิ่มเติมเกี่ยวกับการปรับขนาดแนวตั้งโดยอัตโนมัติ
Manual Horizontal Scaling
การปรับขนาดเพิ่ม/ลดจำนวนแอปพลิเคชันเซิร์ฟเวอร์ คุณสามารถตั้งค่าได้ด้วยตนเองผ่าน topology wizard คลิกปุ่ม +/- ที่ส่วนของ Horizontal Scaling และสามารถเลือกโหมดสำหรับ scale โหนดตามที่คุณต้องการได้
- Stateless – สร้างโหนดใหม่จากเทมเพลต base image
- Stateful – คัดลอกไฟล์ทั้งหมดของคอนเทนเนอร์หลักไปยังโหนดใหม่
จำนวนแอปพลิเคชันเซิร์ฟเวอร์ใน environment เลเยอร์เดียวกันสามารถขยายได้สูงสุด 16 โหนด นอกจากนี้ load balancer จะถูกเพิ่มโดยอัตโนมัติเมื่อปรับขนาดเซิร์ฟเวอร์เพื่อกระจายการทำงานให้เหมาะสม คู่มือเพิ่มเติมเกี่ยวกับการปรับขนาดแนวนอน
Automatic Horizontal Scaling
การตั้งค่าปรับขนาดเครื่องเซิร์ฟเวอร์อัตโนมัติ คลิกที่ปุ่ม Settings > Auto Horizontal Scaling ในส่วนนี้คุณสามารถตั้ง trigger สำหรับเพิ่มหรือลดจำนวนโหนดโดยวัดจาก application load
คุณสามารถกำหนดค่าประเภทของทรัพยากรที่จะ monitor (CPU, RAM, Network, Disk) และกำหนดเงี่อนไขการปรับขนาด
เรียนรู้เพิ่มเติมเกี่ยวกับการปรับขนาดแนวนอนโดยอัตโนมัติ คลิกที่ลิงก์นี้
นอกจากนี้ แพลตฟอร์ม Ruk-Com Cloud ยังมีฟีเจอร์และเครื่องมืออื่นๆ เช่น:
- Built-In SSL หรือกำหนดเอง
- Public IPv4
- ซอร์ฟแวร์สแต็กที่หลากหลาย
- Container firewalls, endpoints, และการแยก environment
- การจัดการ environment โดยตรงผ่าน SSH
- การเปิดใช้งาน API และ Cloud Scripting สำหรับการทำงานอัตโนมัติ
- รูปแบบการกำหนดราคาแบบจ่ายตามการใช้งาน
- ฟังก์ชั่นการทำงานร่วมกัน
- การกระจายเซิร์ฟเวอร์แบบ Multi-cloud