Node.js Hosting

ในบทความนี้เราจะพูดถึงเครื่องมือและฟีเจอร์หลักสำหรับ 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