我們公司的網絡解決方案在其第四代主要世代,在過去的8年中有了相當大的發展。最近一代推出了各種各樣的結構來幫助完成這項任務,因爲根據新的客戶需求更新上一代產品變得非常笨拙。因此,我在2009年花了不少時間思考這個問題。
您可以做的最有價值的事情是採用敏捷方法來構建軟件。特別是,您應該維護一個新的構建可以(並且)每天創建的環境。雖然日常構建只是敏捷的一個方面,但這是解決您的問題時最重要的做法。儘管這與升級本身並不是一回事,但它本身也引入了一個有助於減少代碼庫變得笨拙(或將成爲Architect Astronaut)的機會。
只要框架和語言去,有兩個主要要求:該框架是長壽命和穩定的,並且環境支持Separation of Concerns。在這方面,ASP.NET對我來說效果很好:它已經以合理的方式發展,並且沒有使舊代碼無效的不連續性。我使用單獨的業務邏輯層來管理SoC,但ASP.NET現在也支持MVC開發。相比之下,在幾個月的工作後,我開始討厭PHP,因爲它似乎鼓勵混亂的做法,這會危及未來的升級。
關於DBMS選擇,任何現代的RDMS(SQL Server,MySQL,Oracle)都可以很好地爲您服務。以下是關鍵:雖然將需要維護用於管理升級的DDL腳本。這只是生活中的一個事實。那麼,你如何使這個過程容易處理?來自任何第三方開發人員的最有價值的工具是我的Red Gate的SQL Compare的副本。這個過程曾經是一個完整的噩夢,並且在我發現這個工具之前,對我的代碼進化能力產生了巨大的阻礙。因此,通用建議是使用存在工具的數據庫來比較數據庫結構。 SQL Server在這方面非常幸運。
硬件幾乎是一個不在乎。只要您的開發流程包含合理的發佈構建流程,您就可以隨時使用新硬件。
需求不斷變化的策略。再次看到敏捷。我鼓勵你們不要再把它們當作「需求」 - 以傳統意義上的充滿規範的大型文檔。敏捷以重要的方式改變。除了在爲外部付費客戶提供合同時,我不保留需求文檔,以便我可以確保適當的結算並防止功能蠕變。在這一點上,我們的內部流程非常迅速和流暢,以至於在記錄新的市場營銷版本時,我們的功能請求/錯誤管理軟件(如果您想知道的話,FogBugz)的報告將作爲我們的文檔。
整體重新設計策略/決策是:不。如果你對流程採取合理程度的思考,你會使用,選擇主流工具,並強制實施一個關注點分離,那麼任何一個完全放棄HTTP和RDBMSs都不應該導致重新設計。
如果你有足夠的敏捷是什麼可以變化,你不可能永遠在一個位置,一切必須變化。
很好的答案: ) – 2009-12-27 14:16:12
+1很好的解釋。此外,不斷變化的技術也在升級方法中發揮作用。因爲如果一個人看到一年內可以獲得新技術,那麼應該等待還是根據現有技術進行升級? – HotTester 2010-02-20 05:48:17
HotTester - 這取決於技術。通常情況下,我更喜歡對新技術採取「等等看」的方式,因爲我已經被燒燬了一兩次,以支持最終不會被客戶買入的技術。這就是說,我* *使用Visual Studio 2010(這是不正式發佈),我總是*尋找新技術 - 只是因爲我喜歡。 – 2010-02-20 13:44:33