2013-07-01 70 views
7

我創建了我的第一個Play應用程序。哪種是最適合生產的部署方法?我應該將整個項目複製到生產服務器並運行播放開始?或者我應該從我的應用程序中進行一場戰爭,並在tomcat/jboss中進行部署?哪個是最推薦的方式?與它的軌道行爲類型相比,讓它感到困惑。請注意,這應該是一個大數據應用程序,它也可能稍後服務器加載請求。所以我們也在考慮可伸縮性,可用性和性能方面。此應用程序決定部署在雲中。Play框架2.1應用程序部署

謝謝。

回答

20

正如其他人所說的,使用dist命令是爲一次性應用程序部署Play最簡單的方法。然而,闡述,我這裏有一些其他的選擇和我與他們的經驗:

  • 當我有經常更新的應用程序,我通常在服務器上安裝遊戲,並通過Git的執行更新。這樣做,每次更新後,我只需運行play stop(以停止正在運行的服務器),有時然後運行play clean以清除任何可能損壞的庫或二進制文件,然後運行play stage以確保存在所有先決條件並執行編譯,以及然後最後play start運行更新的應用程序的服務器。它看起來很多,但很容易通過快速bash腳本自動化。

  • 另一種方法是在前端Web服務器(如Apache,Nginx等)後面部署Play。如果要執行某種類型的負載平衡,但這不是必需的,因爲Play隨附其捆綁擁有服務器。文檔:http://www.playframework.com/documentation/2.1.1/HTTPServer

  • 創建WAR歸檔使用play2war插件是另一種方式來部署,但除非你把它給別人誰已經在你提到的這些servlet容器內置了重大基礎設施,我不會推薦它(正如許多大公司所做的那樣)。使用servlet容器會增加Play本來應該去除的複雜程度(因此是集成服務器)。沒有顯着的性能增益,我知道使用這種方法超過前面描述的兩個。

  • 當然,總是有play dist爲您創建軟件包,您可以上傳到服務器並從那裏運行play start。這可能是最簡單的選擇。文檔:http://www.playframework.com/documentation/2.1.1/ProductionDist

出於性能和可擴展性,在遊戲中的Netty服務器將起到非常充分,以卓越的你所需要的。這裏有一條信譽良好的鏈接,展示了Netty在所有框架和「股票」Play應用程序中性能最快的表現,並且在性能方面領先於Rails/Django:http://www.techempower.com/blog/2013/04/05/frameworks-round-2/

不要忘記,如果您需要更多的負載平衡和可用性,您可以隨時將您的部署架構更改爲在前端服務器後面運行。這對Play來說是一個微不足道的變化。我仍然不會推薦WAR部署選項,除非像我說的那樣,您已經有很大的servlet容器安裝基礎,因此有人迫使您爲您的應用程序提供服務。

可伸縮性和性能也與其他因素有很大關係,比如使用緩存,數據庫配置,併發使用(Play擅長)以及底層硬件或雲的質量平臺。例如,Instagram和Pinterest每天都爲數百萬人提供Python/Django堆棧,該堆棧在所有流行的基準測試中表現平平。他們通過大量緩存和高性能數據庫(這通常是大型應用程序的瓶頸)來緩解這一問題。

冒這個問題的答案太長,我只會補充最後一件事。我也習慣了性能和可伸縮性,認爲我需要最強大的堆棧和配置來運行我的應用程序。除非你像Google或Facebook那樣說話,否則每個算法都必須進行精細調整,因爲它每天會被轟炸10億次。硬件(或雲)資源便宜,但開發人員/系統管理員時間不是。您應該考慮在原始性能比較中部署應用的易用性和可維護性,即使在播放性能最佳的部署配置的情況下也可以說是最簡單的選擇。

+1

謝謝,非常詳細的答案... :)順便說一句,我使用MongoDB去與這個應用程序。 – popcoder

+1

謝謝!同樣,MongoDB也很棒,但是和其他數據庫一樣,它的性能仍然有限制。某些類型的查詢需要比關係數據庫更長的時間,但是可擴展性的分片要容易得多。取決於數據的結構化/非結構化。一切都是技術上的折衷:-) –

4

您不需要使用Play的控制檯來運行應用程序,它會消耗一些資源,它的主要目標是在開發階段快速啓動。

最好的選擇是使用文檔中描述的dist command。由於這一點,您甚至不需要在目標計算機上安裝Play,因爲dist創建了可以使用包含所有必需元素的獨立應用程序(也是內置服務器,因此您無需使用WAR進行部署在任何容器中)。

如果你打算使用雲,你也應該檢查優惠,即。從Heroku或CloudBees,它允許您部署您的應用程序只是通過...推動更改通過git存儲庫,這是非常舒適的方式,檢查documentation's home,向下滾動到鏈接:部署到......瞭解更多詳情。

相關問題