InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Heroku:革命性的Rails托管服务

作者 Obie Fernandez 译者 胡振波 发布于 2009年5月29日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
云计算 ,
Ruby
标签
扩展性 ,
PaaS ,
Ruby on 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告诉我他们一开始就获得了付费客户,并且收费策略得到了投资商的支持。他们已经做好了为客户提供强大和持久服务的准备。(Heroku在2008年5月得到了来自Redpoint的300万美金风险投资

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

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。