一直想要寫一篇來介紹 Heroku,而這篇簡單的介紹堆在 draft 好一陣子了。雖然比不上 @deduce 上週寫的 Ruby語言的雲端運算平台:Heroku 來的詳細,但既然都寫了就貼出來吧 XD
—
常常有人在羨慕 Python 跟 Java 有 Google App Engine 可以用,然後 Ruby 沒有。雖然說 Ruby 可以透過 JRuby 跑在 GAE 上(方案1, 方案2),但是好像不太多人這麼做,為什麼呢? 這是因為 Ruby 社群大多用 Heroku 啊。
Heroku 這家公司提供了與 GAE 類似的 PaaS 雲端服務,讓任何符合 Rack 介面的 Ruby 應用程式可以跑在上頭(所以不只是 Rails,像是 Sinatra 也可以跑在上面),以及提供 PostgreSQL 這套關聯式資料庫和其他許多的外掛服務。它的底層硬體資源是採用了可擴展的 Amazon EC2,透過 Heroku 的 dynos (它的資源單位) 只要拉上拉下就可以增加伺服器負載了,非常厲害,請看 Rapportive 的故事:
想要擁有一個可隨時延展的架構(scalable architecture),你只要選對廠商(hosting provider)就可以做到。如果Rapportive一開始隨便選了一個便宜的VPS,流量一衝進來的時候可能就會像全面啟動電影中Cobb的混沌世界(Limbo)一樣崩潰。Rapportive的服務是放在知名廠商Heroku上,對於突然湧進的流量只需要增加Dynos的數量(Heroku提供服務的基本單位),基本上你是不需要修改你的程式的;當然,程式的優化、調整可以在同樣能耐的硬體等級上容納更多人。
使用Heroku、不需要調整程式、只需要增加Dyno數量?真的有這麼美好嗎?事實上Rapportive就是這麼辦到的,在來自全世界的流量突然湧進時,Rahul Vohra手邊沒有電腦,於是他隨即拿起iPhone並且利用Nezumi這個設計來管理Heroku的應用程式,將Rapportive的Dynos增加到20個,就這麼簡單,可能不到一分鐘吧?!系統的能耐馬上就提昇了。
它的佈署方式採用 Git,所以如果你熟悉 Git,那麼使用 Heroku 真是超級簡單的:
安裝步驟:
gem install heroku
heroku create your_app_name
佈署:
git push heroku master (當然,你的專案必須是 Git repository)
接著打開瀏覽器 your_app_name.heroku.com 就可以看到了。
只要一個指令就可以搞定佈署,它會自動幫你調整 database.yml 檔案。可參考 Heroku Quickstart Guide。根據最新的實地測試,Rails3 也可以正確跑起來。
總而言之,它的優點 1. 支援所有 Rack 應用程式 2. 佈署容易 3. 擴充方便外掛多。相較於 GAE,除了免費方案沒 G 社大方之外,其他毫不遜色啊。
我寫python, 反而比較羨慕ruby, GAE 給的library真的太少太少了.
只是會覺得Heroku也是有點貴就是了 :(