~/VibeHandbook
PDF ฟรี

โครงสร้างพื้นฐาน

aws.amazon.com

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"