1. 程式人生 > >生產環境出現Bug,應該如何部署Hotfix?

生產環境出現Bug,應該如何部署Hotfix?

 今天早上,有同事問我部署的問題,說HotFix應該如何部署?在我的博文《業主說我們專案經理上線很隨意,“愛發就發”!》一文中,我已經做了介紹,建議讀者先讀一下該博文,但是可能我沒有針對性地將HotFix應該如何部署。

如何部署Hotfix呢?首先我們要了解生產環境的版本,假定複雜一點的環境如下:

生產環境版本:            4.7

培訓試執行環境版本:5.0

測試環境版本:            5.1

開發環境版本:            5.2以上

其處理過程如下,根據以下的步驟進行處理,可以有效地減少部署Hotfix產生的問題,當然比起一些同事簡單Xcopy部署,確實要花費更多的時間,但是卻能換來信心和效果。

  1. 生產環境中:發放故障公告,針對問題進行公告,告知出現故障,以及故障的影響,致歉,如有可行代替方案,知會終端使用者;
  2. 開發環境中:從配置管理庫中,取出4.7版本的程式碼、資料庫腳步以及初始資料;即便是開發人員告訴你本機就是4.7版本,也需重新從配置庫中取出;
  3. 開發環境中:重現所要解決的Bug;根據實際情況,可能需要從生產環境中恢復部分的樣本資料;
  4. 開發環境中:不管是否能夠重現情況,都必須對Bug進行確認,對導致的問題進行分析;
  5. 開發環境中:分析出原因後,進行Impact analyze(衝突分析);
  6. 生產環境中:發放部署公告,針對問題進行公告,告知原因以及預計處理的時間,致歉;
  7. 開發環境中:進行程式碼修復、配置修復;
  8. 開發環境中:明確Hotfix列表,包括WebPage、資料庫Trigger/Procedure的Code,還有依賴的元件(jar或者Assembly),配置資訊等各項內容;
  9. 開發環境中:整理成Hotfix列表內容的更新次序以及更新方式;(其實就是安裝程式的需求,先做什麼,再做什麼)
  10. 測試環境中:重建4.7版本的執行環境,包括前臺程式,資料庫以及後臺服務;
  11. 測試環境中:根據第9步驟整理的Hotfix內容,在測試環境中部署;根據需要修訂Hotfix內容,如果Hofix內容已經變成一個安裝程式或者批處理程式,那麼更加方便;
  12. 測試環境中:檢查現有問題是否已經被修復;如果問題未被證明修復,重新回到第5步,並且進行部署公告的更新;
  13. 測試環境中:從生產環境中恢復部分樣本資料來確認是否修復了錯誤;如果問題未被證明修復,重新回到第5步,並且進行部署公告的更新;
  14. 生產環境中:備份工作,包括程式二進位制以及資料內容,以便發生錯誤時回滾;
  15. 生產環境中:部署前預備,限制生產系統的訪問,避免在Hotfix的同事,其他使用者使用導致問題;
  16. 生產環境中:根據在測試環境中,根據11步驟驗證的Hotfix內容在生產系統中部署;
  17. 生產環境中:檢查現有問題是否已經被修復;如果有問題,證明定位有問題,需要恢復原有生產環境,包括前臺、後臺服務以及資料庫環境,跳過18步;
  18. 生產環境中:如果沒有問題,檢驗過程中產生的Dirty資料需要進行恢復,可以採用人工的方式恢復影響的資料,也可以採用之前的資料庫備份方法恢復生產資料;
  19. 生產環境中:根據生產系統的部署情況,發放部署解除公告;解除生產系統訪問控制;確認一段時間的正常執行,保證部署的結果!
  20. 開發環境中:如果成功部署,在配置管理庫中標記Hotfix;
  21. 開發環境中:確認被修訂的問題是否在新版本已經被修復,確定影響的版本,如果新版本也存在此問題,則需要將修訂4.7的問題、Code和配置等合併到5.2目前的開發版本。

讀者,對於部署Hotfix是否有意見和看法,歡迎提出。