FirePower Digital
← 返回日誌列表
作者: Wei

實戰案例:歷史遺留單體應用的 Serverless 遷移與整併

#Migration#DevOps#Database#Security

隨著業務的演進,早期託管在多個獨立 VPS(如 Linode)上的老舊應用,往往成為維護的無底洞與不必要的財務黑洞。

本案例記錄了我們如何針對「快樂學程式」與「TESPA(台灣專業英語文學會)」兩個歷史站點進行安全整併,並為未來 Serverless 化鋪路。

1. 歷史主機深度審計

我們首先對運行了五年的舊主機進行了審計,發現:

  • 舊主機(Linode $10 USD)上運行的 Jenkins 早已崩潰停止,學員後台(Member Admin)也已停用。
  • 十多個網域共用同一個 WordPress Multisite 目錄與資料庫,只需在新主機進行一次性 Nginx 對接即可恢復所有站點。

2. 關鍵數據庫備份與中劃線轉義衝突解決

在搬遷 member-admin 等中劃線資料庫名稱時,遇到 Bash 語法將反引號(`)誤判為命令替換的問題。

我們改用 --database=member-admin 參數或將 SQL 寫入檔案後再匯入,成功解決了資料轉移衝突,並順利下載還原至新主機的 MySQL。

3. 雙機併行一個月與延時資料回溯機制

對於客戶專案(TESPA),為了防止相容性崩潰與資料遺失,我們採取了雙保險防護:

  1. 即時回溯:在 Cloudflare 中將 TTL 縮短至 2 分鐘,若切換後 24 小時內出錯,一鍵切回舊 IP。
  2. 延時資料同步回溯:若在切換後第 2 週出錯,為防止這兩週產生的新數據丟失,我們會從新主機 dump 出最新 SQL,傳輸至舊主機還原覆蓋同步後,才變更 DNS。

這套高可用整併策略不僅節省了 60% 的主機開銷,更為未來將前台 Astro 化、後台 Stellorbit 化的 Serverless 轉型提供了最安全的起點。