看三名工程师如何重建Facebook基础

看三名工程师如何重建Facebook基础

北京时间6月12日消息,《连线》杂志网络版近日刊载文章,讲述了三名Facebook工程师是如何重建Facebook基础的。

以下是这篇文章的主要内容:

在Facebook位于加利福尼亚州门罗帕克的新公司总部的边缘地带有一幢18号楼,走到这幢楼的背面,就会发现所谓“战斗洞窟”(The Battle Cave)的遗迹。

今天,这个房间只是开放式办公空间的另一种延伸而已,成排的Facebook员工在这里工作。但如果你看看右手边的墙面上方,那么就会看到两个金属支架,这两个支架曾托起一对平板显示屏,那就是乔尔·珀巴(Joel Pobar)及其组员追踪其每日进度的地方。

珀巴领导着一个最好的工程师团队,这个团队的任务是重建Facebook这个全球最流行的社交网络的基础。到现在为止,他们已经辛辛苦苦地为这个项目工作了三年多。在去年秋天,这个团队的工作一度陷入了停滞状态,而且似乎永远也无法看到光明。在这段为期几个星期的时间里,他们一直都在18号楼北面的这个房间里“蹲点”,几乎把醒着的所有时间都用来写代码和重写代码,努力设法磨练自己的创造力,以便驾驭Facebook这个全球最大的网站之一。

这个房间之所以被叫做“战斗洞窟”,有着很好的理由。工程师们不仅是在跟软件代码“战斗”,同时也是在跟时间战斗。跟斯坦利·库布里克(Stanley Kubrick)扮演的奇爱博士(Dr. Strangelove)的“作战室”(The War Room)一样,工程师们在“战斗洞窟”里也通过高高挂在墙上的两个显示屏来追踪自己的工作进度,这两个显示屏会不断地提醒他们牢牢记住距离完成自己的工作还有多远,而他们从事的工作被视为打造Facebook的未来。

从那以后,这些工程师已经搬出了“战斗洞窟”,但那两个金属支架则留了下来,它们可以提醒在这里工作的员工时常想起Facebook押下的重大赌注——公司创始人兼首席执行官马克·扎克伯格(Mark Zuckerberg)喜欢把这个赌注称作“黑客之道”(The Hacker Way),这是个技术性的赌注,可以作为这家成立至今已经九年的社交网络公司所独有之心态的例证。

“那是一个高风险、高回报的赌注。”杰·帕里克(Jay Parikh)说道,他是Facebook的工程副总裁,负责支撑Facebook运作的硬件和软件的设计和操作等事务。“我们现在的业务运营规模十分庞大,因此必须冒上很大的风险才能生存下去。”

想要理解Facebook的这个赌注,那就必须首先把时钟拨回到2003年底。如果你看过《社交网络》(The Social Network)这部电影,那么就应该会对这个日子有印象:在那个寒冷的日子里,当时身处美国东北部地区的扎克伯格坐在自己的哈佛大学宿舍里,首次开始致力于构建自己的社交网络。

黑客之道

就Facebook最初的想法来自何处、扎克伯格最终尝试做些什么以及其他一些问题而言,还多少存在某些争议,但有一件事情则是可以肯定的:当扎克伯格坐下来开始构建这个社交网络时,他使用的是一种名为PHP的电脑编程语言。

在扎克伯格这样的网络程序员中,PHP在2003年时曾风靡一时。这种编程语言给程序员们带来了一种迅速开发和再开发网络软件的方法,在C++等较为复杂的编程语言以外提供了一条捷径。而随着时间的流逝,PHP语言可令程序员迅速开发软件的本领对Facebook及其“黑客之道”来说的重要性将会变得更大;“黑客之道”是一种不断迭代的哲学,一直都是推动扎克伯格及Facebook前进的动力。Facebook工程师喜欢改动东西,而且喜欢迅速改动,而PHP语言能让他们做到这一点。

