首頁/名詞解釋/Rollback 回滾

階段 8 · 上線與維運(部署)

Rollback 回滾

把正式服務退回上一個穩定版本。

先用一句話理解

把正式服務退回上一個穩定版本。

打個比方

像新菜單出問題,先換回舊菜單繼續營業。

什麼時候會遇到

上線後出現嚴重錯誤、付款失敗、資料異常時。

再往深一點看

Rollback 是當新版本 deploy 到 production 後發現嚴重問題,把流量切回上一個已知穩定版本的應急操作。它解決的核心問題是「新版本出問題時不用慌亂修 bug 再 deploy,而是先讓服務回到可用狀態」。Vercel 和 Netlify 都保留每一次的 deployment 快照,一鍵就能切換;但 rollback 有一個常被忽略的複雜度:如果新版本同時跑了資料庫 migration(加欄位、改資料結構),回滾程式碼後舊程式碼可能不相容新的資料庫 schema,這時 rollback 反而會造成新問題。因此,可以安全 rollback 的 deployment 必須確保資料庫變更是「向後相容」的。

舉個例子

你 deploy 了新版結帳流程,Sentry 馬上報出 checkout API 大量 500 錯誤,你在 Vercel 的 Deployments 列表找到上一個 deployment,點 Promote to Production,兩分鐘後舊版本回來,錯誤停止,再慢慢去查新版程式碼哪裡有問題。

常見誤解

  • - 沒有在 Vercel 或 Netlify 保留 deployment 歷史,或用了沒有版本管理的 hosting,出問題才發現根本無從回滾,只能硬著頭皮在 production 緊急 debug。
  • - 做了破壞性的資料庫 migration(刪欄位、改欄位型別)後才 rollback 程式碼,舊版程式碼找不到已刪除的欄位,回滾後錯誤反而更多。
  • - 事前沒演練過 rollback 流程,真正出問題時第一次找 rollback 按鈕在哪、流程是什麼,在緊張中多浪費了十幾分鐘。

相關名詞

相關服務

VercelGitHubSentry

相關工具