Heroku:革命性的Rails托管服务
Heroku的Rails主機托管解決方案在歷時一年的免費測試階段之后,商業版終于在上周登場。他們宣稱他們提供的是“無需準備的部署服務”,因為操作和擴展都是自動的,無需任何系統管理。雖然相較于其它服務商而言Heroku目前的價格較高,而且由于它(目前)基于Amazon的EC2云計算平臺,因此相應地受到Amazon服務等級協議的限制,但我們認為他們提供的服務是可靠的,值得進行進一步研究。
上個禮拜我的兩個工程師和我一起訪問了Heroku的創始人之一James Lindebaum,以了解他對Heroku的看法。James愉快地稱他的公司是由一群Ruby愛好者組成的。一年半之前,他和他的合伙人Adam Wiggins和Orion Henry在得到了YCombinator的支持之后,致力于創建一個超級方便的Rails部署服務。我們認為他們所完成的工作無異于一場革命。
受益于Heroku,Ruby的web應用程序部署變得異常簡單:所有的工作只是在終端上輸入少許命令。無需郵件,無需電話,也無需技術支持(support ticket)。我們已經開始在Hashrocket使用Heroku來托管我們的內部執行環境,我可以證明,這是一種你從未經歷過的部署體驗。Heroku一出現,Capistrano即行將就木了。在完成注冊,并在Heroku的云計算平臺上創建一個新的應用實例之后,部署僅僅是一句:git push heroku master。
這個push命令觸發了一個進程:把應用程序編譯成一個獨立的、只讀的實例,在Heroku里它被稱為“slug”。它會自動地進行測試來保證它能正常地啟動。被依賴的gem會被自動安裝,并且通過應用程序根目錄下的一個.gems manifest文件進行維護:這是與普通的Rails應用程序的唯一不同之處。同時需要指出的是,Heroku也支持Merb和Sinatra(實際上是任何一款Rack)。
一旦push成功,slug就在一個或多個slot中被實例化。這些slot將置于一個特殊設計的網格計算環境中,slug在這個環境中可以訪問數據庫和緩存信息,并且開始啟動。Heroku唯一支持的數據庫是Postgres。據James說,Heroku之所以目前不支持MySQL,是因為它還不支持事務型數據描述語言(transactional DDL)的執行。
slug激活后,就成為了一個擁有完整功能的web應用,它被稱作“dyno” 。每個dyno都是網格中服務器的一個單獨進程,它包括了應用程序代碼、框架、中間件、Rack、應用服務器、Ruby虛擬機以及POSIX環境。Dyno使用的應用服務器是經過少許修改的Thin,系統分配給它250M內存。
為適應不斷變化的需求,Heroku可以在網格中其它地方啟動新的完全獨立的dyno,或者關閉那些閑置的dyno。Dyno的啟動時間還不到2秒,這足以證明Heroku的平臺空前的強大。為了滿足更高需求而啟動新的dyno實例時,Heroku特制的路由系統可以在把新的請求“凍結”。四個dyno的計算性能相當于傳統環境中的一臺服務器的計算性能。
Heroku 的網格本身建于一個強大的云計算環境中,這樣它可以根據需要的dyno數量方便地進行擴展或者縮減。網格上層是一個成熟的高并發路由網絡,它承擔了把請求分派至dyno的工作。還有一些額外的元件,比如HTTP cache和memory cache,它們分別用來減少對dyno和數據庫的訪問。
據James說,Heroku的路由網絡是擁有專利的,并且是Heroku中一個很具創新性的部分。起始時路由網絡被實現成Nginx C-modules,一直工作地很好,直到Heroku上部署的應用超過了10,000個之后,性能開始吃緊。現在的路由系統是用Erlang編寫的,并且工作得非常好。
Heroku自身也托管于EC2的一組實例之上。我問James,相比于直接使用EC2,Heroku的費用會貴多少。他發現他難以回答我的問題,因為Heroku包含一個完整的系統架構,每一個應用都需要復制成6或者7個EC2實例,所以要在兩種服務之間進行價格比較是很困難的。另一方面,相較于EC2部署服務而言,dyno方便的啟動和關閉節省了很多管理費用。
Heroku根據用戶使用資源的數量來收取費用,它的定價模式適應所有層次用戶的需求。有各種層級的價格來適應所有人的需求,高至每月百萬級別訪問量的企業級大型應用,低至入門級的用戶。每月價格從幾千美金到一百美金不到,而且Heroku為測試和快速原型提供免費服務。
Heroku的服務在測試延長階段已經經過了實戰測試,那時在它上面部署了由23,000多名開發者開發的超過25,000個Ruby應用。保守估計,這已經使Heroku的使用量十倍于第二大的Ruby應用部署服務提供商。雖然商業版剛剛登場,但James告訴我他們一開始就獲得了付費客戶,并且收費策略得到了投資商的支持。他們已經做好了為客戶提供強大和持久服務的準備。
原文網址:http://www.infoq.com/cn/news/2009/05/heroku-provisionless-revolution
總結
以上是生活随笔為你收集整理的Heroku:革命性的Rails托管服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: domino升级-602-651-851
- 下一篇: [小结]硬盘分区的知识与意义