88250

          Java

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            82 隨筆 :: 0 文章 :: 5 評論 :: 0 Trackbacks

          GAEAmazon WS

          最近一個潛在客戶要求我們比較一下 Amazon EC2 和 Google App Engine,正好我們剛剛在 EC2 和 Google App Engine 上完成了兩個相對來說規模較大的項目,因此有必要做一下總結。

          我打算從三個角度來對比這兩大云計算平臺:技術,業務和未來發展趨勢,本文是技術方面的對比,ok,準備好咖啡,我們開始吧!

           

          如果按平臺類型來分,大家可能已經知道Google App Engine屬于PaaS(平臺即服務),而Amazon EC2屬于IaaS(基礎設施即服務),Amazon EC2給你一個安裝了操作系統的“盒子”,你可以自己安裝應用程序,也可以使用AMI(Amazon Machine Image),如果你想構建一個高度復雜的定制應用,Amazon EC2是不二之選,它允許你控制環境參數,底層操作系統,存儲和網絡需求,從技術上講,它屬于很底層的服務,你可以調整你需要的大部分東西。

          Google App Engine給你一個完整的平臺,包括完整的SDK(以及Eclipse插件)和服務,你可以構建和部署你自己的應用程序,但你不能很好地控制操作系統, 硬件和存儲,諸如寫文件系統,使用線程等操作都有限制,這樣設計的目的是為了確保平臺不會被某個應用程序綁架。

          簡單起來就是:

          IaaS:原始硬件(處理器,網絡和存儲)

          PaaS:操作系統,系統軟件,開發框架和虛擬機。

          下面從技術角度來比較一下這兩個平臺。

          1、提供的服務

          Google App Engine憑借豐富的服務擊敗Amazon EC2,Google App Engine提供的服務可以讓開發人員快速進入開發狀態。如 Blobstore,Images,Mail,Memcache,Multitenancy,Oauth,Task Queues,URL Fetch,Users,XMPP這些服務在Amazon EC2上是需要自己安裝的,為了便于比較,假設你已經為Memcache,Mail和多租戶搭建好了基礎設施,看看在EC2上你用了多長時間安裝,我敢打 賭你會超過一個小時,使用Google App Engine時,這些服務都是現成的,就象果盤中插好牙簽的水果一樣,你可以隨時享用。

          2、管理

          Google App Engine再次勝出,因為一旦你的應用程序部署成功后,它幾乎不需要管理,當你的應用程序負載變大時,你不需要向服務注入新的實例,Google App Engine可以自由擴大負載能力,新實例是實時剝離的。使用Amazon EC2時,你必須時刻跟蹤通信流量(現在可以通過腳本自動跟蹤了),新實例是在你的配置基礎上剝離的,因此,如果我的峰值負載是2x+y,那么需要剝離2 個以上的應用程序服務器。

          此外,使用Google App Engine升級應用程序服務器實例,安裝新的負載均衡器時,沒有管理開銷,這一切都是自動執行的。

          3、抽象水平

          和上一條聯系緊密的是抽象水平,Google App Engine抽象得比較好,你只需要關心你的應用程序和業務邏輯,不用擔心底層基礎設施的管理,正如Nick Johnson所說的那樣,抽象水平應作為挑選云計算平臺的一個基本原則,你需要做的是駕駛,不需要研究引擎蓋以下的東西。在我看來,如果你的核心業務是 貨物運輸,那么你應該買一輛卡車,它能高效地把你的貨物從A地運輸到B地,相反,你不應該考慮如何購買零部件自己組裝一輛卡車。

          在軟件開發領域,我們看到有Grails,RoR等框架,它們大受歡迎,是因為它們提供了高水平的抽象,如果你是一名泥瓦匠,它們就象是腳手架,你可以踩在它們上面干你的工作。

          4、可靠性

          從我個人的認識來講,兩者都很可靠,這一點從它們的用戶數量就可以知道一二,用戶可以時刻查看Google App Engine的狀態,它是透明的,但從歷史數據來看,Amazon EC2的正常運行時間比Google App Engine要好。

          5、可移植性

          從使用的底層操作系統和開發框架來看,Amazon EC2具有更好的可移植性,但也不要擔心你會被Google App Engine給鎖住,Google已經給出了遷移指南,指導你如何從轉移出Google App Engine平臺,當然包含你所有的數據在內。還有AppScale這樣的程序可以幫助你將Google App Engine上的程序轉移到Amazom EC2或其它云平臺上,AppScale已經可以支持EC2,Eucalyptus,Xen和KVM。

          6、存儲

          Google App Engine目前嚴重依賴于BigTable,開發人員需要從一個完全不同的角度來認識和學習它,特別是對于那些特熟悉關系數據庫,被關系數據庫理論束縛 的人更需要洗洗腦,它提供了一個JPA&JDO訪問接口,但它不支持所有的JPA&JDO功能,特別是關系部分,Google最近也高調 宣布要讓Google App Engine支持傳統的SQL數據庫。Amazon EC2已經支持SQL數據庫,你可以使用Oracle,MySQL等你所熟悉的關系數據庫。

          7、應用程序維護和升級

          對Google App Engine來說,應用程序維護和升級是件輕而易舉的事,它為各種應用程序提供了一個詳細的管理面板,包括日志查看器和數據查看器,一個程序可以有多個版 本,當新版本經過測試,可以用于生產環境時,你可以將其設為默認的版本,而Amazon EC2就麻煩多了,因為它屬于IaaS類型,所有維護和升級相關的事情你必須親力親為。

          8、開發限制

          使用Google App Engine時,你必須受到平臺的限制,如果你的查詢處于僵死狀態,很難將其殺掉,此外,Google App Engine沒有線程,提供的SDK也是受限的,有些類和功能被列入黑名單,因此不能被使用,也不能寫文件系統等等。

          從表面上看這些限制是不可理喻的,但如果有朝一日你也要提供PaaS類型的平臺時,你就能理解為什么Google要做這些限制了,這樣才能確保運行 在平臺上的應用程序不會違反平臺的規則,否則平臺就可能被應用程序綁架,從而變得不可使用,平臺上的其它應用程序就會收到牽連。

          即便有這些限制,90%的商業應用程序仍然可以在Google App Engine上正常運行,但對于那些要使用線程,或寫文件系統的應用,最好還是選擇Amazon EC2,因為它提供了所有底層訪問和控制權。

          9、語言支持

          截至目前,Google App Engine支持Java和Python,但任何可以轉換成字節碼,可在JVM上執行的任何編程語言都可以在Google App Engine上運行,如果你喜歡其它編程語言,最好選擇Amazon EC2,因為你可以在它的操作系統上面安裝語言運行時環境,你擁有幾乎完整的硬件和操作系統控制權,還有什么不能做的呢?在Amazon EC2上也托管了許多有趣的C#,.NET,ASP.NET MVC/Visual Studio項目,具有諷刺意味著的是,盡管還有Microsoft Azure,但許多以MS技術開發的項目卻托管在Amazon EC2上。

          概括地說,Amazon EC2是進入云計算的早期嘗試者,它利用互聯網標準和開放平臺創建了一個非常靈活的云計算平臺,Google則利用了它在大型數據庫方面的研究成果和它內 部實現的一些技術創建了一個強大,但有更多限制的云計算環境。從核心技術來講,Amazon EC2允許你擴展任何計算機實例到多個實例,因此你擁有每個虛擬盒子的完全控制權,Google App Engine從操作系統抽象而來,沒有計算機實例的概念,如果你的Web應用程序不需要操作系統相關的功能,那么Google App Engine無疑是最好的選擇,如果需要更好地控制你的系統環境,特別是操作系統相關的控制,那么最好選擇Amazon EC2。

          原文名:Comparing Google App Engine and Amazon EC2 on Technology 作者:Vikas Hazrati



          本文是使用 B3log Solo簡約設計の藝術 進行同步發布的
          原文地址:http://88250.b3log.org/ec2-vs-gae.html
          posted on 2010-12-22 15:21 88250 閱讀(155) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 望江县| 枞阳县| 承德县| 瑞丽市| 崇信县| 潜江市| 渝北区| 和田市| 沙坪坝区| 中牟县| 新野县| 彝良县| 赣榆县| 武陟县| 大荔县| 丰县| 乾安县| 德昌县| 康马县| 三亚市| 泸州市| 九龙坡区| 仁寿县| 鹿邑县| 鲁山县| 临江市| 台北县| 成都市| 福安市| 托里县| 永德县| 明光市| 江孜县| 宜丰县| 合阳县| 崇礼县| 奉节县| 八宿县| 沙河市| 凌源市| 阳朔县|