VPS vs VM vs VPC ต่างกันอย่างไร เลือกใช้อะไรดี
สรุปความแตกต่างระหว่าง VM, VPS และ VPC แบบเข้าใจง่าย VM คือเทคโนโลยีจำลองเครื่อง VPS คือบริการเช่าเครื่อง และ VPC คือเครือข่ายส่วนตัวบนคลาวด์ อ่านเพื่อเลือกใช้ให้ตรงกับงาน
VPS, VM และ VPC ในย่อหน้าเดียว
VM (virtual machine) คือคอมพิวเตอร์ที่สร้างขึ้นจากซอฟต์แวร์ โดย hypervisor จะแบ่งเซิร์ฟเวอร์จริงหนึ่งเครื่องออกเป็นเครื่องอิสระหลายเครื่อง ซึ่งแต่ละเครื่องจะรัน kernel ของตนเอง VPS (virtual private server) คือหนึ่งใน virtual machine เหล่านั้นที่ถูกนำมาให้เช่าเป็นผลิตภัณฑ์ โดยมาพร้อมกับระบบปฏิบัติการ สิทธิ์ root และราคาแบบรายเดือน ส่วน VPC (virtual private cloud) ไม่ใช่เซิร์ฟเวอร์ แต่เป็นเครือข่ายส่วนตัวที่คุณกำหนดขึ้นภายในบัญชีคลาวด์เพื่อนำทรัพยากรต่างๆ ไปวางไว้ข้างใน VM คือเทคโนโลยี VPS คือผลิตภัณฑ์ และ VPC คือเครือข่ายที่ล้อมรอบผลิตภัณฑ์นั้น
คำศัพท์สองคำนี้อธิบายถึงตัวเครื่อง ส่วนคำที่สามอธิบายถึงเครือข่าย ความสับสนเกือบทั้งหมดเกิดจากความไม่สอดคล้องนี้ เนื่องจากผู้คนมักนำมาเปรียบเทียบกันราวกับว่าทั้งสามอย่างเป็นผลิตภัณฑ์ที่วางอยู่บนชั้นเดียวกัน
VM คืออะไร
Hypervisor คือเลเยอร์ที่จำลองตัวเองเป็นฮาร์ดแวร์ โดยจะจัดสรร CPU เสมือน, หน่วยความจำ, ดิสก์เสมือน และการ์ดเครือข่ายเสมือนให้กับ Guest แต่ละตัว พร้อมทั้งป้องกันไม่ให้ Guest มองเห็นกันเอง KVM, Xen, Hyper-V และ VMware ESXi เป็นซอฟต์แวร์ที่นิยมใช้บนเซิร์ฟเวอร์ Hypervisor สมัยใหม่จะอาศัยความสามารถในการทำ virtualisation ของ CPU (Intel VT-x, AMD-V) ทำให้คำสั่งของ Guest สามารถรันบน CPU จริงได้ด้วยความเร็วใกล้เคียงกับเครื่องปกติ แทนที่จะต้องผ่านการตีความ (interpreted)
ส่วนที่สำคัญสำหรับผู้ดูแลระบบคือ kernel เนื่องจาก VM จะบูต kernel ของตัวเอง คุณจึงสามารถเลือก distribution, โหลด kernel modules และตั้งค่า sysctl ที่มีผลเฉพาะกับ VM ของคุณได้ ซึ่งต่างจาก container (LXC, Docker) ที่ใช้ kernel ร่วมกับโฮสต์และได้รับเพียงมุมมองของ process และไฟล์ในส่วนของตนเองเท่านั้น
คุณสามารถตรวจสอบคำตอบได้บนเครื่อง Linux ทุกเครื่องด้วยคำสั่งเดียว
systemd-detect-virtkvm หมายความว่าคุณกำลังใช้งานอยู่บน virtual machine ที่รันบน hypervisor แบบ KVM ส่วน lxc หรือ openvz หมายความว่าคุณอยู่ใน container ที่ใช้ kernel ของผู้อื่น และ none หมายความว่าคุณกำลังใช้งานบนฮาร์ดแวร์โดยตรง หากไม่มีคำสั่งดังกล่าว lscpu | grep -i hypervisor จะแสดงข้อมูลเดียวกันจาก CPU flags
VPS คืออะไร
VPS คือบริการเชิงพาณิชย์ที่ครอบอยู่บน VM เทคโนโลยีเบื้องหลังคือการทำ virtualisation ส่วนคำว่า "VPS" เป็นสิ่งที่เพิ่มเข้ามาเพื่อให้ขายได้ เช่น อิมเมจ OS ที่คุณติดตั้งใหม่ได้, หมายเลข IP, ปริมาณ bandwidth ที่กำหนด, แผงควบคุม (control panel), ราคาต่อเดือน และช่องทางติดต่อผู้ให้บริการเมื่อโฮสต์มีปัญหา คำว่า "Private" มีไว้เพื่อแยกความแตกต่างจาก shared hosting ซึ่งเป็นรูปแบบที่เว็บไซต์หลายร้อยแห่งใช้ระบบปฏิบัติการและค่าคอนฟิก PHP ชุดเดียวกัน
เนื่องจาก VPS เป็นชื่อผลิตภัณฑ์ไม่ใช่ศัพท์ทางเทคนิค จึงไม่ได้หมายความว่าเป็น VM เต็มรูปแบบเสมอไป แผนบริการราคาประหยัดบางแห่งขาย container ภายใต้ชื่อเดียวกัน ความแตกต่างจะปรากฏให้เห็นเมื่อคุณจำเป็นต้องใช้งาน kernel หากเป็นแผนที่ใช้ container คำสั่ง sudo modprobe wireguard จะล้มเหลวด้วย RTNETLINK answers: Operation not supported หรือ modprobe: FATAL: Module wireguard not found เนื่องจาก kernel เป็นของโฮสต์และคุณไม่ได้รับอนุญาตให้เปลี่ยนแปลง แต่หากเป็นแผน KVM โมดูลจะโหลดและ tunnel จะทำงานได้ตามปกติ หากคุณวางแผนที่จะรัน Docker, VPN, kernel แบบปรับแต่งเอง หรือ virtual machine ของคุณเองภายในเซิร์ฟเวอร์ ให้ตรวจสอบประเภทของ virtualisation ก่อนตัดสินใจซื้อ การรัน virtual machines ภายใน VPS จำเป็นต้องใช้ KVM ที่เปิดใช้งาน nested virtualisation ที่ฝั่งโฮสต์ ซึ่งเป็นกลุ่มแผนบริการที่มีให้เลือกน้อยกว่า
VPC คืออะไร
VPC คือเครือข่ายที่กำหนดด้วยซอฟต์แวร์ภายในผู้ให้บริการคลาวด์ คุณต้องกำหนดช่วงที่อยู่ IP ในรูปแบบ CIDR ให้กับมัน เช่น 10.0.0.0/16 จากนั้นจึงแบ่งเป็น subnet ต่างๆ เชื่อมต่อตารางเส้นทาง (route tables) และกำหนดกฎไฟร์วอลล์ (security groups) ไว้หน้าทรัพยากรที่อยู่ภายใน VPC ไม่มี CPU ไม่มีหน่วยความจำ และไม่มีดิสก์ จึงไม่มีส่วนที่ให้ล็อกอินเข้าไปได้ การลบเซิร์ฟเวอร์ทุกเครื่องใน VPC จะทำให้ VPC นั้นยังคงอยู่โดยว่างเปล่าและมักไม่มีค่าใช้จ่าย
สิ่งที่ VPC มอบให้คุณคือการกำหนดที่อยู่แบบส่วนตัว เซิร์ฟเวอร์สองเครื่องใน VPC เดียวกันสามารถสื่อสารกันผ่านที่อยู่เช่น 10.0.1.15 บนโครงสร้างพื้นฐานภายในของผู้ให้บริการ ทำให้ทราฟฟิกไม่ผ่านอินเทอร์เน็ตสาธารณะและไม่ถูกคิดค่าบริการในฐานะการรับส่งข้อมูลออกสู่อินเทอร์เน็ต (egress) ฐานข้อมูลจึงสามารถฟังคำสั่งบนที่อยู่ส่วนตัวเท่านั้น โดยไม่มีพอร์ตใดถูกเปิดเผยต่อสาธารณะเลย
ip -4 addr showที่อยู่ภายในช่วง 10.0.0.0/8, 172.16.0.0/12 หรือ 192.168.0.0/16 ถือเป็นที่อยู่ส่วนตัว หากเครื่องเดียวกันมีที่อยู่สาธารณะ นั่นหมายความว่าเซิร์ฟเวอร์นั้นสามารถเข้าถึงได้โดยตรงจากอินเทอร์เน็ต ไม่ว่ามันจะอยู่ในออบเจกต์เครือข่ายใดก็ตาม
VPC ทำให้เซิร์ฟเวอร์ของฉันเป็นส่วนตัวหรือไม่
ไม่ และนี่คือความเข้าใจผิดที่สร้างความเสียหายมากที่สุดในบรรดาสามคำศัพท์นี้ VPC ทำหน้าที่ควบคุมการกำหนดเส้นทาง (routing) และการกำหนดที่อยู่ (addressing) เท่านั้น ไม่ได้เป็นตัวตัดสินว่าอินเทอร์เน็ตจะเข้าถึงเครื่องได้หรือไม่ หาก instance มี public IP และกฎความปลอดภัยอนุญาตให้เข้าถึงพอร์ต 22 จาก 0.0.0.0/0 เครื่องนั้นก็จะถูกเปิดเผยต่อสาธารณะไม่ต่างจากเซิร์ฟเวอร์อื่น ไม่ว่าจะมี VPC หรือไม่ก็ตาม การแยกส่วน (isolation) ที่คุณได้รับจาก VPC คือความสามารถในการกำหนดให้ทรัพยากรไม่มี public address เลย รวมถึงการตั้งกฎว่า subnet ใดสามารถสื่อสารกับ subnet ใดได้บ้าง
คำศัพท์ทั้งสามคำยังให้คำมั่นสัญญาถึงการแยกส่วนในรูปแบบที่แตกต่างกัน VM จะแยกส่วนการประมวลผล (compute): hypervisor จะแบ่งเวลา CPU และหน่วยความจำออกจากกัน ทำให้ guest อื่นไม่สามารถอ่าน RAM ของคุณได้ การแยกส่วนดังกล่าวจะอ่อนแอกว่าในส่วนของดิสก์และเครือข่าย ซึ่งเพื่อนบ้านที่ใช้งานหนักบน host เดียวกันยังคงทำให้ประสิทธิภาพของคุณลดลงได้ ส่วน VPS ที่ใช้ container จะใช้ kernel ร่วมกัน ดังนั้นบั๊กในระดับ kernel จึงเป็นความเสี่ยงที่ใช้ร่วมกัน ในขณะที่ VPC ไม่ได้แยกส่วนการประมวลผลใดๆ เลย มันทำหน้าที่เพียงจัดรูปแบบเครือข่ายเท่านั้น
รูปแบบความคิดด้านราคา
โดยปกติแล้ว VPS จะขายในราคาคงที่ต่อเดือนสำหรับเครื่องที่มีสเปกคงที่ คุณจะทราบยอดค่าใช้จ่ายก่อนเริ่มเดือนนั้นๆ โดยมีพื้นที่ดิสก์และโควตาการรับส่งข้อมูลรวมอยู่ในราคาแล้ว ความสามารถในการคาดการณ์ค่าใช้จ่ายนี้เป็นเหตุผลหลักที่ผู้คนเลือกใช้ VPS แทน cloud instance สำหรับภาระงานขนาดเล็ก
Cloud VM จะคิดค่าบริการตามการใช้งานจริง โดย instance จะคิดค่าบริการเป็นรายชั่วโมงหรือรายวินาที ส่วนดิสก์, snapshot, load balancer และ traffic ขาออกจะถูกคิดค่าบริการแยกต่างหาก โดยปกติแล้วตัว VPC จะไม่มีค่าใช้จ่าย แต่ส่วนประกอบที่มีการจัดการ (managed pieces) ที่เชื่อมต่ออยู่จะมีค่าใช้จ่าย เช่น NAT gateway ที่ช่วยให้ instance ในเครือข่ายส่วนตัวเข้าถึงอินเทอร์เน็ตได้ จะถูกคิดค่าบริการเป็นรายชั่วโมงและรายกิกะไบต์ รวมถึง traffic ระหว่าง availability zone ก็มีค่าใช้จ่ายเช่นกัน ณ เดือนกรกฎาคม 2026 ผู้ให้บริการคลาวด์รายใหญ่ยังคงนำ instance ใหม่ทุกรายการเข้าสู่ VPC เริ่มต้นโดยอัตโนมัติ ดังนั้นคุณจึงใช้งาน VPC อยู่ไม่ว่าคุณจะต้องการหรือไม่ก็ตาม
คุณจำเป็นต้องใช้สิ่งใดกันแน่
- เซิร์ฟเวอร์หนึ่งเครื่องสำหรับเว็บไซต์, แอปพลิเคชัน, เกมเซิร์ฟเวอร์ หรือ VPN: ให้ใช้ VPS โดย สิบนาทีแรกบน VPS เครื่องใหม่ มีความสำคัญมากกว่าชื่อเรียกของแพ็กเกจ
- เซิร์ฟเวอร์หลายเครื่องที่ต้องติดต่อสื่อสารกันผ่าน private address: ให้ใช้ VPC หรือฟีเจอร์เครือข่ายส่วนตัวที่ผู้ให้บริการ VPS ของคุณนำเสนอภายใต้ชื่ออื่น
- เวิร์กโหลดที่ต้องทำงานได้แม้ศูนย์ข้อมูลทั้งแห่งจะล่ม: ให้ใช้ระบบคลาวด์ที่มีหลายโซน ซึ่งหมายถึงการใช้ VM ภายใน VPC
- การควบคุม kernel อย่างเต็มรูปแบบ หรือการรัน hypervisor ของคุณเอง: ให้ใช้ VPS ที่อิงตาม KVM หรือ dedicated server และตรวจสอบ ประเภทของดิสก์ที่อยู่เบื้องหลังแพ็กเกจ ในขณะที่คุณกำลังเปรียบเทียบ
โปรเจกต์ที่ใช้เซิร์ฟเวอร์เพียงเครื่องเดียวส่วนใหญ่ไม่จำเป็นต้องใช้ VPC ฟีเจอร์เครือข่ายส่วนตัวที่มาพร้อมกับ VPS สามารถรองรับงานเดียวกันนี้ได้สำหรับเครื่องจำนวนไม่กี่เครื่อง
FAQ
VPS เหมือนกับ VM หรือไม่?
VPS คือ VM ที่มีคนขายให้คุณ VPS ทุกตัวที่สร้างบน KVM, Xen หรือ VMware ถือเป็น virtual machine แต่ไม่ใช่ virtual machine ทุกตัวจะเป็น VPS เพราะ VM ที่รันบนแล็ปท็อปของคุณผ่าน VirtualBox ไม่ใช่ผลิตภัณฑ์ที่ใครขาย แผนราคาถูกบางรายการที่ระบุว่าเป็น VPS แท้จริงแล้วเป็น container ไม่ใช่ full VM ดังนั้นควรยืนยันกับ systemd-detect-virt ก่อนหากคุณจำเป็นต้องเข้าถึง kernel
ฉันสามารถนำ VPS ไปใส่ไว้ใน VPC ได้หรือไม่?
โดยปกติแล้วไม่ได้ เพราะ VPC เป็นโครงสร้างของผู้ให้บริการ cloud รายหนึ่งและรองรับเฉพาะทรัพยากรที่สร้างในบัญชีเดียวกันเท่านั้น VPS จากผู้ให้บริการอิสระจะอยู่บนเครือข่ายของผู้ให้บริการรายนั้น หากคุณต้องการการเชื่อมต่อแบบส่วนตัวระหว่างทั้งสอง ให้สร้าง VPN tunnel เชื่อมต่อระหว่างกันแทน จากนั้น VPS จะสามารถเข้าถึง private subnet ผ่านทาง tunnel นั้นได้
ทำไมค่าใช้จ่าย cloud ของฉันถึงสูงกว่า VPS ที่มีสเปกเท่ากัน?
ราคา instance เป็นเพียงส่วนหนึ่งเท่านั้น พื้นที่จัดเก็บข้อมูล, snapshot, traffic ขาออก, load balancer และ NAT gateway เป็นรายการค่าใช้จ่ายแยกต่างหากในระบบ cloud แบบคิดเงินตามการใช้งานจริง และเฉพาะค่า NAT gateway เพียงอย่างเดียวอาจมีราคาสูงกว่า VPS ขนาดเล็กต่อเดือน VPS ที่มีราคาคงที่รวมค่าดิสก์และโควตาการรับส่งข้อมูลไว้ในตัวเลขเดียวแล้ว ซึ่งเป็นเหตุผลว่าทำไมภาระงานเดียวกันถึงมักจะมีราคาถูกกว่าเมื่อรันบน VPS
ฉันจะตรวจสอบได้อย่างไรว่าเซิร์ฟเวอร์ของฉันเข้าถึง kernel ได้จริง?
รันคำสั่ง systemd-detect-virt แล้วอ่านผลลัพธ์ที่ได้ หากแสดง kvm, xen หรือ vmware หมายความว่าคุณมี kernel ของตัวเองและคำสั่ง modprobe จะทำงานได้ หากแสดง lxc, lxc-libvirt หรือ openvz หมายความว่าคุณใช้ kernel ร่วมกับ host และคำสั่งที่โหลดโมดูลหรือเขียนลงใน /proc/sys จะล้มเหลวพร้อมข้อความ Operation not supported อีกวิธีหนึ่งในการยืนยันคือการใช้ uname -r ซึ่งในแผนแบบ container มักจะรายงานเวอร์ชัน kernel ที่ distribution ของคุณไม่เคยใช้งานจริง