Cal Evans

開發者不應碰 Staging 伺服器#

每個人都遇過這種情況:你的程式碼被部署到 staging 伺服器進行系統測試,測試經理回報發現了問題。你的第一反應是「讓我快速修一下」——但這正是問題所在。

作為開發者,你不應該擁有 staging 伺服器的存取權限

典型的部署架構#

在大多數 Web 開發環境中,架構可以分為:

  • 本地開發環境:開發者在自己的機器上進行開發和單元測試
  • Development 伺服器:進行手動或自動化整合測試
  • Staging 伺服器:QA 團隊和使用者進行驗收測試
  • Production 伺服器:正式環境

存取權限的分層管理#

使用這個模型,開發者——即使是資深開發者——不應該擁有超越 development 伺服器的存取權限。大部分開發工作在本地機器上完成。

程式碼簽入**版本控制系統(SCC)**後,無論是自動或手動,都應該部署到 development 伺服器進行測試。從這一刻起,開發者就是流程的旁觀者

  • Staging 管理者負責打包並將程式碼部署到 staging 伺服器給 QA 團隊
  • 開發者不需要存取 staging 伺服器的任何東西,QA 團隊和使用者也不需要碰 development 伺服器
  • 準備好進行驗收測試時,直接發佈——不要請使用者「先看一下」development 伺服器上的東西

在任何情況下——絕對沒有例外——開發者都不應該擁有 production 伺服器的存取權限。如果有問題,由支援人員提交修復或請求修復,經過版本控制後再部署補丁。

作者親身經歷過一些最嚴重的程式災難,正是因為有人違反了這條規則。如果 production 壞了,production 不是修復它的地方