SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor

เปรียบเทียบทางเลือก DigitalOcean สำหรับนักพัฒนา ปี 2026

เปรียบเทียบผู้ให้บริการ VPS ทางเลือกแทน DigitalOcean โดยเน้นราคาต่อ GB ของ RAM ปริมาณ Transfer และค่าใช้จ่าย NVMe พร้อมกลยุทธ์การย้ายระบบโดยไม่ให้เกิด Downtime สำหรับนักพัฒนา

ทางเลือกอื่นของ DigitalOcean เปลี่ยนอะไรจริงบ้าง

ทางเลือกอื่นของ DigitalOcean ส่วนใหญ่เปลี่ยนค่าใช้จ่าย ไม่ใช่ตัวเครื่อง คุณจะได้ virtual machine ที่ใช้ Linux, public IP, disk แบบ virtio และสิทธิ์ root ไม่ว่าจะเลือกผู้ให้บริการรายใด kernel ของคุณไม่สนใจว่าโลโก้ใดอยู่บน control panel ความแตกต่างที่ใช้ตัดสินใจเลือกคือราคา RAM ต่อ GB, ปริมาณ transfer ที่รวมมาให้และค่าใช้จ่ายต่อ byte เมื่อใช้เกิน, องค์ประกอบจริงของ disk และระดับของ stack ที่อยู่เหนือ operating system ซึ่งผู้ให้บริการรายอื่นจะเป็นผู้ดูแลให้

คู่มือนี้เปรียบเทียบโดยใช้ปัจจัยเหล่านี้ เพราะ developer สามารถตรวจสอบได้ทุกข้อจาก terminal หรือ price list ที่เผยแพร่ไว้ นอกจากนี้ยังระบุกรณีที่ DigitalOcean เป็นตัวเลือกที่เหมาะสม เพราะการเปรียบเทียบที่ไม่ยอมรับข้อดีของตัวเลือกใดเลยย่อมเป็นโฆษณา

ราคาทั้งหมดด้านล่างเป็น published list price ซึ่งตรวจสอบเมื่อวันที่ 5 August 2026 ตัวเลขของ DigitalOcean ตรวจสอบซ้ำเมื่อวันที่ 21 October 2026 และยังไม่เปลี่ยนแปลง ราคาอาจเปลี่ยนได้ และมีผู้ให้บริการมากกว่า 1 รายในบทความนี้ที่ปรับราคาในช่วงปี 2026 โครงสร้างราคาเปลี่ยนช้ากว่ามาก ดังนั้นให้อ่านอัตราส่วนและรูปแบบการเรียกเก็บเงินก่อน จากนั้นตรวจสอบราคาปัจจุบันบนหน้าของผู้ให้บริการโดยตรงก่อนตัดสินใจสมัครใช้งาน

ราคาต่อ GB ของ RAM คือค่าที่ควรนำมาเปรียบเทียบ

แผนภูมิMonthly list price per GB of RAM, small shared-CPU plans, checked 5 August 2026
ข้อมูลเบื้องหลังแผนภูมินี้
[
  {
    "provider": "DigitalOcean 1 GB",
    "ram_gb": 1,
    "monthly_usd": "6.00",
    "usd_per_gb_ram": "6.00"
  },
  {
    "provider": "DigitalOcean 4 GB",
    "ram_gb": 4,
    "monthly_usd": "24.00",
    "usd_per_gb_ram": "6.00"
  },
  {
    "provider": "Akamai Nanode 1 GB",
    "ram_gb": 1,
    "monthly_usd": "5.00",
    "usd_per_gb_ram": "5.00"
  },
  {
    "provider": "Vultr NVMe 1 GB",
    "ram_gb": 1,
    "monthly_usd": "6.00",
    "usd_per_gb_ram": "6.00"
  },
  {
    "provider": "Hetzner CX23 4 GB (unavailable Oct 2026)",
    "ram_gb": 4,
    "monthly_usd": "6.49",
    "usd_per_gb_ram": "1.62"
  }
]

ภายในผู้ให้บริการรายเดียวกัน ราคาต่อ GB ของ RAM แทบไม่เปลี่ยนแปลง DigitalOcean คิดราคา $6.00 ต่อ GB สำหรับแผน 1 GB และคิดราคาเท่ากันที่ $6.00 ต่อ GB สำหรับแผน 4 GB ซึ่งมีราคา $24.00 ต่อเดือน การเลือกแผนที่ใหญ่ขึ้นจากผู้ให้บริการรายเดิมไม่ได้ทำให้ได้ส่วนลด ดังนั้นขนาดของแผนจึงไม่ใช่ปัจจัยในการตัดสินใจ ผู้ให้บริการต่างหากที่เป็นปัจจัย

Akamai ซึ่งปัจจุบันจำหน่ายบริการเดิมของ Linode ตั้งราคาแผน shared ขนาด 2 GB และ 4 GB ไว้ที่ $12 และ $24 ตามลำดับ ซึ่งเท่ากับ DigitalOcean ทุกดอลลาร์ ส่วนแผนเริ่มต้นมีราคาต่ำกว่าที่ $5.00 การที่บริษัท 2 แห่งตั้งราคาเท่ากันพอดีเป็นสัญญาณที่ควรพิจารณา ระดับราคานี้กำหนดโดยอ้างอิงคู่แข่ง ไม่ใช่ต้นทุนฮาร์ดแวร์ และจะยังคงเคลื่อนไหวตามคู่แข่งรายนั้น

