2012-09-18 68 views
7

過去兩年來,我一直在tomcat上使用java + spring,並且我的應用程序變得非常龐大。啓動時間現在將近3分鐘,在開發過程中會佔用大量資源。如何在java中開發/部署BIG企業應用程序

所以我對如何使軟件再次開發有趣的想法感興趣。我已經看過Spring DM/Gemini藍圖,使它成爲一個模塊,但是體驗並不方便。

現在將要添加更多模塊,考慮開發另一個Web應用程序並使用Spring集成進行消息傳遞。顯然,這將是一個非常痛苦的經驗,在一臺臺式電腦上開發它。

有沒有人有云開發經驗?我如何改進所有這些時間和資源消耗任務?在雲中開發會幫助我嗎?

+0

真正的問題涉及到削減運行在開發機器上的tomcat的部署時間嗎?你看過jRebel嗎? – Affe

回答

8

這是典型的java + spring web應用程序非常常見的問題。隨着年齡增長,他們開始變得臃腫,上下文加載開始變得痛苦。我可以建議一些指標來緩解這個問題,但只有你能夠根據你的應用程序的具體情況來判斷最適合你的問題。

  1. 在開發過程中不要嚴重依賴服務器。寫入單元測試並在servlet容器之外運行它們。 Spring對此有着出色的支持。

  2. 在Rest/Soap Web服務中分​​解您的業務邏輯(審慎而謹慎地)。這使您可以獨立於核心業務邏輯開發和測試用戶界面。

  3. 如果使用maven/gradle,請嘗試jetty插件。它可以繼續掃描更改並自動重新加載webapp(我認爲tomcat插件可以做同樣的事情)。它具有在重新啓動之間存儲會話的能力,因此您不受重新啓動的影響。請參閱此處瞭解更多詳情How can I speed up Maven and Netbeans

  4. [付費選項]可能會嘗試JRebel。

  5. 使用CI服務器,可持續集成/測試/部署您的應用程序,從您的開發人員機器中獲取一些負載。

+0

謝謝!你的答案是我正在尋找的東西。我對CI服務器特別感興趣。所以我們將開發另外兩個獨立的彈簧應用程序。 CI服務器將讓我免於在本地計算機上運行兩個並行應用程序的痛苦(它仍然有可能由於資源限制而不能成功運行)? – beku8

+1

我很高興它有幫助。當您有良好的測試覆蓋率時,CI服務器將真正發光。 CI服務器可以繼續將應用程序部署到開發服務器,並且在本地機器上開發時,您可以在訪問由其他應用程序提供的功能時指向通用開發服務器,以便您必須在本地只運行一個應用程序。 – kunal

8

首先,照顧瓶頸。隨着他們的成長,他們傾向於進入項目。原始設計一次又一次地被破壞,以滿足瘋狂的最後期限,現在膨脹已經殺死了一次生動的應用程序。

不要猜測問題,而是使用真實數據來確定是什麼讓你的應用程序變慢。使用諸如jProfiler之類的剖析器:http://www.ej-technologies.com/products/jprofiler/overview.html

接下來,使用您學到的知識來提高新模塊的效率。底線在變化技術不是一個解決方案,因爲所有技術都可能出現瓶頸。你必須找到問題的原因並解決這個問題。

一旦你解決了瓶頸問題,你可以在新技術上創建一些測試項目,看看它是否更快,更容易,做你所需要的。但是,機會只是解決你當前堆棧上的問題就是所需要的。

+0

感謝您的評論,但我認爲profilers更多的是與生產性能相關,而不是開發啓動(這是我打算提出的原始問題)? – beku8