選擇開發技術四步曲
我的一位朋友正在為一個即將啟動的編程項目而費腦筋:要在保證項目順利完成的同時提高性能。他問我:“我該如何挑選技術呢?”這位朋友時斷時續地編寫過代碼,但他還沒有做過任何實質性的項目。他從未專注于任何特定的技術,他對這個項目不知如何下手。雖然他基于以前的經驗傾向于部署到Linux,但這還不是最終決定。
在這兒,我將自己給他提的建議分享出來。我將不推薦任何具體的技術,而是告訴你,我在對技術和體系結構制定決策時的方法。
第1步:為應用程序作松耦合設計
敏捷方法已經變得非常流行,一些人認為,這意味著你不要嘗試超越一兩個星期的時間表。但這在為應用程序作松耦合設計準備時極具價值。您所需要做的只是使用一個具有流程圖功能(例如Visio)的工具來提供一個高層次的邏輯概述。您不必陷入這樣的細節:“驗證這個字段至少包含五個字符”或數據布局。但你需要對應用程序各組成部分所擔負的處理職責有一個總體思路。
這兒有圖中應該包含的東西的一些例子:
- 任何重大的批處理任務。
- 數據存儲(文件,數據庫,“云”等)以及對之進行檢索并提供給應用程序其它部分的組件。
- 重要處理出現的地方(在數據庫中,在業務邏輯層,Web服務,客戶端等)和它的作用。
第2步:確定資源的使用情況和特點
一旦邏輯概述圖完成了,我們可以用它來確定資源的使用情況。你需要注意的資源是CPU、內存、硬盤空間和帶寬。你要向外部Web服務傳輸大量數據或者與之相反?這就需要注意應用程序和服務之間的連接的帶寬資源。也許你的數據庫內部要做密集的運算 - 那就注意數據庫的CPU使用情況,如此等等。
第3步:判斷性能臨界區域
一旦你明白了要使用哪里的資源,也就發現了潛在的性能瓶頸。這些地方會對你的技術選擇有最大的影響。如果事實證明你存儲在數據庫中信息很少,你在數據庫方面就有更多選擇。也許你要在業務邏輯層執行的令CPU沉重的算法,這其中就表明你需要支持高速運算的語言和平臺。下面是我以前做的圖表,這會有助于您了解這會如何影響你的決策。
第4步:權衡需求規模
你可以從圖表中學到的另一件事是你的應用程序的哪個地方需要權衡。例如,如果大部分處理需求是發生在應用程序的客戶端,那么服務器架構可以寬松得多。
您也將能明白自己需要何種規模。大多數數據庫有集群功能,所以如果你有選擇,這通常更容易,更好地把需要權衡的事情(特別是如果它們需要在請求之間共享狀態)推進到已經擴大規模的數據庫,或考慮具有內置集群或縮放堆棧的更高級的技術。
結論
利用輕量級邏輯概圖來啟動應用程序的發展過程,你會在正確的途徑上選擇適合自身需求的最佳技術。也存在很多非技術因素(如您的預算,特別是技術經驗等),但你需要從某個地方開始,這個決策過程將有助于你縮小選擇范圍,并提前看清問題所在。我很樂意你在下面的留言中,從而可以獲得與這類問題相關的經驗。
【編輯推薦】