最近 Disco 一篇關於 Idealist.org 如何將每月 3,000 美元的 Heroku 帳單換成每月 55 美元的伺服器的技術文章 (How Idealist.org Replaced a $3,000/mo Heroku Bill with a $55/mo Server),引發了不少人討論利弊得失,根據 Disco 的說法,全球最大的非營利組織徵才網站 Idealist.org 在 2025 年於 Hetzner 這個網站服務上租用了伺服器服務,並採用 Disco 這個開源的網站部署工具來進行移轉 Staging 環境,每月費用遠比原本租用雲端服務 Heroku 的低很多,且運作了半年。但該篇文章內容其實沒有完整提到「檯面下的成本」和「隱藏的風險」。
從規模上來看,該網站在程式開發端的環境部署問題,在於一個預備環境的費用是每月 500 美元。以他們原本選用的規格來看,一個單獨的預備環境,執行 Web 和 Worker dyno 服務,再加上滿足網站技術需求所必需的附加元件(add-ons),每月大約要花費團隊 500 美元。這意味著僅僅擁有兩個永久環境(dev 和 main)就已經是每月 1,000 美元的低消,如果在 Heroku 上,6 個環境 × 每月 500 美元,總計就會是每月 3,000 美元的開銷成本。
什麼是 Staging 環境 / 預備環境 ? 如果白話一點來解釋,Staging 環境就是比 Beta 環境更好,我們的程式碼要上正式站 Production 環境前的中繼站環境。

也因此,當面臨昂貴的企業合約續約時,Idealist 團隊決定測試一個替代方案。當初的假設很簡單,他們就是看能否將僅僅一個 Staging 環境遷移到更便宜的雲端服務上,以緩解一些成本壓力?
他們選擇了一台標準的 Hetzner CCX33 伺服器(每月 55 美元),並使用 Disco 在新機器上複製他們的 git push 部署工作流程,所有預備環境將共享伺服器上的一個「夠用」的 Postgres 實例 (instance),降低了昂貴的託管資料庫附加元件的需求,原因是在原本 Heroku 上,這些附加元件的成本往往超過 dyno 本身。
另外,為什麼要使用像 Disco 這樣的工具,而不是直接在伺服器上執行 docker-compose up?根據 Disco 的說法,他們的解決方案彌補了原始 VPS(虛擬專用伺服器)和真正 PaaS 服務之間的差距。Disco 是一個開源的網站部署平台,讓用戶能以一台機器的資源來託管 10 個以上的網站應用程式。在幾秒鐘內,即可將 Python、Node、Django、Rails 或靜態網站部署到自己的伺服器或樹莓派機器上。
多個用於重大功能的長期運行預備環境
以這個案例來說,總共有 6 個完整的預備環境現在順暢地運行在 Idealist 租用的 55 美元虛擬機上。即使同時執行所有 6 個環境和其他專案,伺服器的資源使用率仍然很低。平均 CPU 負載保持在約 2% 左右,記憶體使用量也僅約 14 GB (可用容量 32 GB )。
當然,這次遷移並非完美且順利,當中有很多問題需要解決。每個新的預備環境仍然需要 DNS 和 CDN 的設定,雖然不難,而且也不是自動的,需要設定和排錯。
該網站團隊也開始承擔起伺服器監控、安全更新和處理任何基礎設施問題的工作與責任,這其實滿花時間的,也就是許多開發者認為的,額外的隱藏成本,在過去,他們租用 Heroku 時,可是讓 Heroku 來處理這些工作,省時省心力哪。
沒有 Swap 空間與 OOM (Out-of-Memory) 問題
如果觀察 Hacker News 上 針對這篇新聞內容的討論串,有開發者(speedgoose)從文章的 htop 截圖中發現,那台 每月 55 美元的伺服器並沒有配置 Swap(交換空間)。雖然看情況,但這也是一個有風險的事情,如果伺服器上的某個服務(例如一個預備環境)突然記憶體用量飆升,系統沒有 Swap 可以緩衝,Linux 核心的 OOM Killer 可能來不及反應,導致整台伺服器當機。
我們如果看 Heroku,它的 Dyno 是互相隔離的,一個 Dyno 崩潰不會影響其他 Dyno。但在 Hetzner 這台單一伺服器上,一個預備環境的錯誤就可能導致所有 6 個環境全部離線。
在前述 Hacker News 上的討論串中有人提到,至少應該啟用 earlyoom 或 systemd-oomd 等機制,以便在系統崩潰前更早地殺掉有問題的進程,或者配置 zram(壓縮記憶體)來緩解壓力。
「隱藏」的營運成本,儘管省錢,但需要花費更多時間與專業
Disco 的文章輕描淡寫地提到了「營運開銷」(operational overhead),但其實這才是真正的成本。如果看 Heroku 的服務,他們提供的最大價值是「託管服務」(Managed Service),在上面執行環境與伺服器任務,開發者不需要擔心作業系統更新、安全更新檔、網路設定、日誌管理 (可能會爆量或需要額外處理),也不需要知道什麼是 oom_score_adj 或 vm.overcommit_memory。
而現在呢,Idealist.org 的團隊現在必須自己承擔這些工作與責任,每月 55 美元只是租用雲端伺服器硬體的費用,但維護這台伺服器所需的資深工程師的時間成本並未計算在內,這還需要具備足夠專業知識的人員,比方說要怎樣調整 OOM killer、如何設定核心參數(vm.min_free_kbytes)來避免效能問題等等。

Staging 環境 vs. Production 環境
該篇文章的核心是遷移「Staging(預備)環境」,而不是「Production(生產)環境」。原文章提到的該機構租用 Heroku 每月 $3,000 的費用,畢竟還包含了生產環境等級的高可用性(High Availability)、自動故障轉移和專業的技術支援。用一台每月 55 美元且屬於「單點故障」(Single Point of Failure)的伺服器來比較,在可靠性上是不對等的。實際上該網站的正式環境費用並未揭露,但費用應該也不低,如果以每月數百萬訪客的
CyberQ.tw 觀察,Idealist.org 的成功案例,是以增加營運複雜性和承擔更高的(Staging 環境)停機風險為代價,換取了巨大的硬體成本節省。這對於 Staging 環境來說是合理的取捨,但有時候我們在進行技術選型、架構選擇與系統開銷時,其實忘了去計算我們團隊可能需要的專業技術深度和潛在的額外維護負擔成本。
對於開發測試與預備環境來說,選用這樣的較低成本方案,也不失是一個好的選項,只要你的團隊對於開源技術的投入和專業經驗的掌握度夠,那麼讓開發測試和上正式版環境前的預備環境都選用成本較低的 VPS 是一個可行的策略。
本文題圖由 Google Gemini AI 生成,本文配圖由 ComfyUi 搭配本地端 AI 模型生成










