可免費佈署Node的雲端平台 - AppFog


AppFog是基於Cloud Foundry所發展出來的雲端平台,算是PaaS,說白了就是類似GAE,但他們沒有自己的data center,完全依靠其它的PaaS provider,如AWS, MS Azure, HP OpenStack等,這是目前很流行的作法。會想介紹AppFog是因為它是少數能免費佈署Node應用的平台之一,而且佈署方式就跟GAE一樣簡單。

AppFog是依使用量來計費(請參考計費說明), 也就是說AppFog只管使用的資源的多寡,與選擇哪個平台無關,不會因為Amazon新加坡和愛爾蘭的而有不同價,使用者也不用自行管理 instance,因為AppFog都包辦了。平台選擇是有三點意義,第一是根據地點來選擇,例如在台灣就可以選Amazon新加坡的data center;第二是根據自己的project技術選擇適合的平台,這方面影響沒那麼明顯,因為只有Azure僅支援Node和PHP,其它的如AWS, HP OpenStack, Rackspace幾乎都支援;第三是使用者可根據系統整合來考量,例如原本就有一些現存的系統佈署在AWS,新系統需要呼叫這些系統提供的服務,那麼新 系統也可佈署在相近或相同的data center。

AppFog在資料庫方面的處理是用綁定"Service"的方式,目前支援MySQL, PostgreSQL(bate), MongoDB(bate),算是RDB和NoSQL DB都有涵蓋到。AppFog提供使用tunneling的方法,讓使用者可用command line來直接操作資料庫,這算是AppFog一個方便的特色功能之一。還有外一個值得提的是特色是附加元件(Add-on)機制,AppFog提供了許多如MongoHQ、MemCachier等方便開發使用的套件(詳細請參考這裡)。

AppFog的免費方案提供以下最基本的服務:
  • Free scalable load balanced apps
  • 50 GB data transfer limit ($0.15/GB for additional resources)
  • Java, .Net, Ruby, Node, Python, PHP, etc.
  • MySQL, Mongo, PostgreSQL, etc.
  • Free Custom Domains
  • Fastest servers available on any infrastructure (Yes we mean m2.4xlarge)
  • Multi-tenant Cloud Foundry instances
  • Amazing customer service with amazing business hours
  • Incredible 24/7 support line add-on available
另外有附註目前SSL僅支援使用AWS。到目前為止,AppFog其實提供了蠻完整的應用程式開發平台,而且參考官方的roadmap,未來還會提供更多的選擇,AppFog有潛力成為一個受歡迎的雲端平台。

Sign In
首先,當然是先申請一個帳號,只需填寫email和密碼,基本上company欄位可以不填,送出就註冊成功了。接著會收到一封註冊成功的通知信,內容包含有quick tutorial,看完一定也會覺得非常簡單。

接著,會自動導引至建立應用程式的畫面,在這邊要說明一下,AppFog提供兩種建立應用程式的方法,一種是用網頁圖形介面,另一種是用af command line tool(之後簡稱af cmd)直接將現存的專案上傳一併建立新的應用程式。af cmd的選項比較詳細,網頁圖形介面則只提供必要選項。這個步驟不一定要馬上做,當然你也可以先試著建立一個應用程式,體驗AppFog簡潔有力的設計。

在網頁圖形介面上建立應用程式只需要3個步驟:

  1. 選擇應用程式類型
  2. 選擇平台
  3. 填寫domain name

New Application - Step 1

New Application - Step 2

New Application - Step 3

Dashboard
成功建立應用程式後,就會被導引到應用程式的管理畫面,使用者可在這邊管理應用程式使用的資源,需注意的是,AppFog所提供的免費額度是所有的應用程式的累加,並非個別計算,例如記憶體免費額度是2G,有十個應用程式,那所有應用程式使用的記憶體的累加就不能超過2G,超過就會開始收費。對instance數量也是一樣,因此可以說應用程式的記憶體是128MB,有10個instance,總共是1280MB;或者單一個instance就使用2G的量。AppFog計算資源的方式可說是非常彈性,給予的免費額度對開發者來說,應該是非常足夠了。

另外,於建立應用程式時自訂的domain name也可在這邊做新增、刪除、修改的動作,所以不用怕不能反悔,這點GAE就比不上了。

DB Service
建立新應用程式時,並不會一併建立資料庫,因為AppFog允許不同的應用程式綁定相同的資料庫,所以需要在建立應用程式後,於Service管理頁面中,由使用者決定要建立新的資料庫或者是綁定已存在的資料庫。用到這裡,真會覺得AppFog是GAE + AWS的大合體,融合了兩邊的優點。

建立新的資料庫也非常簡單,選擇資料庫的類型並給個名稱,送出就完成了。資料庫綁定只是給予該應用程式存取的權限,要真正連線還是需要在程式裏面撰寫,就跟一般的應用程式開發環境一樣,而AppFog會將資料庫連線所需的資訊放在VCAP_SERVICES環境變數裏面(詳細可參考這裡)。到這邊為止,AppFog上的設定可算是完成了。這時你可能會問,建立完資料庫如果想要做設定怎麼辦?這方面就只能依靠command line tool了。由於安全性考量,使用者當然無法直接連線資料庫,AppFog提供tunneling的方式來解決這個問題。有玩過ssh tunneling的人應該可以猜的出來是怎麼做的,也就是AppFog會建立一個叫作"Caldecott"的應用程式,透過這個應用程式開啟一條隧道(tunnel),就可讓使用者操作資料庫的shell,很有趣吧。當然,也為了安全性考量,退出shell就會離開tunnel。這方面就請自行體驗(參考這裡),這邊不多做介紹了。

基本上,AppFog並沒有提供SDK,所以開發環境需要自行建構,但是無需擔心,AppFog並沒有訂定特殊的打包規則,開發者無需改變專案結構。以Node專案為例,唯一需遵守的是,Node server啟動檔案必須是app.js。AppFog支援npm,因此可自行創建package.json檔案,設定應用程式資訊和依賴套件。

我自行製作了一個簡單的Node + MongoDB的應用程式,有興趣的朋友可同步回去。
git://github.com/KevinC1118/appfog-demo.git

留言

熱門文章