ส่วนต่างจะเห็นได้ชัดเมื่อพิจารณาผู้ให้บริการที่สร้าง datacentre ของตนเองและจำหน่ายราคาเป็น euro เมื่อวันที่ 5 August 2026 Hetzner CX23 ให้ RAM 4 GB ในราคาประมาณ $6.49 ต่อเดือน หรือ $1.62 ต่อ GB ซึ่งใกล้เคียงกับหนึ่งในสี่ของราคาของ DigitalOcean แต่ในวันที่ 21 October 2026 คุณยังสั่งซื้อแผนนี้ไม่ได้ Hetzner ระบุ CX23 และทุกแผนอื่นในกลุ่ม Cost-Optimized ว่าไม่พร้อมให้บริการในขณะนี้ และอธิบายว่ากลุ่มนี้ทำงานบนฮาร์ดแวร์รุ่นเก่า จึงมีจำนวนเซิร์ฟเวอร์จำกัด หน้า status ของ Hetzner มีประกาศเกี่ยวกับความพร้อมใช้งานที่จำกัดของ cloud instance ตั้งแต่วันที่ 26 June 2026 และประกาศดังกล่าวยังคงแสดงอยู่ในวันที่ 21 October 2026 แผนที่สั่งซื้อไม่ได้ไม่มีราคาต่อ GB ที่มีประโยชน์สำหรับการเปรียบเทียบ เมื่อวันที่ 6 October 2026 Hetzner เพิ่ม CPX02 ซึ่งเป็นแผน Regular Performance ที่มี 1 vCPU, RAM 1 GB และ NVMe 20 GB ให้เป็น shared server ขนาดเล็กที่สุด เมื่อวันที่ 21 October 2026 หน้าเว็บของ Hetzner ระบุราคาแผนนี้ไว้ที่ €6.49 ต่อเดือนก่อน VAT ใน location ต่าง ๆ ของ EU ซึ่งเท่ากับ €6.49 ต่อ GB ของ RAM ก่อนแปลงเป็นดอลลาร์ เทียบกับ $6.00 ของ DigitalOcean หน้าเดียวกันระบุว่า CPX02 และทุกแผนอื่นในกลุ่ม Regular Performance ไม่พร้อมให้บริการในขณะนี้ ดังนั้นให้ตรวจสอบก่อนว่าสามารถสั่งซื้อใน location ที่คุณต้องการได้ ก่อนนำมาเปรียบเทียบ ราคาใด ๆ ของ Hetzner ที่แสดงเป็นดอลลาร์คำนวณจากราคาที่ประกาศเป็น euro จึงเปลี่ยนแปลงตามอัตราแลกเปลี่ยน Hetzner ยังปรับขึ้นราคา cloud ระหว่างปี 2026 ดังนั้นบทความเปรียบเทียบเก่าจึงอาจแสดงราคาที่ไม่มีอยู่แล้ว

ราคาต่อ GB ของ RAM ไม่ได้บอกอะไรเกี่ยวกับ CPU ที่คุณได้รับ shared vCPU หมายความว่า hypervisor จัดสรร core ของคุณร่วมกับ tenant รายอื่น และการตรวจสอบที่ถูกต้องต้องทำบนเครื่องที่คุณเช่าจริง:

vmstat 1 10

อ่านคอลัมน์ st คอลัมน์นี้นับเปอร์เซ็นต์ของเวลาที่ vCPU ของคุณพร้อมทำงาน แต่ hypervisor มอบ physical core ให้ tenant รายอื่น ตัวเลขไม่กี่เปอร์เซ็นต์ขณะมี load ถือเป็นเรื่องปกติ หากตัวเลขอยู่ในหลักสิบอย่างต่อเนื่อง แสดงว่า host มีการจัดสรรทรัพยากรเกินขนาด และไม่มีราคาต่อ GB ใดชดเชย core ที่คุณใช้งานไม่ได้ ให้รันการตรวจสอบในช่วงเวลาที่ระบบมีการใช้งานสูงสุด เพราะ steal time เป็นปัญหาจาก neighbour และ neighbour ก็มีตารางเวลาการใช้งานของตนเอง หากต้องการเห็นภาพรวมของค่า hosting ต่อเดือนที่แท้จริงเมื่อรวม storage และ traffic แล้ว ให้อ่าน ค่าใช้จ่ายของ VPS ในแต่ละเดือน

ต้นทุนจริงของ transfer ที่รวมมา

แผนภูมิIncluded outbound transfer and overage price, same plans, checked 5 August 2026
ข้อมูลเบื้องหลังแผนภูมินี้
[
  {
    "provider": "DigitalOcean 1 GB",
    "included_tb": 1,
    "overage_usd_per_tb": "10.00"
  },
  {
    "provider": "Akamai Nanode 1 GB",
    "included_tb": 1,
    "overage_usd_per_tb": "5.00"
  },
  {
    "provider": "Vultr NVMe 1 GB",
    "included_tb": 2,
    "overage_usd_per_tb": "10.00"
  },
  {
    "provider": "Hetzner CX23 4 GB (unavailable Oct 2026)",
    "included_tb": 20,
    "overage_usd_per_tb": "1.20"
  }
]

DigitalOcean รวม outbound transfer ประมาณ 1 TB (1,000 GiB) ในแผน 1 GiB ราคา $6.00 และคิดค่าการใช้งานส่วนเกินที่ $0.01 ต่อ GiB หรือประมาณ $10.00 ต่อ TB ที่เพิ่มขึ้น แผนเริ่มต้นจริงของบริการคือ RAM 512 MiB ราคา $4.00 ต่อเดือน ซึ่งรวมมาเพียง 500 GiB และปริมาณที่รวมจะเพิ่มตามขนาดแผนจนถึง 6,000 GiB ในแผน Basic ขนาดใหญ่ ดังนั้นให้อ่านตัวเลขของแผนที่คุณเลือกจริง Akamai รวมปริมาณ TB เท่ากันใน Nanode และคิดค่าการใช้งานส่วนเกินประมาณครึ่งหนึ่ง หรือประมาณ $5.00 ต่อ TB Vultr รวม 2 TB และคิดค่าการใช้งานส่วนเกินในอัตราใกล้เคียงกัน เมื่อวันที่ 5 August 2026 Hetzner CX23 รวม 20 TB และคิดค่าบริการประมาณ $1.20 ต่อ TB หลังจากนั้น ซึ่งแตกต่างจากรายอื่นประมาณหนึ่งลำดับขนาด เมื่อวันที่ 21 October 2026 หน้าเว็บของ Hetzner ยังคงระบุว่ารวม traffic 20 TB สำหรับ location ใน EU รวมถึง CPX02 ด้วย แต่รวมในปริมาณน้อยกว่ามากสำหรับ location ใน Singapore และ US โดย CPX02 ได้รับเพียง 0.5 TB ใน Singapore

