AWS 和 GAE 有什麼不同?


GAE 的核心部分是受限制的 Python/Java 運行環境,優點是完全不用操心系統維護。主要制肘在於不能運行常駐進程。運行時間超過30秒的請求(或者超過10分鐘的後台任務)需要通過各種方式分割成多個小任務分別執行。這個限制對於很多應用的編寫有很嚴重的影響。GAE 的資料庫部分是基於 Google BigTable 的 Datastore。Datastore 是個非關係資料庫,支持基本的讀寫,但是大部分數據關係需要由上層應用自己來維護。使用起來限制比較多,但設計得當的話可擴展性很高。GAE 按照實際使用的計算、存儲、流量資源計費。

AWS 最核心的部分是 EC2,本質上和普通 VPS 差不多,主要特性是可以在數分鐘內啟動、停止伺服器,並且按實際運行的小時數收費。具體運行上和普通 VPS 一樣,優點是靈活程度很高,可以安裝任何需要的程序;缺點是需要自己管理伺服器上的進程,以及處理伺服器意外終止後的善後工作。AWS 的數據存儲方式比較多:可以在 EC2 上運行各類資料庫(需要自己管理),也可以使用 AWS 的 RDS、SimpleDB 和 S3 服務。RDS 是 AWS 託管的 MySQL 資料庫。SimpleDB 是非關係型的資料庫。S3 提供高可靠的文件存儲服務。EC2 按照伺服器實際運行的小時數計費(閑置的伺服器也是要計費的)。存儲和流量一般按照實際使用量計費,但是資費標準比較複雜,具體請參考 AWS 網站。

簡單來說,GAE 限制比較很多,但是需要操心的維護工作最少。AWS 則是在傳統 VPS 上的升級,維護麻煩,但靈活度高、調整迅速。

Update: 現在隨著 GAE 加入常駐進程、SQL 支持等新功能,在 GAE 也能慢慢實現一些以前不可能做到的應用;另一方面,AWS 也逐漸加入了 GAE 的一些特性,比如託管的資料庫、通知、隊列等服務了。可以說二者在逐漸趨同。


AWS是IaaS (Infrastructure as a Service), 主要提供硬體設備等基礎構架服務,你得自己安裝操作系統和各種伺服器軟體

GAE是PaaS (Platform as a Service), 主要提供軟體運行平台,你只需開發自己的程序即可
另外一種模式是Saleforce的SaaS (Software as a Service), 提供軟體,直接用


從產品的角度來說,本質就是需求不同,使用者的出發點,目的,需求都不同。
如果你想在雲端租台機器,自己玩玩操作系統,搭搭開發環境,今天開發java,明天用.net。那麼請你用AWS,它只提供機器(理解為電腦的硬體),其他工作你要自己做。很自由。一般企業居多。
如果你想在雲端租一個開發環境,已經配好了操作系統,開發中間件,資料庫,我只要寫關於某個或者某中應用的代碼而已,這樣可以高效,專註,我不用是從底層到應用全能的天才,我就可以掙錢了。那麼請你用GAE(國內無法使用GAE,有類似的SAE)。一般個人和小團隊居多。
總之,需求決定產品線。換個角度,不要先看他們能提供什麼,而看我要什麼,然後誰可以滿足我的需求。


簡單說AWS就是虛擬機,是平台即服務。你可以安裝系統、啟動、重啟,有ssh可以訪問。
GAE,是提供一個java或者python運行的開發平台和運行環境,說白了就是他的一個java或者python進程,啟動的是你的運行實例。

現在AWS也開始提供war(Java web achive)形式的java運行環境,你只需要上次部署war文件就能開始運行你的服務了,跟gea比較接近了。


雲服務和應用伺服器,看字面就知道差別大了


gae不支持資料庫也就說存儲都要用他的api去做,aws支持mysql更像vps,給的免費配額都差不多,學習難度少aws &> gae, 功能上 gae &< aws.

GAE和AWS比較的話,還在發展期間,很多功能還在不斷添加。

比如說以前很多的限制,像是沒有python combet server的pushing服務,現在已經有channel API作為替代。而資料庫也已經有了Google Cloud SQL,Google Storage還有BlobStore,BigTable幾種選擇。相信以後相關服務API還會越來越多。

但是在伺服器配置和部署上所花的時間和精力和AWS相比可忽略不計了,AWS在一開始的時候可以說比VPS花的精力要多。

在Quora上的一個回答給我印象很深,GAE的一些限制等於是讓你從一開始就考慮scaling和sandboxing還有其他一些傳統網站到一定規模才需要開始考慮的東西,所以其實也好也不好。

個人比較喜歡在GAE上開發一些小的應用,大一些的話在優化和實現程序上花的時間要很多,但是學到的東西也不少,就算移到傳統平台我想我也會留下那些習慣。


推薦閱讀:

知乎和 42 區有什麼不同?
庫里與湯普森的三分技術有哪些不同?
大家有什麼一直寫錯的字?
漢堡包和三明治的區別是什麼?
綠茶粉和抹茶有什麼不同?

TAG:雲計算 | A和B有什麼不同 | GoogleAppEngine | AmazonWebServicesAWS |