今天早上,有同事問我部署的問題,說HotFix應該如何部署?在我的博文《業主說我們專案經理上線很隨意,“愛發就發”!》一文中,我已經做了介紹,建議讀者先讀一下該博文,但是可能我沒有針對性地將HotFix應該如何部署。
如何部署Hotfix呢?首先我們要瞭解生產環境的版本,假定複雜一點的環境如下:
生產環境版本: 4.7
培訓試運行環境版本:5.0
測試環境版本: 5.1
開發環境版本: 5.2以上
其處理過程如下,根據以下的步驟進行處理,可以有效地減少部署Hotfix產生的問題,當然比起一些同事簡單Xcopy部署,確實要花費更多的時間,但是卻能換來信心和效果。
- 生產環境中:發放故障公告,針對問題進行公告,告知出現故障,以及故障的影響,致歉,如有可行代替方案,知會終端使用者;
- 開發環境中:從組態管理庫中,取出4.7版本的代碼、資料庫腳步以及初始資料;即便是開發人員告訴你本機就是4.7版本,也需重新從配置庫中取出;
- 開發環境中:重現所要解決的Bug;根據實際情況,可能需要從生產環境中恢複部分的樣本資料;
- 開發環境中:不管是否能夠重現情況,都必須對Bug進行確認,對導致的問題進行分析;
- 開發環境中:分析出原因後,進行Impact analyze(衝突分析);
- 生產環境中:發放部署公告,針對問題進行公告,告知原因以及預計處理的時間,致歉;
- 開發環境中:進行代碼修複、配置修複;
- 開發環境中:明確Hotfix列表,包括WebPage、資料庫Trigger/Procedure的Code,還有依賴的組件(jar或者Assembly),配置資訊等各項內容;
- 開發環境中:整理成Hotfix列表內容的更新次序以及更新方式;(其實就是安裝程式的需求,先做什麼,再做什麼)
- 測試環境中:重建4.7版本的運行環境,包括前景程式,資料庫以及後台服務;
- 測試環境中:根據第9步驟整理的Hotfix內容,在測試環境中部署;根據需要修訂Hotfix內容,如果Hofix內容已經變成一個安裝程式或者批次程式,那麼更加方便;
- 測試環境中:檢查現有問題是否已經被修複;如果問題未被證明修複,重新回到第5步,並且進行部署公告的更新;
- 測試環境中:從生產環境中恢複部分樣本資料來確認是否修複了錯誤;如果問題未被證明修複,重新回到第5步,並且進行部署公告的更新;
- 生產環境中:備份工作,包括程式二進位以及資料內容,以便發生錯誤時復原;
- 生產環境中:部署前預備,限制生產系統的訪問,避免在Hotfix的同事,其他使用者使用導致問題;
- 生產環境中:根據在測試環境中,根據11步驟驗證的Hotfix內容在生產系統中部署;
- 生產環境中:檢查現有問題是否已經被修複;如果有問題,證明定位有問題,需要恢複原有生產環境,包括前台、後台服務以及資料庫環境,跳過18步;
- 生產環境中:如果沒有問題,檢驗過程中產生的Dirty資料需要進行恢複,可以採用人工的方式恢複影響的資料,也可以採用之前的Database Backup方法恢複生產資料;
- 生產環境中:根據生產系統的部署情況,發放部署解除公告;解除生產系統存取控制;確認一段時間的正常運行,保證部署的結果!
- 開發環境中:如果成功部署,在組態管理庫中標記Hotfix;
- 開發環境中:確認被修訂的問題是否在新版本已經被修複,確定影響的版本,如果新版本也存在此問題,則需要將修訂4.7的問題、Code和配置等合并到5.2目前的開發版本。
讀者,對於部署Hotfix是否有意見和看法,歡迎提出。