Virtual Machines (เครื่องเสมือน)
มันคืออะไร
ลองนึกภาพการเช่าอพาร์ตเมนต์ทั้งห้องแทนที่จะเช่าห้องพักโรงแรม นั่นคือพื้นที่ว่างเปล่าที่เป็นของคุณโดยสมบูรณ์ คุณจะตกแต่งและใช้งานมันอย่างไรก็ได้ตามใจ virtual machine ( หรือเครื่องเสมือน) ก็คืออพาร์ตเมนต์แบบนั้นในโลกซอฟต์แวร์ นั่นคือคอมพิวเตอร์ทั้งเครื่องที่มีอยู่ในรูปแบบซอฟต์แวร์ ทำงานอยู่บนฮาร์ดแวร์ของผู้ให้บริการ คุณจะได้ระบบปฏิบัติการ (operating system) ที่คุณควบคุมได้เต็มที่ คุณล็อกอินเข้าไป ติดตั้งอะไรก็ได้ที่ต้องการ และรันแอปของคุณได้เหมือนกับที่ทำบนเครื่องจริง มันคือตัวเลือกโฮสติ้งที่ต้องลงมือทำเองมากที่สุด
จุดแข็ง
- ควบคุมได้อย่างเต็มที่ — ระบบปฏิบัติการทั้งระบบ ซอฟต์แวร์อะไรก็ได้ ตั้งค่าอย่างไรก็ได้
- ประสิทธิภาพคาดเดาได้ เครื่องเป็นของคุณตลอดระยะเวลาที่เช่า
- ไม่มีข้อจำกัดด้านเวลาการทำงานหรือ runtime เหมือนกับ หรือ
- รันได้ทุกอย่าง ไม่ว่าจะเป็นฐานข้อมูล ซอฟต์แวร์เก่า deamon ที่กำหนดเอง หรืองานที่ใช้เวลานาน
- เป็นโมเดลที่เข้าใจกันดีและมีเครื่องมือรองรับมานานหลายสิบปี
ข้อแลกเปลี่ยน
- คุณต้องดูแลทุกอย่างเอง ไม่ว่าจะเป็นการอัปเดตระบบปฏิบัติการ (OS) แพตช์ความปลอดภัย การสำรองข้อมูล และการมอนิเตอร์
- คุณต้องจ่ายค่าเครื่องไม่ว่าจะใช้งานหรือไม่ก็ตาม
- การขยายขนาด (scaling) ต้องทำเอง คุณต้องปรับขนาดหรือเพิ่มเครื่องด้วยตัวเอง
- มีชิ้นส่วนที่ต้องดูแลมากขึ้น หมายความว่ามีจุดที่อาจพังได้มากขึ้นด้วย
- ใช้เวลาในการเตรียมพร้อม (provision) นานที่สุดเมื่อเทียบกับ functions หรือ containers
เมื่อไรควรใช้
ใช้ VM เมื่อคุณต้องการควบคุมได้เต็มที่ หรือมีความต้องการที่ตัวเลือกที่เบากว่าไม่สามารถตอบโจทย์ได้ เช่น ซอฟต์แวร์เฉพาะทาง สถานะที่ต้องคงอยู่ถาวร (persistent state) ฐานข้อมูลที่โฮสต์เอง งานที่ใช้ GPU (graphics-processing-unit) หรือการย้ายแอปที่มีอยู่แล้วโดยไม่ต้องเขียนใหม่ทั้งหมด
เข้ากับ vibe coding อย่างไร
VM ให้พื้นที่ทำงานที่กว้างที่สุดกับ AI แต่ก็มาพร้อมความรับผิดชอบที่มากที่สุดเช่นกัน ดังนั้นควรพึ่งพา infrastructure-as-code (โครงสร้างพื้นฐานในรูปแบบโค้ด) แทนการคลิกตั้งค่าด้วยมือ ให้ agent เขียนสคริปต์สำหรับเตรียมเครื่อง (ไฟล์ cloud-init หรือสคริปต์ สำหรับตั้งค่า) เพื่อให้เครื่องทั้งเครื่องสามารถสร้างซ้ำได้และตรวจสอบได้ แทนที่จะตั้งค่าเซิร์ฟเวอร์ด้วยมือผ่าน SSH (Secure Shell — การล็อกอินระยะไกลแบบเข้ารหัสเข้าสู่เครื่อง) เคล็ดลับ: ให้ agent เขียนสคริปต์การตั้งค่าทั้งหมดรวมไว้ในไฟล์ bootstrap เดียว และตั้งค่าให้มีการอัปเดตความปลอดภัยแบบอัตโนมัติ ด้วยวิธีนี้คุณจะสามารถลบและสร้าง VM ขึ้นมาใหม่ได้ตลอดเวลาโดยไม่สูญเสียการตั้งค่าของคุณ
#!/usr/bin/env bash
# bootstrap.sh — provision an Ubuntu VM
set -euo pipefail
apt-get update && apt-get upgrade -y
apt-get install -y nginx
systemctl enable --now nginx
# enable unattended security updates
apt-get install -y unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades
# Run the bootstrap on a fresh server
scp bootstrap.sh user@my-server:/tmp/
ssh user@my-server "sudo bash /tmp/bootstrap.sh"