您想在云端嗎? 您有很多選擇。 我已經評估或使用了許多方法,因此這里有幾句話。 (當我使用Java時,我將包括一些與Java相關的注釋,但大多數情況適用于所有(受支持的)語言。) 但是在深入介紹每種服務的詳細信息之前,讓我總結一下“云”在托管應用程序時實際上意味著什么:
- 自動擴展–如果需求增加,您將自動獲得更多資源(在大多數情況下為更多虛擬機)來處理請求。 對于常規應用程序,它很少有用,但是擁有它并確保您的服務永遠不會消失是一件很不錯的事,因為負載過高
- 支付使用費用–簡而言之,實際上,這是選擇小型服務器的選擇,而大型服務器則選擇大服務器。 這里的“陰天”是,您可以輕松地做到這一點,而不用重新配置一些遠程計算機
- 云基礎架構–這是“我們部署這些服務并注意它們正在運行”的花哨的演講。 因此,無需在計算機上安裝和配置消息隊列,而是將其連接到已經安裝并管理的消息隊列。 或數據庫,電子郵件服務或緩存。
- 管理工具–您可以使用控制臺,命令行工具和Web UI來處理安裝。 這既是一個加號(工具比使用本機命令的工具更高的級別),也是一個減號(有學習曲線)
- 負載均衡器–所有服務都提供這些負載均衡器,您很少在乎負載均衡器的軟件和硬件是什么
總體優點是易于使用–您需要的系統管理知識很少,即使您掌握了這些知識,也需要做很多事才能擁有可用于現實世界的應用程序。 它不一定比常規服務器便宜(實際上,它可能更昂貴)。 但是,讓我們看看每種服務的作用:
亞馬遜網絡服務(AWS) 。 這是最受歡迎的選項。
- 常規流程:創建一個EC2實例,它是一個虛擬機,對其進行ssh操作并具有完全控制權。 只要負載較高,就可以啟動并殺死實例的副本。
- 靈活性:由于您對計算機具有root控制權,因此它非常靈活。
- 可用性:AWS控制臺和Elastic Beanstalk為您提供了非常好的UI,用于管理應用程序。 使用Beanstalk,您甚至無需打開控制臺即可部署應用程序,只需刪除war文件即可。 實際上,您至少需要提供一些配置。 最好的事情是擁有預定義的實例映像,因此您可以在一分鐘之內啟動并運行“ Tomcat with MySQL”。 已經在Amazon API之上構建了不錯的解決方案,例如RightScale。
- 功能:除了基本的實例功能外,您還有很多其他功能-托管數據庫,彈性IP,DNS,云存儲,CDN,郵件服務,消息隊列,緩存(這不好),等等。因此,您可以使用Amazon版本,而不是在實例上安裝和管理這些服務。
- 定價 -您需要為實例運行的小時數付費
- 試用:是,1年(微實例)。
Google App Engine(GAE) 。 這是一個PaaS(平臺即服務),因此您沒有自己的虛擬機,并且在使用某些標準API(例如,您不能生成線程)方面受到限制,并且您不能使用文件系統(您需要使用Blobstore API)
- 常規流程:創建一個應用程序并部署它(通過命令行或IDE插件)。 您不管理服務器,也沒有ssh –您只有該應用程序。 該應用程序在沙盒中運行,您可能需要使用一些專有的API才能存儲到NoSQL存儲,使用MapReduce等。您的控制較少。 您可以通過管理界面瀏覽數據存儲區,查看日志文件和性能指標,因為您無法定期訪問目標“計算機”
- 靈活性:低-您部署到沙盒。 您僅限于管理界面為您提供的配置
- 可用性:管理界面還可以(不是很完美,但是我不能說不好)
- 功能:額外功能較少,但仍然不錯–電子郵件,數據存儲,任務隊列,內存緩存等。
- 定價 –通常,您需要為消耗的資源量付費
- 試用:是的,只要您使用少量資源,它是免費的
Windows Azure 。 您可以獲得虛擬機,可以使用遠程桌面/ ssh對其進行管理。
- 常規流程:您創建了一個虛擬機,就是這樣(類似于AWS)。 您還可以使用php,asp或node.js(這是PaaS,類似于GAE)來部署簡單的網站
- 靈活性:VM較高,PaaS較低
- 可用性:管理界面還可以
- 功能:緩存,數據庫,服務總線
- 定價 –細粒度,按需付費或預付費計劃
- 試用:是,兩個月(最小的虛擬機)
Heroku 。 平臺即服務–您可以在沙盒中部署應用程序,并為其他服務提供許多有用的附加組件。 您有兩種類型的“ dyno” –一種為Web請求提供服務,另一種為后臺請求提供服務。
- 常規流程:下載heroku工具帶,運行它(盡管最新版本在Windows上失敗–它安裝了ruby 1.9.2,并且需要1.9.3,所以您必須編輯bat文件),然后使用它來創建和部署應用程序
- 靈活性:低,因為您在沙盒中運行,但是每個加載項都是可配置的,并且有很多加載項,因此它比其他PaaS選項要好。 對于Java開發人員來說,壞消息是它僅通過從git中檢出并使用maven進行構建來支持部署。 沒有其他版本控制系統或構建工具。 (有hg-git適配器,如果使用水銀,您可以嘗試使用它,但是它開始變黑了)
- 可用性:需要命令行工作,但不是那么有用。 Web UI正常。
- 功能:您可以想象的大多數東西都可以作為附件使用
- 定價 –您需要按dyno,每個數據庫和每個附件(如果已付款)付費
- 試用:是的,您每月可以免費使用750個小時-這意味著如果使用率較低,則可以免費獲得
Jelastic 。 平臺即服務僅適用于Java –在沙箱中部署應用程序。 您可以配置體系結構并使用各種第三方服務。 它不像其他服務那樣受歡迎,但是我的應用程序運行很快(在他們的支持下提供了一些有用的信息)
- 常規流程:創建一個應用程序,通過一個不錯的UI選擇一個體系結構(稍后可以重新配置),然后部署war文件。 您配置希望應用程序使用的最大服務器數量。 一切都通過Web UI配置
- 靈活性:低,因為您不能使用ssh。 但是,您可以自由地編輯某些應用程序服務器配置,并且對文件系統具有有限但足夠的訪問權限,還可以配置所使用的每個其他服務(例如,數據庫)
- 可用性:界面相當不錯(我會說比其他更好)
- 功能:您可以使用其他服務-MySQL,MongoDB,CouchDB,memcached和maven構建。 (列表比Heroku提供的要小得多)
- 定價 –您按應用服務器實例和附加服務(MySQL,SSL,負載均衡器等)付費。
- 試用:是的,但只需2周
還有許多其他選項,特別是傳統的托管公司RackSpace ,而云選項只是具有某些“云”功能(如自動縮放)的虛擬機。 我只列出了我實際嘗試過的流行選項(我廣泛使用過AWS,GAE,并在其他三個應用程序上部署了示例應用程序)。 上面的評估并不旨在完整,我肯定在這里和那里錯過了一些要點。
沒有“贏家” –針對不同情況使用不同的選項。 但是,最好知道每種服務都施加了哪些限制,以及采用的方法和總體思路是什么。 因為,尤其是在Heroku和GAE等平臺上,您需要更改對部署的思考方式。
參考: All Cloud:來自Bozho的技術博客博客中的JCG合作伙伴 Bozhidar Bozhanov的 Amazon,Google App Engine,Windows Azure,Heroku,Jelastic 。
翻譯自: https://www.javacodegeeks.com/2012/07/all-that-cloud-amazon-google-app-engine.html