PHP是一种所谓的“动态打字”的编程语言,也就是说程序员不需要花时间定义程序中每个变量所需要的特定参数。“如果你让 一屋子的开发者开发一个应用,并让他们使用一种动态语言,那么他们能在较快的时间里完成。”Facebook工程师凯斯·亚当斯(Keith Adams)说道。今天Facebook的全球用户人数已经超过了10亿人,有1000多名工程师正致力于建设和重建这个网站,而他们仍在使用PHP语言。

从某种程度上来说,这令人感到惊奇。虽然PHP语言很适合迅速开发软件,但不太适合运行像Facebook这样规模庞大的网站。当你用PHP代码——而不是使用C++等静态语言——来建设一个网站时,速度上确实可以快很多;但你将需多得多的服务器才能运行网站,而当网站用户达到10亿人之多时,那么这些服务器将会带来庞大的费用。

但是,扎克伯格和Facebook程序员还是坚持使用这种编程语言,他们没有像Twitter程序员那样改用新的语言,而是发明了新的方式来以超快的速度运行PHP语言。实际上,Facebook一直都在替换网站的基础,但却没有改变网站本身。这就是所谓的“黑客之道”。

Facebook在2010年推出了一种名为“HipHop”的工具,这个工具能把PHP代码转换为C++代码,然后再Facebook的服务器上执行。随后Facebook对这个工具作出了改进,结果是利用转换后代码运行的网站能承载相当于纯PHP代码网站五倍到六倍的流量,而服务器数量不变。

“如果没有推出HipHop,那么我们可能已在某个时刻陷入了困境,因为当时我们很可能需要更多服务器来运行这个网站,但且无法及时地获得那么多的服务器。”Facebook工程师德鲁·帕洛斯基(Drew Paroski)说道。“那就像是一个‘万福玛利亚传球’(美式橄榄球术语,指成功率很低的长距离直传,一般在比赛快结束时候使用,孤注一掷地传出去以求在最后的时刻得分,剩下的就只有祈求圣母玛利亚保佑),让我们得以涉险过关。”

但在那次涉险过关以后不久,帕洛斯基、亚当斯和另一名Facebook工程师贾森·埃文斯(Jason Evans)决定,他们要做到更好,不再让Facebook面临这样的险境。有天下午,这三名工程师达成了共识,认为如果他们用虚拟机来取代HipHop,那么Facebook就能把PHP的表现提升至更高的水平。所谓的“虚拟机”其实是一种软件,能在网站的PHP代码和运行网站的服务器硬件之间提供更大的合力。

帕洛斯基等三人没有把PHP语言转译为C++语言,而是将其转换为原生机器代码——也就是服务器芯片所“讲”的语言。他们对网站实时执行的方式进行了追踪,然后有了一个更好的想法来将PHH代码转换为原生机器代码。亚当斯回忆道:“HipHop看起来很容易被击败。”

这是一种大胆的想法,特别是要考虑到HipHop才刚刚上线而已。构建这样的虚拟机是一项十分庞大的任务,通常情况下应该由甲骨文、微软或VMware等软件公司负责实施,这些公司都拥有创造这种“系统软件”(在电脑内部核心运行的软件)的目标。

三人在随后的几个星期时间里一直都致力于开发虚拟机,几个月后取得了足够的进展,从而获得了Facebook对这个项目的支持。到最后,Facebook管理层指派了其他七名工程师跟帕洛斯基等三人一起开发这个新的平台,同时停止开发HipHop。这一举动凸显了Facebook以黑客为中心的文化,同时也表明这家公司在过去的几年时间里取得了多大的成长。“Facebook能在解决一个非常困难的问题的同时还保留自己的文化联系。”科技巨头VMware负责开发这种软件的艾里·柯林斯(Eli Collins)说道。“这同时也标志着这家公司的转变。”

唯一的问题在于,在亚当斯、埃文斯和帕洛斯基三人花了两年时间开发这种虚拟机以后,其速度已跟不上活跃网站的需求。

看三名工程师如何重建Facebook基础

Facebook工程师凯斯·亚当斯