BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Heroku:革命性的Rails托管服务

| 作者 Obie Fernandez 关注 0 他的粉丝 ,译者 胡振波 关注 0 他的粉丝 发布于 2009年5月30日. 估计阅读时间: 6 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

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告诉我他们一开始就获得了付费客户,并且收费策略得到了投资商的支持。他们已经做好了为客户提供强大和持久服务的准备。(Heroku在2008年5月得到了来自Redpoint的300万美金风险投资

查看英文原文:Heroku's Provisionless Hosting for Rails Apps is Revolutionary

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT