想象一下,我們有一個複雜的asp.net解決方案:在IIS中託管的MSSQL + ASP.NET MVC + ASP.NET Web窗體+ WCF服務。Asp.net部署。如何推送到生產服務器
每週一次的解決方案必須部署到單個生產服務器透明地爲用戶。部署可以包括數據庫方案的更改,輕微的IIS重新配置和文件替換。部署消耗時間並可能影響正常運行時間。
如何在不中斷用戶或減少停機時間的情況下進行部署?什麼是技術和最佳實踐?
(如開關分期/生產環境)
想象一下,我們有一個複雜的asp.net解決方案:在IIS中託管的MSSQL + ASP.NET MVC + ASP.NET Web窗體+ WCF服務。Asp.net部署。如何推送到生產服務器
每週一次的解決方案必須部署到單個生產服務器透明地爲用戶。部署可以包括數據庫方案的更改,輕微的IIS重新配置和文件替換。部署消耗時間並可能影響正常運行時間。
如何在不中斷用戶或減少停機時間的情況下進行部署?什麼是技術和最佳實踐?
(如開關分期/生產環境)
如果你的首要關注是正常運行時間,你可以看看該網站負載均衡的服務器 - 一個可以取下來,更新,然後帶回來了,而另一個是然後更新。您需要了解在這種情況下您如何管理會話,例如使用sql server或狀態服務器機制。
我不能提供一個完整的解決方案,但有幾點是「爲我工作」:
拆分您的數據庫升級到(A)的變化是向後兼容和(b)重大更改。這樣,您可以運行部分(a)(添加字段,添加表格,添加索引...),而舊版本的軟件仍在運行。對於(b)部分(更改字段類型,轉換數據...),我認爲不可能避免停機。嘗試使大多數數據庫更改不中斷。
宣佈停機時間以便您的用戶可以適應它。在升級過程中,請使用app_offline.htm feature以確保用戶能夠看到一條很好的錯誤消息來解釋情況。它也確保您的應用程序重新加載。無需重新加載(即「僅替換文件」)的Web應用程序的就地,不停機升級可能會導致奇怪的錯誤。
測試升級:製作生產系統(軟件加數據庫)的副本,在系統運行時應該是可行的。在測試系統上執行升級。如果升級過程中出現問題:修復問題,改進升級程序並重復。