讓我們假設你正在構建一個Calculator應用程序。您將允許客戶使用自己的徽標和CSS樣式表來定製此計算器。客戶將他們的域名指向託管的計算器,應用程序將爲每個客戶提供正確的主題。例如:構建託管/ SAAS應用程序時,如果允許客戶自定義,如何管理多個版本?
- www.AcmeCalculator.com將成爲了Acme的標誌計算器,和他們創造了一個平淡無奇的企業風格。
- www.HellzCalc.com將服務器與一些地獄天使騎自行車的跡象和他們創造的黑色,血紅色的主題計算器。
你已經推出了計算器1.0,每個人都寫了他們的風格來處理這個版本。
下個月,您已準備好發佈計算器1.1,其中添加了一項新功能,比如說需要您添加一些新UI(此示例中爲HTML)的組件的「科學模式」。這意味着如果你推出1.1,你會打破你的一些客戶的風格。
我提出的最佳解決方案是讓您的應用程序保持多個版本運行。例如:
- www.AcmeCalculator.com解析到你的應用服務器,檢查的版本Acme公司是目前,並轉發到www.AcmeCalculator.com/1.0
- www.HellzCalc .com解析爲您的應用服務器,該服務器注意到它們運行在新的1.1版本中,因爲它們更新了其CSS以處理新版本,並單擊了「完成升級」按鈕或其他內容,因此它們被重定向到「www.HellzCalc.com/1.1
這個系統的一個問題是,你不可避免地會有懶惰的客戶從不投資升級。你會一致地運行200個版本,試圖修復每個版本中的錯誤,基本上瘋了。
一個解決方案是使用部分每月託管費來聘請一個「UI移植團隊」,該團隊將成爲一組設計師,他們的唯一工作就是不斷地將隊列中的客戶端運行到最舊的版本並調整其CSS並驗證它們在最新版本上運行。這將允許您同時支持X個版本,其中X是您在UI遷移團隊投入多少資金的功能,可以添加資源以加速或減慢它們的速度。
相同的想法可以處理數據庫更改:計算器1.0和1.1運行在數據庫1.0上,但計算器1.2運行在數據庫1.1上等。您可以只添加版本名稱的模式,並使用類似的「數據遷移團隊」將數據從模式1.0移動到模式1.1,最後在沒有(應用)客戶端被刪除時刪除模式1.0。
我確定這種類型的問題出現之前,我想看看其他人如何解決它。也許甚至有這樣的「最佳實踐」。
說起來容易做起來難。 – nurikabe 2014-06-06 16:29:18