Virtual Machines
是什麼
想像一下,租下整套公寓而不是一間酒店客房:它是一處完全屬於你的空房子,怎麼佈置、怎麼使用都由你說了算。虛擬機器()就是軟體形態的那套公寓——一臺以軟體形式存在的完整計算機,執行在服務商的硬體上。你得到一個完全由自己掌控的作業系統——你登入進去,想裝什麼就裝什麼,並像在物理機上一樣執行你的應用。它是各種託管選項中最親力親為的一種。
優勢
- 完全掌控——完整的作業系統、任意軟體、任意配置。
- 效能可預測;只要你租著,這臺機器就是你的。
- 沒有執行時間或執行時限制,不像 serverless 或邊緣。
- 什麼都能跑:資料庫、遺留軟體、自定義守護程序、長任務。
- 成熟、廣為人知的模型,擁有數十年積累的工具。
權衡取捨
- 一切都要你來管理:作業系統(OS)更新、安全補丁、備份、監控。
- 無論機器繁忙還是空閒,你都要為它付費。
- 擴充套件是手動的——你自己調整規格或增加機器。
- 活動部件越多,出錯的方式也越多。
- 相比函式或容器,預配速度最慢。
何時使用
當你需要完全掌控,或有更輕量的選項無法滿足的需求時,就使用 VM:專用軟體、持久化狀態、自託管資料庫、GPU(圖形處理器)工作負載,或在不重寫的情況下遷移一個現有應用。
與 vibe coding 的契合度
VM 給 AI agent 最寬廣的畫布,但也帶來最大的責任,因此要依靠基礎設施即程式碼(infrastructure-as-code),而非手動點選。讓 agent 編寫一個預配指令碼(一個 cloud-init 檔案或一個 shell 安裝指令碼),使整臺機器可復現、可審閱,而不是通過 SSH(安全外殼——一種對機器進行加密遠端登入的方式)手工配置伺服器。建議:要求 agent 把安裝過程指令碼化到單個引導檔案中,並設定自動安全更新——這樣你隨時可以銷燬並重建這臺 VM,而不丟失你的配置。
#!/usr/bin/env bash
# bootstrap.sh — 預配一臺 Ubuntu VM
set -euo pipefail
apt-get update && apt-get upgrade -y
apt-get install -y nginx
systemctl enable --now nginx
# 啟用無人值守的安全更新
apt-get install -y unattended-upgrades
dpkg-reconfigure -f noninteractive unattended-upgrades
# 在一臺全新的伺服器上執行引導指令碼
scp bootstrap.sh user@my-server:/tmp/
ssh user@my-server "sudo bash /tmp/bootstrap.sh"