2011-02-10 44 views
3

我正在開發一個Web應用程序,並希望能夠在我們的用戶中錯開部署新的構建版本和版本。例如...如何管理Web應用程序的逐步部署

  • 部署應用程序的新版本和遷移幾個測試帳戶,以它爲測試
  • 測試時是快樂的,舉說客戶的5%到新版本和監控支持問題服務器負載問題與這些客戶。
  • 如果它仍然正常,逐漸將越來越多的客戶轉移到新版本,直到每個人都更新。

FogCreek的Fogbugz和Kiln正在使用這樣的部署系統。你可以閱讀一下here...

我想在目前要解決的問題是,該系統在不同的帳號可以使用不同版本的代碼的。

什麼是管理和控制它的好方法? Apache可以在這裏做一些繁重的工作嗎?我想避免太多的開銷,或者想知道在哪裏發送請求的奇怪的加載器腳本。像Fogbugz on Demand這樣的網絡應用如何處理這個問題?有沒有公​​認的設計模式?

用戶通過域名(例如user1.example.com,user-bob.example.com等)進行標識。

+0

投票遷移到http://programmers.stackexchange.com – Mchl 2011-02-10 18:56:57

回答

3

有很多種方法可以完成這個工作;所以,讓我們覺得在高水平而不談架構的細節:

  • 大型公共場所像隨機樣本雅虎和MSN手柄設計變更,並設置有長超時cookies來確定誰應該接受新的設計。
  • 對於付費升級和beta邀請,您應該能夠識別並標記哪些客戶帳戶將在其登錄時收到新的「設計」或功能集。例如,Digg v4的新更新僅適用於登錄和選擇加入的客戶。 Facebook在其新系統頁面上展示了類似的系統。
  • 您可能決定支付beta測試者。您可以輕鬆使用亞馬遜的Mechanical Turk或類似的網站,例如custfeedback.com

具體內容取決於您和您的架構。希望你已經用你的軟件編寫了這個功能;希望您能夠在部署時輕鬆提供簡單的方法來提供應用程序升級和數據庫升級。 Magento(一個開源的電子商務平臺)處理得很好。每個模塊都以插件的形式構建,並且每個模塊都保存自己版本的記錄。基於配置文件中保留的新版本/將來版本,可以使用安裝和升級腳本即時執行數據庫升級。

您可以選擇將測試版測試人員移動到比您的生產計算機具有更詳細的日誌記錄和實時分析的新域或數據庫。這是Kiln博客文章中提到的方法 - 他們引用了站點http://martinfowler.com/bliki/BlueGreenDeployment.html - 但是,最終,您完成了帳戶和流量的隔離,最終必須進行整合。您需要在最有可能的維護時段內執行遷移,並讓每個人都達到相同的版本。

祝你好運!