我联系上了twitter团队的开发者之一Alex,询问他是否可以回答我五个问题。Alex不仅回答了这些问题,而且开诚布公。感谢Alex!
- 你在Twitter团队最后怎么样了?可否透露一些你的背景?
==============================================
相 当简单:他们于2006年末在博客上发布信息说要招募人员,而且我把握了机会!我想我和他们通过几个小时的twitter通话来通过面试。今年早些时候我 做的是twitter上的业务联络,在Obvious办公室工作了一星期之后,在这个月一开始我终于获得了一份全职工作。我在四月中期搬出旧金山,迫不及 待和团队其他成员一起离开那里。
我生命的大部分时间都是在华盛顿哥伦比亚特区度过的。每个人都可以猜想,居住在一个国家的首都意味着每件事情都和政治有所牵连。我早期的大部分工作是为各 种非盈利、非政府组织、盈利目的的竞选活动(for-profits supporting campaigns)开发web应用。我也做过一些信息安全工作(信息安全产业在哥伦比亚特区是无所不在的)。我像许多程序员一样是从PHP转向 Rails开发的,但是我从来都不是一个技术纯粹主义者。在Rails上市之前,我考虑和一个朋友在几年之内开发一些基于Ruby的博客软件,那个时候 Ruby对于web开发者而言还不够友好。当Rails初次映入眼帘的时候,我记得当时我想,“酷,有人把Ruby变得易于开发web应用了!”。于是我 在Rails早期发布时就转入这方面的开发。
- Ruby on Rails是如何支撑负载提升的?
=======================================================
从各种角度看,Twitter都是现在线上最大的Rails站点。运行Rails迫使我们处理规模相关问题- 任何成长中的站点最终都将疲于应付的问题- 那时我还没考虑我们应该架构另一套web框架了。
此时,在Rail社区里有关规模问题的通常解答是:规模就是消耗:扔进去更多的CPU。问题在于更多的Rails实例(在我们的案例里,它们运行于mongrel cluster)意味着更多的数据库请求。就这一点而言当时Rails还没有办法同时访问多个数据库。解决方案是缓存每个字节以及安装多个只读的辅助数据库,二者都不是很快就能实现的修正方案。所以这不光是成本的问题,还是时间的问题。当人们不能打开你的站点时,时间就更为宝贵。
这些规模问题的解决都不像开发Rails那样好玩和轻松。所有Ruby提供的简便方法和语法糖使Rails对开发人员而言变得如此轻松,但最终却变成绝对 的惩罚,牺牲了执行效率。一旦你到达了网络流量的阀值,你必须剥掉所有Rails为你提供的消耗性能的漂亮外衣(RJS、ActiveRecord、 ActiveSupport等等)或者移除程序中运行速度迟缓的部分,或者连Rails一起移除。也值得一提的是,对每个人而言毋庸置疑Ruby本身执行 速度慢。人们基于该语言努力创建更为快速的实现方案这本身很伟大,但是就现在而言,它很难。如果你准备部署一个巨大的web应用程序,并且你是个语言不可 知论者,要知道相同的操作下,Ruby会比Python消耗更少的时间。我们开发Twitter的所有人都痴迷于Ruby,但是我认为值得坦白的是,这不 属于那些语言之间的相对论问题。Ruby的确慢。 - 往开发环境里添置硬件会多么困难?
==========================================
我们把程序托 管于Joyent,他们使“扔进去更多的CPU”这一解决方案变得很容易实现。一般来说,我们可以在几个小时内获得新的服务器容器供应。我喜欢用亚马逊 EC2来测试尖峰负荷,但是预期的数据库传输延迟被禁止使用( the prospective database latency is prohibitive)。
- 现在Twitter的路线图有多大?你们准备加入多少特性?
==================================================
本来不想躲躲闪闪,但是现在很难说清楚。我们想做的有很多,但目前仍在维护一个简单的、集中的、易于使用的服务。许多人对小组的特性很感兴趣,而这一特性确实在我们考虑范畴之内。还会推出许多有意思的东西!
- 你怎么看待Twitter对博客社区、即时通讯、短信服务和电子邮件的影响的?
==================================================================
我不认为Twitter是blog的替代品,就像我不认为blog可以替代日记一样。就传达想法给一个观众,一对多而言,Twitter特别适合于那些特 别的想法,虽然简单但意义深远,Twitter并非从回复的原始进程中获利(and don’t benefit greatly from an in-place thread of replies)。对更多个人更新(一些人可能会说那是琐事更新)而言,我认为Twitter会比blog更适合。人们不可避免地想谈论他们的猫咪,但是 你真的想让人们用超过140字符的长篇大论来谈论他们的猫咪吗?
我认为Twitter真正的力量在于根据用户的奇思妙想连接不同的媒体。即时通讯、短信服务、电子邮件,web只是在Twitter连接的情况下的传输工 具而已。一般来说,你不得不出去办事并通过任何媒体来获得信息。利用Twitter,信息可以通过你所选的媒体自动传达给你。或者说,如果你想要一点空 间,你可以轻易关闭信息通过简单的键入“off”命令。那真的很强大。











(五个问题)对话Twitter开发者:Alex Payne
翻译:

lawrence 状元 | Blog
还应该翻译 Ruby on Rails 的作者 DHH 的这篇回应:
http://www.loudthinking.com/ar...
以及 Mark Pilgrim 的讽刺:
http://diveintomark.org/archiv...
04/19/2007
pongba 贡生 | Blog
Sorry, I can't help noticing that the following sentence is mis-translated:
> ... realize that the same operation in Ruby will take less time in Python.
Original Trans:
> ...要知道相同的操作下,Ruby会比Python消耗更少的时间...
But actually it's exactly the opposite.
04/20/2007
雷声大雨点大 大学士 | Blog
pongba看得仔细,肯定是个中高手,看出问题来了去对照了原文。小狼,是"take less time in"而不是"take less time than"。
04/20/2007
ppip 探花 | Blog
大概应为python事实上应该比ruby快才对:)
05/01/2007