รายละเอียดเชิงโครงสร้าง 3 ข้อมีความสำคัญมากกว่าตัวเลขที่แสดงเด่นบนหน้าแผน Inbound traffic ไม่มีค่าใช้จ่ายสำหรับทั้ง 4 ราย ดังนั้นจะนับเฉพาะ traffic ที่ส่งออกเท่านั้น DigitalOcean, Akamai และ Vultr รวม quota เข้าด้วยกันสำหรับ server ทุกเครื่องใน account ดังนั้นเครื่องหนึ่งที่มี traffic สูงอาจใช้ quota ของอีกเครื่อง และ server ขนาดเล็กหลายเครื่องจะแชร์ pool ขนาดใหญ่ร่วมกัน นอกจากนี้ traffic ระหว่าง server ผ่าน private network หรือ VPC มักไม่ถูกนับเลย นี่จึงเป็นเหตุผลว่าการวาง database ไว้บน private interface เป็นทั้งการตัดสินใจด้านค่าใช้จ่ายและด้านความปลอดภัย

เรื่องเหล่านี้ไม่สำคัญหากคุณยังห่างจากขีดจำกัดมาก Blog, API ที่ส่ง JSON response หรือ SaaS ขนาดเล็กจะไม่ใช้ถึง 1 TB ภายใน 1 เดือน แต่ video, image gallery, game server, package mirror และเป้าหมายของ off-site backup จะใช้ถึงได้ ควรวัดก่อนตั้งสมมติฐาน:

sudo apt update && sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -m

vnstat -m จะแสดง transfer รายเดือน โดยแยกเป็น received และ transmitted ระบบจะคิดค่าบริการเฉพาะคอลัมน์ transmitted เท่านั้น database จะเริ่มต้นโดยไม่มีข้อมูล ดังนั้นค่าที่ใช้ประโยชน์ได้ครั้งแรกจะปรากฏ 1 วันหลังติดตั้ง และข้อมูลของเดือนแรกที่ครบถ้วนจะปรากฏในอีก 1 เดือนถัดมา ระหว่างนั้น bandwidth graph ของ provider เองจะเป็นข้อมูลบันทึกเพียงรายการเดียวที่คุณมี

ควรถามอีก 1 ข้อที่ไม่มี price list ใดตอบได้: เมื่อใช้เกิน quota แล้ว provider จะคิดค่าบริการหรือ throttle port การคิดค่าบริการทำให้เกิดค่าใช้จ่าย ส่วนการ throttle จะกระทบผู้ใช้ในช่วงเวลาที่คุณมีผู้ใช้มากที่สุด คุณต้องทราบว่า traffic spike จะทำให้เกิดผลลัพธ์แบบใด

NVMe หรือ SATA และวิธีการตรวจสอบสิ่งที่คุณได้รับจริง

แผงควบคุมระบุว่าเป็น NVMe นั่นเป็นเพียงการกล่าวอ้างเกี่ยวกับดิสก์ในโฮสต์ ซึ่งเครื่องเสมือนของคุณอาจไม่ได้อยู่บนดิสก์เหล่านั้น พื้นที่จัดเก็บข้อมูลแบบ Local จะวางดิสก์เสมือนของคุณไว้บนไดรฟ์ภายในเครื่องเดียวกัน ส่วนพื้นที่จัดเก็บข้อมูลแบบ Network จะวางไว้บนคลัสเตอร์จัดเก็บข้อมูลแยกต่างหากที่เข้าถึงผ่านเครือข่ายของศูนย์ข้อมูล ซึ่งเป็นสิ่งที่ทำให้การปรับขนาดทันที การย้ายข้อมูลแบบ live migration และการทำ snapshot-in-place เป็นไปได้

ภายใน Guest ทั้งสองแบบจะดูเหมือนกันทุกประการ:

lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotational

ROTA และ rotational จะรายงานค่า 0 สำหรับทุกสิ่งที่โฮสต์ประกาศว่าเป็น non-rotational ดังนั้น network volume ที่มีพื้นฐานมาจาก NVMe จึงรายงานค่าเดียวกับ NVMe แบบ local ค่านี้บอกเพียงว่าดิสก์ไม่ใช่จานหมุน แต่ไม่สามารถบอกคุณได้ว่าดิสก์นั้นอยู่ที่ไหน การยืนยันดิสก์ NVMe บน Linux จะอธิบายถึงชื่ออุปกรณ์และความหมายของแต่ละชื่อ

การทดสอบที่แยกความแตกต่างระหว่างสองสิ่งนี้คือค่า latency ที่ queue depth 1 เนื่องจากการอ่านขนาดเล็กเพียงรายการเดียวไม่มีสิ่งใดให้ซ่อนอยู่ NVMe แบบ local จะตอบสนองจากแชสซีเดียวกัน ส่วน network volume จะเพิ่มการเดินทางไป-กลับผ่านเครือข่ายของศูนย์ข้อมูลในการอ่านทุกครั้ง ดังนั้นค่า latency ต่ำสุดจึงสูงกว่า แม้ว่า throughput ที่ queue depth ลึกๆ จะดูใกล้เคียงกันก็ตาม

