2011-04-19

Google App Engine 簡介

用 Java 寫一個網路應用程式( web app)需要哪些東西?
  1. 首先,當然要會寫 Java,還有要懂得 JavaEE 在 web 的兩大主角,Servlet 與 JSP,如果不想用這麼原始的方式,還要學會 Spring MVC 或者 Struts 之類的 web framework。
  2. 現在應該不會有任何一個 web app 沒用到資料庫,所以還需要 JDBC,或者較好用但複雜的 Hibernate,以及一個真正的 database server,最常用的當然是 mysql 了。
  3. 程式寫完之後,我們需要一個可以執行程式的地方,那就是 web container(或 web server),一般都是用 Tomcat。
  4. 再來就是一台真正的機器,用來執行 Tomcat。
  5. 最後就是對外網路與網域名稱。

前三點要用力學習(也許花點錢),後兩點剛開始要花點小錢買機器、買網路和租網域名稱,但若「不幸」網站廣受歡迎之後,流量大增造成網路頻寬塞車與資料庫效能瓶頸,這時候就得花大錢了。

但是,如果可以將網路應用程式( web app)安裝在 Google 的機器上,使用 Google 網路頻寬與資料庫,那是不是想都不敢想的事?更神奇的的是,要付多少錢才能這麼做?Google 說:不用,一毛錢也不用!

那就是 Google App Engine!


為了搶食現正火紅的雲端大餅,Google 推出了 Google App Engine,簡稱 GAE,在剛推出時,GAE 僅支援 Python,後來才支援 Java。


Google App Engine 到底是什麼?依照 Google 的簡短描述:

在 Google 的基礎架構上執行您的網路應用程式。
建置容易、維護簡單、擴充方便。


在這裡我只看到兩個關鍵字:「基礎架構」與「擴充方便」,也就是說,你只要負責寫程式,機器、頻寬、資料庫都交給 Google 幫你搞定。

你可以使用自己的網域名稱,也可以使用 Google 免費提供的。

真的免費嗎?可以說幾乎是,除非你的網站的真的做起來了(每個月500百萬的網頁瀏覽數),Google 提供一定額度的免費空間,只要不超過這個額度就是免費,即使超過免費的額度,可以啟用計費功能,並可以設定每日預算上限,甚至可以設定每個資源存取的預算分配,Google 只會針對超過的部份收費,費率也是相當便宜。

GAE 提供了一個創意的試煉場所,讓測試創意的成本降到最低,只要你有新想法,只要寫出來,不用額外花任何錢,就可以對外開放進行測試,成功當然很好,失敗了也沒什麼損失。

GAE 不只讓你站在 Google 的硬體肩膀上往上跳,還讓你更上一層,免費使用 Google 的軟體資源:
  • 使用 Google 帳號作為你的帳號管理基礎,不用另行開發一套帳號功能。
  • 使用 Gmail 作為 Email 服務。
  • 使用 Google 超強的網路資源擷取功能來抓別人家的網頁。
  • 將不需要存放到資料庫中的資料存放到記憶體中的 Memcache,使用高效能的 key-value 存取。
  • 基本的影像操作功能。
  • 支援 Server 端常見的 cron 排程管理需求,讓你可以在指定的時間或固定的時間間隔執行背景程式。

完美的 GAE當然有些限制:
  • 不能寫入檔案系統,但可以讀取檔案,僅限於開發者上傳的檔案。
  • 網路應用程式必須在 30 秒內完成 request 處理回傳 response。
  • 目前僅支援 Java 5 與 Java 6。
  • 對於資料庫的使用,僅支援 Java Data Object(JDO) 與 Java Persistence API(JPA),且只能使用 GAE 提供的資料庫。
  • GAE 的資料存放區不同於傳統的關聯式資料庫,所以有些 sql 功能是無法使用的。
  • 每次查詢,最多只能回傳1000筆資料。
最後,收費貴死人的虛擬主機業者要小心了!

    沒有留言:

    張貼留言