部署指南

VPS 和 PaaS 有什麼差別?個人開發該選哪一種?

用同一個 Node.js 應用程式比較上線後的更新和維運工作

要公開在本機能執行的 Web 應用程式,可以租用 VPS 自行部署,也可以交給 PaaS 執行。兩者的差異,在更新程式或服務停止時最容易看出來。

本文內容

VPS 和 PaaS 分別由誰管理?

VPS 是租用虛擬伺服器的方式。你可以用 SSH 登入 Linux 主機,安裝執行環境並設定啟動方式。DigitalOcean Droplet 就是這類服務的例子。DigitalOcean 官方設定指南

PaaS 由平台管理程式的執行環境。你要設定程式碼、啟動指令和環境變數。例如 Render 可從連結的 Git 分支自動部署。Render 官方部署文件

由誰管理執行環境 · 概念圖
VPS

由開發者設定作業系統、啟動和部署方式。

PaaS

平台管理執行基礎設施,開發者維護程式和相依套件。

兩種方式的設定自由度與維運範圍不同。
工作 一般 VPS 連結 Git 的 PaaS
作業系統和中介軟體 更新作業系統,管理反向代理和執行環境 平台管理基礎設施。開發者更新相依套件與自製映像檔。
更新程式 設計檔案部署、程序重啟與失敗時的回復 使用平台的建置與部署功能,上線後自行驗證。
排查故障 檢查伺服器狀態與應用程式日誌 查看部署紀錄、應用程式日誌和服務狀態。
保護資料 若資料庫在同一台主機,要自行規劃備份和還原 可選外部或代管資料庫,確認保留期限與還原流程。

更新同一個 Node.js 應用程式會有什麼差別?

假設要修改社團器材預約系統的介面文字。使用 VPS 時,依照首次上線時制定的步驟把新版放上伺服器,再切換執行程序。用 GitHub Actions 自動化時,也要決定權限、部署失敗時如何處理,以及如何回到舊版。

支援 Git 的 PaaS 可以在推送到指定分支時開始部署。透過公開網址確認變更,並比對部署紀錄中的提交。若涉及資料庫結構變更,兩種方式都要另外規劃,因為只還原程式碼會保留資料庫變更。Render 官方自動部署說明

程式更新如何上線 · 概念圖
VPS

推送 → 自訂部署流程 → 切換程序 → 確認公開網址

連結 Git 的 PaaS

推送 → 平台建置並部署 → 確認公開網址

VPS 也能自動化,差別在於由誰維護部署流程。

KamuiDash 是可從 GitHub 部署 Web 伺服器的 PaaS。Node.js 應用程式可以設定儲存庫、啟動指令和環境變數,再確認部署結果。KamuiDash 官方 Node.js 設定

KAMUIDASH · 畫面截圖
KamuiDash 應用程式建立畫面,可選擇執行語言與 GitHub 儲存庫。
KamuiDash 的應用程式建立畫面。選擇執行環境與 GitHub 儲存庫後,即可繼續設定。

更新後打不開預約頁面時

使用 VPS 時,先確認應用程式程序是否啟動,再看反向代理的日誌有沒有連線失敗。使用 PaaS 時,先看部署紀錄確認上線的版本,再從應用程式日誌找啟動錯誤。若程式碼變更無法解釋故障,也可以查詢平台的服務狀態。

依照自己想管理的範圍選擇

想學作業系統管理、需要自訂網路設定,或想自行安排多個程序,可考慮 VPS。一般 HTTP 應用程式若想把時間放在開發功能,可考慮 PaaS。先確認是否需要持續執行、重啟後需不需要保留檔案,以及有沒有背景工作。Render 的免費 Web 服務閒置時會停止,重啟或重新部署後,本機寫入的檔案也會消失。Render 官方免費方案限制

用相同條件比較月費、資料庫、備份和網路流量的成本。也要決定何時、由誰更新作業系統和驗證還原。

延伸閱讀

可在 KamuiDash 了解如何從 GitHub 部署 Web 應用程式。