sudo apt update && sudo apt install -y fio
fio --name=lat --filename=/var/tmp/fiotest --size=1G --rw=randread --bs=4k \
  --ioengine=libaio --direct=1 --iodepth=1 --runtime=30 --time_based --group_reporting
fio --name=iops --filename=/var/tmp/fiotest --size=1G --rw=randread --bs=4k \
  --ioengine=libaio --direct=1 --iodepth=32 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fiotest

การรันครั้งแรกจะแสดงบล็อก clat ซึ่งเป็นค่า completion latency ให้ดูที่บรรทัด 99th percentile แทนค่าเฉลี่ย เพราะค่าเฉลี่ยจะซ่อนอาการสะดุดที่ผู้ใช้งานรู้สึกได้ การรันครั้งที่สองจะแสดง IOPS= ในบรรทัดสรุป ให้รันทั้งสองคำสั่งบนผู้ให้บริการที่คุณใช้งานอยู่และบน instance ทดลองของผู้ให้บริการที่คุณกำลังพิจารณา ในวันเดียวกัน แล้วเปรียบเทียบตัวเลขทั้งสองชุดของคุณ ตัวเลขที่เผยแพร่จากผู้ให้บริการรายใดก็ตามถูกวัดบนเครื่องที่คุณไม่สามารถตรวจสอบได้ ให้รันการทดสอบสามครั้งในช่วงเวลาที่ต่างกันด้วย เพราะโฮสต์ที่ว่างงานและโฮสต์ที่งานยุ่งจะให้ผลลัพธ์ที่ต่างกันแม้จะเป็นแผนบริการเดียวกัน การทำ Benchmarking VPS อย่างถูกต้อง ครอบคลุมถึงวิธีการ และ ความหมายที่แท้จริงของ SSD VPS ครอบคลุมถึงคำศัพท์ทางการตลาดที่อยู่เบื้องหลัง

ภูมิภาค: วัดค่าความหน่วง อย่าดูแค่แผนที่

รายการภูมิภาคเป็นเพียงการตลาดจนกว่าคุณจะวัดค่าจริง สิ่งที่ผู้ใช้สัมผัสคือระยะเวลาไป-กลับ (round trip) จากเครือข่ายของพวกเขาไปยังเซิร์ฟเวอร์ของคุณ ซึ่งขึ้นอยู่กับเส้นทางที่แพ็กเก็ตวิ่งผ่าน ไม่ใช่ระยะทางบนแผนที่ เซิร์ฟเวอร์ที่อยู่ห่างออกไป 300 กม. แต่อยู่หลังลิงก์เชื่อมต่อที่มีความหนาแน่นสูง ย่อมทำงานได้แย่กว่าเซิร์ฟเวอร์ที่อยู่ห่างออกไป 1,500 กม. บนเส้นทางที่โล่งกว่า

ping -c 20 203.0.113.10
mtr -rwc 50 203.0.113.10
curl -o /dev/null -s -w 'dns %{time_namelookup} connect %{time_connect} tls %{time_appconnect} total %{time_total}\n' https://example.com

mtr จะแสดงทุกจุดเชื่อมต่อ (hop) พร้อมค่าการสูญเสียข้อมูลและความหน่วงของแต่ละจุด ดังนั้นการกระโดดของเวลา 60 ms ระหว่างสองจุดเชื่อมต่อจะระบุได้ว่าลิงก์ใดที่เป็นปัญหา แทนที่จะโทษปลายทาง ให้รันคำสั่งนี้จากเครื่องที่อยู่ในเครือข่ายเดียวกับผู้ใช้ของคุณ เส้นทางระหว่างศูนย์ข้อมูลต่อศูนย์ข้อมูลเป็นเส้นทางที่ดีที่สุดบนอินเทอร์เน็ต และเป็นเส้นทางที่ทำให้ผู้ให้บริการทุกรายดูดีเท่าเทียมกัน

ประเด็นเชิงโครงสร้างประเด็นหนึ่งที่ยังคงสำคัญไม่ว่าราคาจะเปลี่ยนไปอย่างไร คือการที่ผู้ให้บริการมีภูมิภาคเดียวในทวีปของคุณ หมายความว่าแผนการกู้คืนระบบจากภัยพิบัติ (disaster recovery plan) ของคุณคือการย้ายข้ามทวีป ซึ่งจะมาพร้อมกับค่าความหน่วงที่เพิ่มขึ้นตามมา ให้คุณนับจำนวนภูมิภาคที่คุณสามารถย้ายระบบไปทำงานแทนได้จริง ไม่ใช่จำนวนภูมิภาคที่ระบุไว้บนหน้าเว็บไซต์

Snapshots และ backups คือค่าใช้จ่ายแยกต่างหาก

ส่วนเสริมด้านพื้นที่จัดเก็บข้อมูลคือจุดที่ทำให้แผนราคาประหยัดกลายเป็นราคาแพง DigitalOcean คิดค่าบริการ snapshots ที่ $0.06 ต่อ GiB ต่อเดือน และคิดราคา automatic backups เป็นสัดส่วนของเซิร์ฟเวอร์แทน โดยอยู่ที่ 20% ของราคาแผนสำหรับรายสัปดาห์ และ 30% สำหรับรายวัน หรือเลือกแบบคิดตามการใช้งานจริงต่อ GiB ทั้งสองรูปแบบมีเหตุผลรองรับในตัวเองแต่มีข้อเสียต่างกัน รูปแบบคิดเป็นเปอร์เซ็นต์จะแปรผันตามขนาดของเซิร์ฟเวอร์ ดังนั้นเซิร์ฟเวอร์ขนาดใหญ่ที่เก็บข้อมูลเพียงเล็กน้อยจะเสียค่าใช้จ่ายเกินความจำเป็น ส่วนรูปแบบคิดตาม GiB จะแปรผันตามปริมาณข้อมูลของคุณ ดังนั้นเซิร์ฟเวอร์ขนาดเล็กที่เชื่อมต่อกับ volume ขนาดใหญ่จะเสียค่าใช้จ่ายเกินความจำเป็น

