新闻要闻-新浪新闻
新闻中心-新闻要闻
[科技]黑客三人行:技术豪赌重构Facebook基础(06/14 16:04)
http://go.rss.sina.com.cn/redirect.php?url=http://tech.sina.com.cn/i/2013-06-14/16048440262.shtml
Jun 14th 2013, 08:04
Facebook工程师帕罗斯基、亚当斯和埃文斯是重构Facebook基础这项艰巨任务的核心人物
导语:美国《连线》杂志网络版周一撰文称,为了沿用最初的PHP代码,并进一步提升网站速度,Facebook必须要开发一款虚拟机。不过,该公司并未聘请微软和甲骨文等传统的系统软件开发商,而是从公司内部挑选了三个人才来从事这项业务,冒着巨大的风险展开创新。虽然几经挫折,但最终还是实现了这一目标。
以下为文章全文:
18号楼位于Facebook加州门罗帕克新总部的边缘地带,绕到后面,就可以看到"作战窑洞"(The Battle Cave)的遗迹。
今天,这里只是开放办公空间的一种延伸,成排的Facebook员工在这里工作。但如果你看看右边的墙上,就会发现有两个曾经放过平板显示器的金属支架。这就是乔尔·珀巴(Joel Pobar)和他的同事们每天追踪进度的地方。
珀巴领导了一支优秀的工程师团队,负责为这个全球最热门的社交网络重建基础。他们至今已经为该项目辛苦工作了三年多,但去年秋天有几个星期,整个项目的进度停滞不前,甚至有可能永远不见天日。他们当时每天都在18号楼后面的这个房间里劳作,几乎每时每刻都在重写代码,希望自己的作品能使用在这个全球最大的网站上。
"作战窑洞"的确名副其实。他们当时不止在努力编写代码,还在跟时间赛跑。与斯坦利·库布里克(Stanley Kubrick)扮演的奇爱博士(Dr. Strangelove)的"作战室"(The War Room)一样,这里的墙上也挂着一对显示器,时时提醒他们注意工作进度,而最终的成果将在Facebook未来的发展中扮演至关重要的角色。
他们后来搬出了"作战窑洞",但那两个金属支架依然保留下来,算是一个小小的提醒,让人们不要忘却Facebook当年的那场豪赌——这场技术豪赌佐证了这家成立9年的企业所秉承的独特态度,该公司创始人兼CEO马克·扎克伯格(Mark Zuckerberg)将其称作"黑客之道"。
"这是一场高风险、高回报的赌博。我们现在的规模巨大,所以要存活下去,必须要冒巨大的风险。"杰伊·帕里克(Jay Parikh)说,他是负责Facebook底层硬件和软件设计及运营工作的工程副总裁。
要理解这场豪赌,先要把时钟拨回到2003年末。如果你看过电影《社交网络》,肯定知道这样一幕:在那段寒冷的岁月里,扎克伯格在哈佛大学的寝室里开始着手开发他的社交网络。
透视"黑客之道"
有关Facebook的创意源自何处,以及扎克伯格当时的目的是什么,至今仍然存在争议。但有一点是确定的:当他着手开发这个网站时,使用了一种名为PHP的编程语言。
在扎克伯格这样的网络程序员中,PHP在2003年可谓风靡一时。这种语言使得他们能以极快的速度开发和改造网络软件,绕过C++和Java等更加复杂的语言。但随着时间的流逝,PHP这种快速开发的特点对Facebook和"黑客之道"的重要性也凸现出来。而正是"黑客之道"的理念不断激励扎克伯格和Facebook向前发展。Facebook的工程师乐于改变,而且乐于迅速改变。PHP为他们赋予了这种能力。
这是一种所谓的"动态"编程语言,无需花时间去定义程序中使用的每个变量的特定参数。"如果你让满满一屋子的开发者编写一款应用,而且他们使用的是动态语言,他们就可以加快任务完成速度。"Facebook工程师基斯·亚当斯(Keith Adams)说。
如今,Facebook在全球拥有超过10亿的用户,专门负责该网站的开发和改版工作的工程师也超过1000人,他们仍在使用PHP。
从某种意义上讲,这令人十分意外。尽管PHP是快速开发的理想工具,但却不太适合规模如此庞大的网站。当你用PHP,而不用C++等"静态"语言开发网站时,可以加快开发进度,但却需要使用更多的服务器来运行网站。所以,倘若用户达到10亿,光是服务器就是一笔不菲的开支。
然而扎克伯格和他的公司却一直沿用了这种语言。他们没有像Twitter那样采用新的编程语言,而是发明了一种新的方式来大幅提升PHP的运行速度。从本质上讲,他们一直都在不断更换网站的基础,但却没有改变网站本身。这就是所谓的"黑客之道"。
2010年,Facebook推出了一款名为HipHop的工具,可以在通过服务器执行代码前,将PHP代码转换成C++代码。与纯粹的PHP代码相比,这种模式处理的流量高出五六倍之多。
"如果没有HipHop,我们可能已经陷入困境。我们所需要的服务器数量很可能超出了我们的能力。"Facebook工程师德鲁·帕罗斯基(Drew Paroski)说,"背水一战最终起到了成效。"
但就在那次涉险过关后不久,帕罗斯基、亚当斯和另外一名Facebook工程师詹森·埃文斯(Jason Evans)决定更进一步,让Facebook永久摆脱这种困境。于是,他们三人达成了共识,决定将PHP的性能提升到更高的水平,把HipHop替换成虚拟机——这种软件可以在该网站的PHP代码和服务器硬件之间产生更大的协同效应。
他们决定放弃将PHP转换成C++的方式,转而将其直接转换成机器代码——也就是服务器芯片所使用的语言——而且会在代码执行过程中完成这一转换。通过实时追踪网站的运行方式,他们可以更好地了解如何将其转换成机器代码,从而最终提升速度。"HipHop似乎完全可以被击败。"亚当斯回忆说。
这个想法很大胆,毕竟HipHop当时刚刚上线,况且开发这种虚拟机是一项规模庞大的任务,通常要由甲骨文、微软和VMware这样的公司来完成。这些公司的目标就是创造这种"系统软件",也就是支撑我们的电脑系统运行的核心软件。
几周内,他们便开始着手开发虚拟机。过了几个月,他们已经取得了足够的进展,获得了公司的支持。最终,Facebook又指派了7位工程师协助他们开发这个新平台,并终止了HipHop的开发。此举凸显出Facebook的黑客文化,同时也显示出该公司近年来所实现的成长。曾经在VMware从事过这类软件开发的艾利·科林斯(Eli Collnis)说:"Facebook通过解决一个极其困难的问题发展了他们的文化。但这同时也标志着该公司的转变,表明他们已经成熟起来。"
唯一的困难在于,当亚当斯、埃文斯和帕罗斯基花了两年时间开发虚拟机后,它的速度仍然落后于HipHop。
Facebook工程师基斯·亚当斯
新Facebook
Facebook最近的发展在亚当斯的身上得到了集中的体现。他从布朗大学毕业后就加盟了VMware,与科林斯一起开发了最复杂的系统软件。VMware的软件可以让企业运行一种与众不同的虚拟机——将一台服务器当做多台服务器来对待——而亚当斯从事的正是这种Hypervisor的软件开发。
据科林斯透露,当英特尔第一次开发与VMware Hpervisor兼容的微处理器时,亚当斯是唯一被派往这家芯片巨头内部的VMware工程师,目的是确保两家公司的技术能够紧密配合。"由此可以看得出他对VMware的重要性。"科林斯说。
亚当斯从VMware跳槽到Facebook似乎令人不解,甚至连科林斯听到这个消息时都感到很意外。不过,这恰恰折射出Facebook的变化。与谷歌、亚马逊、雅虎甚至Twitter一样,Facebook的规模已经十分庞大,需要聘请专门的工程师来重新思考服务器的运作模式。谷歌就自己开发了全新的软硬件,从而大幅提升了全球各地的数据中心网络的速度和效率。现在,Facebook也希望采取同样的措施。
该公司聘请了阿米尔·迈克尔(Amir Michael)等人来开发服务器,还招募了拉格胡·穆尔赛(Raghu Murthy)等工程师开发软件,处理成千上万台服务器间的数据传输。当然还包括亚当斯这样的人才,他2009年正式加盟这家社交网络巨头。
亚当斯一开始为Facebook开发搜索引擎,但他后来遇到了埃文斯和帕罗斯基,他们二人都在从事最复杂的技术。埃文斯毕业于爱达荷大学生物信息学专业,他开发了一款新的电脑内存管理工具。这款名为jemalloc的工具很快被用在Mozilla火狐浏览器上。"他帮助我们将火狐的内存使用量降低了一半。"Mozilla前员工素图尔特·帕蒙特(Stuart Parmenter)说,"他绝对是我认识的最聪明的人之一。"
上一页12下一页
Facebook工程师德鲁·帕罗斯基
与此同时,帕罗斯基也从微软跳槽到Facebook。微软也是一家系统软件开发巨头,帕罗斯基在那里从事.NET runtime的开发,相当于微软C#和VB.NET编程语言的虚拟机。对于亚当斯、埃文斯和帕罗斯基来说,梦想着开发一个能够促进Facebook PHP代码执行效率的虚拟机的确合乎情理。不过,说起来容易,做起来难。
据珀巴和另外两名参与过该项目的人透露,正是亚当斯的据理力争,才说服Facebook高层接受了虚拟机的想法,相信这是最佳的方案。他不仅固执己见,而且理据充分。"他的态度很坚决。"科林斯说,"他加盟Facebook后立刻成为最有影响力的工程师,这完全在我的意料之中。"
最终,Facebook向该项目投入了大量资源,为亚当斯、埃文斯和帕罗斯基指派了更多帮手,包括马克·威廉姆斯(Mark Williams)、欧文·山内(Owen Yamauch)、亚拉文·梅农(Aravind Menon)、布莱特·西莫斯(Brett Simmers)、吉列尔梅·奥托尼(Guilherme Ottoni)和乔丹·德隆(Jordan DeLong),并且组建了以珀巴为首的团队。珀巴本人也是一名经验丰富的工程经理,他同样是从微软跳槽到Facebook的。
但实际耗费的时间远超预期。亚当斯表示,之所以出现这种情况,部分源于他们低估了任务的复杂性,但HipHop的持续改进同样产生了影响。数月以来,他们始终在追求一个飘忽不定的目标。经过两年的发展,他们终于可以用虚拟机来支撑整个Facebook网站的运营,但速度仍比最初的HipHop系统慢三倍。
当亚当斯回忆到这里时,你可以听出他的声音中所蕴含的情感。"至少对我来说,那是一段令人惊慌的日子。"他回忆说,"令我们困惑不已的是,我们无法用任何理论来解释那些额外的时间都花到哪里去了。"埃文斯和帕罗斯基也有相同的感受。"你能够看到他们所承受的压力。"他们的主管珀巴回忆说,"Facebook给他们充分的自由来发展这个项目,但前景却十分渺茫。"
他们继续缩小速度差距,但到2012年夏天,虚拟机的速度仍然只能达到HipHop的65%。"我们就像孕妇,一心等着孩子赶快降生。"珀巴说,"但究竟会发生什么却很难预料。"
于是,他们开始"闭关"。
工程师"闭关"
在高科技行业中,"闭关"可谓家常便饭。整个过程中,某个项目的开发团队都会呆在自己的房间里,直到项目开发完成。"这很常见,我们现在就在进行几次'闭关'开发。"山姆·施莱斯(Sam Schillace)说,他曾经参与过Google Docs办公应用的开发,目前担任硅谷创业公司Box.com工程副总裁。
珀巴把Facebook的虚拟机团队转移到18号楼一层的一个房间内,那里的工程师相对较少。据帕罗斯基回忆,他们甚至没告诉任何人他们在那里办公。"感觉就像是在沙漠里等着别人用直升机营救我们。"亚当斯回忆说,"但随后,我们决定步行走出沙漠。我们并不知道要去向何方,但必须要靠自己的力量走出去。"
数月间,该团队一直在代码中寻找能够立刻解决速度问题的方法,亚当斯尤其焦急。但当他们搬进了"作战窑洞"时,理念却发生了变化。他们不再期待着一劳永逸的方法,而是认真开始逐一排查。
"我们的想法是找到一些小问题,然后迅速展开实验,以确定调整代码能否起到帮助。"帕罗斯基说,"如果实验失败,可以立刻排除,然后迅速选择其他方案。"
"作战窑洞"
在房间的一面墙上,他们将各种方案都列在了一个巨大的白板上,上面贴满了各种便笺,每个便笺都列出了一种有可能改善系统的方法,并按照所要花费的时间进行排序。如果某个便笺上的方法失败,便会被挪到一边。
然后,他们还在白板上安装了两个显示器,实时追踪新系统与HipHop的相对速度。起初,新系统的曲线几乎没有变化。但随着组员们夜以继日的工作,五个星期后,这种细微的调整终于开始发挥作用。
曾经参与该项目的人透露,亚当斯主要负责提出想法,埃文斯则负责编写大量代码,将这些想法付诸实践。而作为PHP专家,帕罗斯基则负责确保这些想法不会偏离轨道,超出这种编程语言的能力范围。
逐渐地,速度曲线开始攀升,在2012年11月6日美国总统大选日当天终于超过了HipHop。那个周末,亚当斯与他当年在VMware的同事科林斯一起骑自行车出去兜风。"我至今对那天的情景记忆犹新。"科林斯说。
为了表达对最初的PHP转换器的敬意,他们将该系统命名为"HipHop虚拟机",简称HHVM。这套系统很快被安装到Facebook网站的底层架构中,并一直沿用至今。
HHVM使用了所谓的"just-in-time"编辑模式,使得Facebook的PHP代码可以在服务器上执行时转换成机器语言。这与Java编程语言的运行方式一样,但Java虚拟机已经诞生多年,而且服务于整个行业的程序员。HipHop虚拟机则是专门针对Facebook开发的。不过,与Facebook基础架构中的很多元素一样,Facebook已经开放了该系统的源代码,方便所有人使用。
"花园州"
借助HipHop虚拟机,Facebook能够以多数程序员从未想过的速度运行PHP代码。但仍有人质疑该公司为何要如此走极端。编程专家大卫·珀雷克(David Pollack)并不认为PHP有助于Facebook提升改版速度。
"PHP语言是针对粗制滥造的网站进行优化的。能用这样一种语言支撑像Facebook这么强大而灵活的网站,的确很了不起。"他说,"但我不认为PHP是建设网站的最佳方式,这就好比新泽西州的居民非要把自己的州称作'花园州'。"
就连亚当斯也承认,虽然他曾经声称动态编程语言更有效率,但在某些情况下却值得商榷。而埃文斯也承认,尽管PHP这样的语言可以在短期内提升效率,但从长期来看,却会加大开发难度。
"静态语言有利于文件编制。"他说,"如果你用PHP这样的动态语言编写代码,等到两年后,你就会失去文件编制。"
当然,Facebook之所以坚持使用PHP,很大程度上是因为,如果用另外一种语言重写整个网站代码,将会面临更加艰巨的任务。这就造成了所谓的"历史遗留问题"。"最终,你的规模导致你不可能彻底重写网站代码。"帕罗斯基说。
但通过与亚当斯等人的对话,不难看出Facebook仍然偏爱PHP。尽管针对这种语言开发新的虚拟机要冒很大的风险,但Facebook不仅愿意冒风险,而且愿意冒他人不敢冒的风险。
"苹果公司重视优雅,谷歌重视规模,微软已经老态龙钟。"施莱斯说,"但Facebook看重创新。他们未必很优雅,但却很有创造力。他们的理念是凭借纯粹的实验和速度击败所有对手。"
很多人或许不理解这种做法,那是因为他们不理解"黑客之道"。(思远)
更多硅谷资讯,尽在《硅谷新视野》
上一页12下一页
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html
You are receiving this email because you subscribed to this feed at http://blogtrottr.com
If you no longer wish to receive these emails, you can unsubscribe here:
http://blogtrottr.com/unsubscribe/L1/fdP4g9
沒有留言:
張貼留言