生產環境出現Bug,應該如何部署Hotfix?
阿新 • • 發佈:2019-02-08
今天早上,有同事問我部署的問題,說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資料需要進行恢復,可以採用人工的方式恢復影響的資料,也可以採用之前的資料庫備份方法恢復生產資料;
- 生產環境中:根據生產系統的部署情況,發放部署解除公告;解除生產系統訪問控制;確認一段時間的正常執行,保證部署的結果!
- 開發環境中:如果成功部署,在配置管理庫中標記Hotfix;
- 開發環境中:確認被修訂的問題是否在新版本已經被修復,確定影響的版本,如果新版本也存在此問題,則需要將修訂4.7的問題、Code和配置等合併到5.2目前的開發版本。
讀者,對於部署Hotfix是否有意見和看法,歡迎提出。