จงสอบถามว่าการกู้คืนข้อมูลมีค่าใช้จ่ายเท่าใดและใช้เวลานานแค่ไหน เพราะราคาในการเก็บรักษา backup เป็นเพียงครึ่งหนึ่งของคำถามที่น่าเบื่อเท่านั้น และจงตรวจสอบว่าการลบเซิร์ฟเวอร์จะทำให้ snapshots ถูกลบไปด้วยหรือไม่

จากนั้นให้เก็บสำเนาข้อมูลที่ผู้ให้บริการไม่สามารถควบคุมได้ไว้ด้วย เนื่องจาก snapshots ของผู้ให้บริการจะอยู่ในบัญชีของผู้ให้บริการเอง ดังนั้นหากบัญชีถูกระงับ, การชำระเงินล้มเหลว หรือเข้าสู่ระบบไม่ได้ ข้อมูลทั้งเซิร์ฟเวอร์และ backups จะสูญหายไปพร้อมกัน การทำ restic backups ไปยังพื้นที่จัดเก็บที่คุณเป็นเจ้าของ มีค่าใช้จ่ายเพียงไม่กี่ดอลลาร์สำหรับ object storage ซึ่งสามารถกู้คืนไปยังผู้ให้บริการรายใดก็ได้ และเป็นสิ่งที่ทำให้การย้ายระบบสามารถย้อนกลับได้แทนที่จะเป็นการตัดสินใจที่แก้ไขไม่ได้

คุณต้องการจัดการ stack มากน้อยเพียงใด

ผู้ให้บริการแต่ละรายมีจุดยืนที่แตกต่างกัน บนสุดขั้วหนึ่ง คุณเช่าเครื่องและจัดการทุกอย่างด้วยตนเอง บนอีกสุดขั้วหนึ่ง คุณเพียงแค่ push git branch โดยไม่ต้องสนใจเซิร์ฟเวอร์เลย การเปรียบเทียบราคาต่อ GB ของ RAM จะใช้ได้เฉพาะกับฝั่งแรกเท่านั้น เพราะในฝั่งที่สอง คุณกำลังซื้อแรงงานแทนที่จะเป็นหน่วยความจำ และแรงงานไม่มีราคาต่อ GB

จงซื่อสัตย์กับตัวเองว่าคุณอยู่ฝั่งไหนก่อนที่จะเริ่มเปรียบเทียบสิ่งใดก็ตาม Managed database ราคา $15.15 ต่อเดือนอาจดูแพงเมื่อเทียบกับเซิร์ฟเวอร์ราคา $6 จนกว่าคุณจะคำนวณมูลค่าของชั่วโมงการทำงานที่อยู่เบื้องหลัง เช่น การทำ replication, failover, point in time restore, การอัปเกรด minor version และการแจ้งเตือนที่ปลุกใครบางคนขึ้นมาตอน 03:00 หากงานเหล่านั้นเป็นหน้าที่ของคุณ ก็จงจัดการเองและเก็บส่วนต่างนั้นไว้ แต่หากงานของคุณคือการพัฒนาแอปพลิเคชัน การซื้อบริการเหล่านี้ถือว่าคุ้มค่า ความแตกต่างระหว่างบริการแบบ managed และ unmanaged จะเป็นตัวกำหนดว่าคุณควรพิจารณาตารางราคาในคอลัมน์ใด หากคำตอบที่แท้จริงคือคุณต้องการครอบครองทั้งเครื่องและดิสก์ด้วยตนเอง นั่นเป็นคำถามเรื่อง VPS เทียบกับ dedicated server ไม่ใช่คำถามเรื่องผู้ให้บริการ คำถามในลักษณะเดียวกันนี้ยังปรากฏอยู่ในค่าใช้จ่ายรายเดือนส่วนอื่นของนักพัฒนา เช่น การเปรียบเทียบแผนบริการของ Claude และ ChatGPT ซึ่งขึ้นอยู่กับว่าคุณต้องการส่งต่องานให้ผู้อื่นมากน้อยเพียงใด มากกว่าที่จะดูเพียงราคาที่ประกาศไว้หน้าเว็บ

กรณีที่ DigitalOcean เป็นคำตอบที่เหมาะสม

DigitalOcean มีความได้เปรียบเมื่อคุณต้องการซื้อแพลตฟอร์มมากกว่าแค่เครื่องเสมือน (virtual machine)

  • Managed databases: บริการ Managed PostgreSQL และ MySQL เริ่มต้นที่ $15.15 ต่อเดือน สำหรับ RAM ขนาด 1 GiB และพื้นที่จัดเก็บ 10 GiB โดยพื้นที่จัดเก็บเพิ่มเติมจะคิดค่าบริการเป็นราย GiB และ standby node จะคิดราคาต่อ node การสร้างความน่าเชื่อถือระดับเดียวกันด้วยตนเองหมายถึงการต้องใช้ Patroni หรือ repmgr, ระบบ consensus store, connection proxy และการซ้อมแผน failover ที่คุณต้องทำจริง ทีมงานขนาดสองคนไม่สามารถดูแลระบบเหล่านี้ไปพร้อมกับพัฒนาฟีเจอร์ใหม่ได้
  • App Platform: เพียง push branch ระบบจะทำการ build, ออก certificate และรัน service ให้โดยที่คุณไม่ต้องคอย patch ระบบปฏิบัติการ การทำสิ่งนี้ด้วยตัวเองบน VPS ราคาถูกคือการที่คุณต้องมานั่งทำเองในวันเสาร์
  • Object storage และ load balancers ที่รองรับโดย Terraform provider ที่สมบูรณ์: กลุ่มทรัพยากรที่คุณสามารถทำลายและสร้างใหม่จากโค้ดได้นั้นมีค่ามากกว่าราคาต่อหน่วยที่ถูกกว่า
  • องค์กรที่อยู่เบื้องหลังผลิตภัณฑ์: มีระดับการสนับสนุนที่เผยแพร่ชัดเจน, หน้าสถานะระบบที่มีประวัติย้อนหลัง และองค์กรที่สามารถตอบแบบสอบถามด้านความปลอดภัยของลูกค้าได้ หากคุณทำธุรกิจขายต่อบริการโฮสติ้ง สิ่งเหล่านี้มีค่ามากกว่าส่วนต่างราคาเพียงไม่กี่ดอลลาร์ต่อ GB

