Fork me on GitHub

Programming Design Notes

放棄 Google App Engine 轉投 Amazon Web Service

| Comments

自從 Google App Engine 轉換收費模式後,已經計劃將現有的 Project 放到 Amazon Web Service 上,以前選用 GAE 的原因是因為便宜,而且有免費使用量。雖然限制很多,但我並不介意這些限制。例如將現有的 Application 移植到上 GAE 上是一件非常痛苦的事,JPA 有一大堆東西不能用,大部份 Entity 要重新規劃,資料移植又是另一件痛苦的事。因為每一個 HTTP Request 也有 30 秒限制,上傳檔案又要另外寫一次。因為價錢便宜,我不介意改。

現在 GAE 有新的收費模式,不是以前只計 CPU Hour 的方式,是一個小時一個小時地計算。向 Datasource 存取資料又另外收費,新的收費模式:

新的收費模式很像 Amazon Web Service,我最不能接受的是 GAE 也跟 AWS EC2 以小時計算費用,EC2 收費如下:

EC2 一個小型 (Small) Virtual Machine 一小時才 $0.085 USDGAE 一小時也要 $0.080 USD,但 GAEVirtual Machine 全自動起動的,即是說你不能控制機器數目,雖然你可以設定 Max Idle Instances 數目,但系統在需要時也一樣會新增比你設定的最大數目還多的機器 (我試過好幾次)。如果你起動了 2 台機器,就是 $0.080 USD * 2,一小時收費 $ 0.16 USDEC2 是可以一台機器放置多個 應用程式,而 GAE 只可以一台機器放置一個應用程式,還是 EC2 比較化算。

最後如果你仍然選擇留守 GAE,這裡有幾個方法可幫助你省錢:

1. 在 appengine-web.xml 加上:
<threadsafe>true</threadsafe>

可以令你的機器同時處理多個請求 (Request)

2. 設定 Max Idle InstancesGAE 盡量不起動超過這個數量的機器
3. 設定 Min Pending Latency 在機器處理一個請求超過這一個時間才新增機器 (其實我覺得這個設定很雞肋,每一個請求時間也不一樣,又不可以設定太高,亦不能設定太低)
4. 盡量用多一點 Cache ,減少存取 Datasource