จุดที่ DigitalOcean มีราคาสูงคือเมื่อใช้งานเครื่องเสมือนทั่วไปในปริมาณมากที่มีการรับส่งข้อมูลขาออก (outbound traffic) จริง ซึ่งเป็นกรณีที่ผู้ให้บริการรายอื่นเข้ามาแก้ไขได้ และเป็นสิ่งที่นักพัฒนาที่ทำ self-hosting ส่วนใหญ่เลือกซื้อ

การย้ายไปยังผู้ให้บริการรายใหม่โดยไม่เกิด Downtime

Downtime ระหว่างการย้ายระบบเกิดจากสาเหตุเดียว คือการที่ traffic ยังคงวิ่งไปยัง IP เก่าหลังจากที่ข้อมูลถูกย้ายไปยังเซิร์ฟเวอร์ใหม่แล้ว ขั้นตอนทั้งหมดด้านล่างนี้มีไว้เพื่อให้ช่วงเวลาดังกล่าวสั้นลงและคาดการณ์ได้

เริ่มต้นที่ DNS ล่วงหน้าอย่างน้อย 48 ชั่วโมงก่อนการย้าย ระบบ Resolver จะแคช A record ของคุณไว้ตามระยะเวลา TTL (time to live) ดังนั้น record ที่มี TTL 24 ชั่วโมงจะยังคงส่งผู้ใช้งานไปยังเซิร์ฟเวอร์เก่าต่อไปอีกสูงสุดหนึ่งวันหลังจากที่คุณเปลี่ยนค่า การลด TTL ในขณะที่ทำการย้ายนั้นไม่ได้ผล เพราะ Resolver ถือค่าเก่าพร้อมวันหมดอายุเดิมไว้แล้ว ให้ลดค่า TTL ลงก่อน รอให้ค่าเดิมหมดอายุ แล้วจึงค่อยทำการย้าย

dig +noall +answer example.com A
dig +noall +authority example.com SOA

คำสั่งแรกจะแสดงค่า TTL ปัจจุบันในคอลัมน์ที่สองของผลลัพธ์ ให้ตั้งค่าเป็น 300 ที่ผู้ให้บริการ DNS ของคุณ จากนั้นรอเป็นเวลาที่นานกว่าค่าที่คุณเพิ่งเปลี่ยนไป

จากนั้นให้ดำเนินการตามลำดับนี้

  1. จัดเตรียมเซิร์ฟเวอร์ใหม่และทำ hardening ก่อนที่จะนำสิ่งใดไปวางบนนั้น สิบนาทีแรกบน VPS ใหม่ ครอบคลุมส่วนที่ผู้คนมักข้ามไปเมื่อรีบร้อน
  2. ติดตั้ง application stack และรันการคัดลอกข้อมูลรอบแรกด้วย rsync ในขณะที่เซิร์ฟเวอร์เก่ายังคงให้บริการตามปกติ
  3. ออก TLS certificate บนโฮสต์ใหม่ทันที โดยใช้ DNS-01 challenge เนื่องจาก HTTP-01 challenge จะตรวจสอบกับ IP ที่ DNS ชี้ไปในปัจจุบัน ซึ่งก็คือเซิร์ฟเวอร์เก่านั่นเอง DNS-01 challenge จะช่วยขจัดปัญหาเรื่องลำดับขั้นตอนนี้ไปได้ทั้งหมด
  4. ทดสอบโฮสต์ใหม่ก่อนการเปลี่ยนแปลงใดๆ ต่อสาธารณะโดยการ override DNS บนแล็ปท็อปของคุณเอง เพิ่ม 203.0.113.20 example.com ไปยัง /etc/hosts แล้วเข้าใช้งานเว็บไซต์จริง จากนั้นจึงลบรายการดังกล่าวออก การทดสอบนี้จะไม่ส่งผลกระทบต่อผู้ใช้งาน
  5. จัดการกับคำถามเรื่องขนาดของฐานข้อมูล หากมีขนาดไม่กี่ GB การ dump และ restore จะทำเสร็จได้ภายในช่วงที่หยุดการเขียนข้อมูล หากขนาดใหญ่กว่านั้น ให้ตั้งค่า replication จากฐานข้อมูลเก่าไปยังฐานข้อมูลใหม่ล่วงหน้าหลายวันและปล่อยให้ข้อมูลซิงค์กัน เพื่อให้ช่วงเวลาที่ต้องหยุดเขียนข้อมูลครอบคลุมเฉพาะการเลื่อนสถานะ (promotion) เท่านั้น
  6. หยุดการเขียนข้อมูล นำแอปพลิเคชันเข้าสู่โหมดบำรุงรักษาหรือโหมดอ่านอย่างเดียว นี่เป็นส่วนเดียวที่ผู้ใช้งานจะเห็น และควรใช้เวลาเพียงไม่กี่นาที
  7. รันการซิงค์ส่วนต่างครั้งสุดท้าย: รัน rsync ตัวเดิมอีกครั้ง ตามด้วยการซิงค์ฐานข้อมูลครั้งสุดท้าย
  8. เปลี่ยน A และ AAAA records ไปยัง IP ใหม่ ด้วย TTL 300 วินาที Resolver ส่วนใหญ่จะปรับตามภายในเวลาประมาณห้านาที
  9. ปล่อยให้เซิร์ฟเวอร์เก่าทำงานและเข้าถึงได้ต่อไปอีกอย่างน้อยหนึ่งวัน เนื่องจาก Resolver บางตัวเพิกเฉยต่อค่า TTL ที่สั้น หากแอปพลิเคชันเก่ายังคงเขียนข้อมูลได้ ผู้ใช้งานที่มาถึงช้าจะเขียนข้อมูลลงในฐานข้อมูลที่ผิด ดังนั้นให้ชี้โฮสต์เก่าไปยังฐานข้อมูลใหม่หรือแสดงหน้าบำรุงรักษาจากโฮสต์นั้นแทน
  10. เฝ้าระวังอัตราข้อผิดพลาดของเซิร์ฟเวอร์ใหม่เป็นเวลาหนึ่งวัน ปรับค่า TTL กลับเป็นค่าปกติ และทำลายเซิร์ฟเวอร์เก่าทิ้งหลังจากผ่านไปหนึ่งสัปดาห์ แทนที่จะทำในเย็นวันเดียวกัน

การคัดลอกข้อมูลประกอบด้วยสองคำสั่ง โดยแต่ละคำสั่งรันสองรอบ สำหรับการซิงค์ไฟล์:

rsync -aHAX --numeric-ids --delete -e ssh /srv/ deploy@203.0.113.20:/srv/

-a จะคงความเป็นเจ้าของ สิทธิ์ และ timestamp ไว้, -H จะคง hard links ไว้, -AX จะคง ACLs และ extended attributes ไว้ และ --numeric-ids จะป้องกันไม่ให้ rsync ทำการ remapping user ID ผ่านชื่อที่แตกต่างกันระหว่างสองเครื่อง ให้รันคำสั่งนี้ล่วงหน้าหลายวัน แล้วรันอีกครั้งระหว่างช่วงที่หยุดการเขียนข้อมูล ซึ่งจะโอนย้ายเฉพาะส่วนที่มีการเปลี่ยนแปลงเท่านั้น

สำหรับ PostgreSQL ที่มีขนาดเล็กพอที่จะ dump ได้:

pg_dump --format=custom --no-owner --dbname=appdb --file=appdb.dump
scp appdb.dump deploy@203.0.113.20:/var/tmp/
pg_restore --clean --if-exists --no-owner --dbname=appdb /var/tmp/appdb.dump

สำหรับ MySQL หรือ MariaDB:

mysqldump --single-transaction --routines --triggers --databases appdb > appdb.sql

--single-transaction จะทำการ dump ภายใน transaction เดียวบนตาราง InnoDB ดังนั้นผลลัพธ์ที่ได้จะมีความสอดคล้องกันและแอปพลิเคชันยังคงเขียนข้อมูลได้ในขณะที่รันคำสั่ง หากไม่มี flag นี้ mysqldump จะล็อกตาราง ซึ่งหมายความว่าช่วงเวลาที่คุณหยุดเขียนข้อมูลจะเริ่มเร็วกว่าที่คุณวางแผนไว้และคุณไม่ได้เป็นผู้กำหนดเวลาเอง

มีสองสิ่งที่อาจเกิดปัญหาภายนอกเซิร์ฟเวอร์ของคุณ: IP address ใหม่ไม่มีชื่อเสียงด้านอีเมล ดังนั้นอีเมลที่ส่งตรงจากเครื่องใหม่จะถูกกรองเป็นสแปม ให้ส่งผ่าน relay ที่มีชื่อเสียงอยู่แล้ว และคู่ค้าใดก็ตามที่ทำ allowlist IP ขาออกของคุณ เช่น payment gateway หรือ firewall ของลูกค้า จะต้องได้รับการอัปเดตก่อนการย้ายระบบ มิฉะนั้นการเรียกใช้งานเหล่านั้นจะเริ่มล้มเหลวทันทีที่ traffic ย้ายไปที่ใหม่

สิ่งที่ควรตรวจสอบก่อนตัดสินใจเลือกซื้อ

  • ตรวจสอบว่าแผนบริการนั้นสามารถสั่งซื้อได้จริงในวันนี้ ณ พื้นที่ให้บริการที่คุณต้องการ แผนที่ระบุว่าไม่พร้อมใช้งานในรายการราคาถือว่าไม่ใช่ตัวเลือก แม้ว่าราคาต่อ GB จะดูน่าสนใจเพียงใดก็ตาม
  • ตรวจสอบว่าราคาเป็นราคาโปรโมชันหรือไม่และราคาต่ออายุอยู่ที่เท่าใด ส่วนลดสำหรับรอบบิลแรกที่เพิ่มขึ้นเป็นสองเท่าเมื่อต่ออายุถือเป็นต้นทุนจริงที่เพียงแค่ถูกเลื่อนเวลาออกไปเท่านั้น
  • ตรวจสอบว่าเป็นการชำระเงินล่วงหน้าหรือไม่ แผนบริการแบบชำระเงินล่วงหน้าระยะยาวหลายปี ซึ่งเป็นรูปแบบที่ SSD Nodes ใช้ จะช่วยให้ได้ราคาต่อ GB ของ RAM ที่ถูกลงมากโดยแลกกับการจ่ายเงินก้อนล่วงหน้า ข้อแลกเปลี่ยนคือคุณไม่สามารถยกเลิกบริการในเดือนถัดไปได้ ดังนั้นควรเลือกระยะเวลาให้สอดคล้องกับความมั่นใจของคุณ
  • ตรวจสอบค่าใช้จ่ายรายเดือนของ snapshot และค่าใช้จ่ายในการกู้คืนข้อมูลทั้งในแง่ของตัวเงินและระยะเวลาที่ใช้
  • ตรวจสอบว่าการใช้งานเกินโควตาจะถูกเรียกเก็บเงินเพิ่มหรือถูกจำกัดความเร็ว
  • ตรวจสอบว่า IPv6 มีการ routing อย่างถูกต้องหรือเป็นเพียงหมายเลข IP เดียวที่เพิ่มเข้ามา
  • ตรวจสอบว่ามี API พร้อม Terraform provider ที่ได้รับการดูแลรักษาหรือไม่ หากคุณต้องการสร้างโครงสร้างพื้นฐานจากโค้ดแทนการตั้งค่าด้วยตนเอง
  • ตรวจสอบช่องทางการติดต่อฝ่ายสนับสนุนและเป้าหมายระยะเวลาการตอบกลับที่ประกาศไว้สำหรับกรณีเซิร์ฟเวอร์ล่ม ไม่ใช่สำหรับคำถามด้านการขาย

ให้เลือกโดยพิจารณาจากปัจจัยที่เป็นต้นทุนหลักในบิลของคุณ หากปัจจัยนั้นคือหน่วยความจำ ราคาต่อ GB ของ RAM จะเป็นตัวตัดสิน หากเป็นปริมาณข้อมูลขาออก (outbound traffic) ปริมาณการรับส่งข้อมูลที่รวมอยู่ในแพ็กเกจจะเป็นตัวตัดสิน หากเป็นเวลาของคุณเอง แพลตฟอร์มที่มีการจัดการ (managed platform) จะเป็นตัวตัดสิน ซึ่งบริการของ DigitalOcean ถือว่าโดดเด่นที่สุดในบรรดาสี่ผู้ให้บริการที่นำมาเปรียบเทียบในที่นี้

FAQ

ฉันควรเลือกผู้ให้บริการ DigitalOcean รายใด หากต้องการ managed database?

Vultr และ Akamai ต่างมี managed database ให้บริการ จึงเป็นตัวเลือกทดแทนที่ใกล้เคียงที่สุด หาก managed database เป็นเหตุผลหลักที่คุณเลือกใช้ DigitalOcean ตั้งแต่แรก ผู้ให้บริการราคาประหยัดในยุโรปโดยทั่วไปไม่มีบริการนี้ คุณจึงต้องดูแล PostgreSQL หรือ MySQL เอง รวมถึงการทำ replication และการทดสอบ failover นี่เป็นงานที่ต้องใช้เวลาและการดูแลจริง ควรนำต้นทุนดังกล่าวไปเปรียบเทียบกับ $15.15 ต่อเดือน ซึ่งเป็นราคาของ instance แบบ managed ขนาด 1 GiB ก่อนสรุปว่า server ที่ถูกกว่าช่วยประหยัดค่าใช้จ่ายได้จริง

ฉันจะย้ายเว็บไซต์ที่กำลังให้บริการไปยังผู้ให้บริการรายใหม่โดยไม่มี downtime ได้อย่างไร?

ลด DNS TTL ให้เหลือ 300 วินาที ล่วงหน้าอย่างน้อย 48 ชั่วโมงก่อนย้าย เนื่องจาก resolver อาจยังให้บริการ IP เดิมต่อไปตามระยะเวลา TTL ก่อนหน้า สร้างและทดสอบ host ใหม่ขณะที่ host เดิมยังคงให้บริการ network traffic อยู่ โดยใช้ /etc/hosts override บนเครื่องของคุณเอง เพื่อไม่ให้ผู้ใช้อื่นเห็นการเปลี่ยนแปลง จากนั้นหยุดการเขียนข้อมูลไว้ไม่กี่นาที รัน rsync delta รอบสุดท้ายและ sync ฐานข้อมูลรอบสุดท้าย เปลี่ยนระเบียน A และ AAAA แล้วเปิด server เดิมทิ้งไว้อีก 1 สัปดาห์ เผื่อ resolver บางตัวไม่ปฏิบัติตาม TTL ที่ลดลง

VPS ที่ราคาถูกกว่าจะมี disk ที่ช้ากว่าหรือไม่?

ไม่เสมอไป สิ่งสำคัญคือ virtual disk อยู่ภายใน host หรืออยู่บน network storage cluster และ panel มักไม่ระบุข้อมูลนี้ lsblk -o NAME,ROTA รายงาน 0 สำหรับทั้งสองแบบ เนื่องจากทั้งคู่เป็นอุปกรณ์แบบ non-rotational ให้ตรวจวัดแทน โดยรัน fio พร้อม --iodepth=1 --bs=4k --direct=1 แล้วอ่านค่า completion latency ที่ percentile ลำดับที่ 99 network volume เพิ่ม network round trip ใน datacentre ให้กับการอ่านแต่ละครั้ง ดังนั้น latency floor จึงสูงกว่า local NVMe แม้ throughput เมื่อมี deep queue อาจใกล้เคียงกัน

อีเมลของฉันจะยังส่งถึงผู้รับจาก server ใหม่หรือไม่?

ในระยะแรกมักจะยังไม่ได้ IP ใหม่ไม่มีประวัติการส่งอีเมล ผู้รับจึงมองว่าอีเมลจาก IP ดังกล่าวน่าสงสัย และอาจจัดไปไว้ใน spam หรือปฏิเสธทันที นอกจากนี้ระเบียน SPF และ DKIM ยังคงชี้ไปยัง host เดิมจนกว่าคุณจะอัปเดต ส่งอีเมลจากแอปพลิเคชันผ่าน relay หรือ email service ที่มี reputation อยู่แล้ว และอัปเดต DNS records สำหรับ mail ก่อน cutover ไม่ใช่หลังจากนั้น