无法扩展,你就输了
所有病毒循环公司在扩张过程中都会遇到各种各样的问题,有时他们不得不为此发明出新的技术方法,但不是所有公司都能在尝试中成功。
在MySpace和Facebook诞生之前,一位刚刚三十出头、自称“犹太裔高科技怪才”的小伙乔纳森·艾布拉姆(Jonathan Abrams)曾于2002年推出了交友网站Friendster。艾布拉姆建网站的初衷很简单,不过是希望在被女朋友“甩了”之后再得到一个“泡妞”的机会。可是单纯的泡妞约会网站让人感觉诡异,而他自己也想知道有没有什么办法能够把“真实生活的情节”搬入虚拟恋爱当中来。为了做到这一点,他向Match.com借鉴了开设用户主页的想法,并为朋友间的主页设置了链接。他相信这样一来,人们线上线下的行为便会更加一致。艾布拉姆窝在公寓里,利用自己坐在大号矫形床垫上看电视的时间间隙编出了整个程序。这样,一个彻底颠覆了人们对自我社会关系理解的网站就此诞生了。
从若干投资者处募集到40万美元启动资金后,艾布拉姆于2003年3月推出了自己的网站,并向20位朋友发出了邀请。受到邀请的朋友们又带来的新的朋友,如此反复,网站终于进入了独立成长的阶段。每打开一张用户主页,该用户与其他用户的关系都会被分作四个等级表示出来。有时,这一串串关系就能带出一张涵盖成百上千人的关系网。“这样做的效果,就是让用户生动地体会到了他们是怎样融入到自己的社交群体和整个广阔的世界的,”马克斯·查夫金(Max Chafkin)在《Inc》杂志上写道:“看样子,艾布拉姆已经发明出了一款让我们实现自我认知的软件。”
根据专门的评分服务商Alexa提供的数据,3个月内,共有53.2万名访问者登录了Friendster。第二个月,这一数字跃升到了67.5万人,艾布拉姆也拉来了100万美元的风险投资。8月份时,访问人数达到了96.2万人。发布7个月后,Friendster成了100个最受欢迎的英语网站之一,吸引了世界各地的大学生们。但如此疯狂的增长却引发了技术上的混乱。如果你的用户人数只有10名、100名、1000名甚至100万名,制作用户联系人图形网并将其按亲疏程度分成4个级别还不是什么问题。
艾布拉姆实际上却制造了两个病毒循环,并失去了对这两个循环的控制。第一个循环是用户数量的增长,它已经步入了病毒式增长的模式。第二个循环的内容是四级关系的划分,其增长速度更超前者。“由于这项功能并没有内在的可扩展性,用户数量的增长成倍地放大了规模扩展的难度。”前Facebook执政官、现基准投资普通合伙人马特·科勒(Matt Cohler)说道。
用户每点击一次Friendster,艾布拉姆的服务器就需要进行100万兆次运算,为此,他不得不使用拥有百万兆字节运算能力却价格不菲的随机存取存储器。如此一来,整个网站变得漏洞丛生,高峰时期更需要好几分钟的时间才能打开网页。饱受折磨的用户向公司发邮件投诉,却因为Friendster仅有的几名员工早已忙得不可开交而从未收到过回复。由于不满艾布拉姆要求对语言和图片内容进行审查的规定,不少员工离开了Friendster。
2003年8月,艾布拉姆在Friendster个人主页上列举的兴趣还包括品酒、聚会、交友和绘画。可到9月份的时候,他的兴趣栏上只剩下了一样:睡觉。随着Friendster的沉沦和MySpace等对手的兴起,他的投资者们也开始将他拒之门外。
如今,虽然在亚洲,特别是印度尼西亚、马来西亚、菲律宾和新加坡等国还颇为流行,但Friendster也只能勉强挤进全美最受欢迎社交网络的前15强。“他们全部的精力都集中在保持那个要命的服务器正常运转,Friendster虽有潜力发展到势不可当的状态,”科勒说道,“但有一项功能他们就是不愿意取消掉,就是那项计算联系人距离、展示人们相互之间社会关联的功能。如果他们能够改掉这一点,今天就不会有‘facebook’的存在了。”
让我们再来看一个更有时代感的例子:Twitter同样也是一家在成长过程中备受各种小问题困扰的公司。如今它所面临的在计算上的挑战正恰似当年让Friendster惜败沙场的绊脚石。虽然像雅虎这样访问量极高的公司也需要消耗大量宽带资源才能应付数百万的网页和图片,但他们所面临的缩放方程是已知并可预测的。
虽然社交网络由于加入了互动元素而变得更加复杂,但它们每次也只需将信息发送给单个用户、最多某个小组而已。然而,Twitter的短信往往是在瞬间就需要送达到成百上千的“推友”手中,而每一位收到信息的推友又会将这则消息转发到其他成百上千的用户手里。这就意味着,Twitter每增加一位用户、每增加一个联系人,就会导致计算需求的指数性增长。高峰时段,如史蒂夫·乔布斯在《麦客世界》(Macworld)做主题发言时,Twitter就极为尴尬地宕了机。记得有这么几周,Twitter宕机的时间和它正常运行的时间几乎不相上下。虽然这极大地考验了用户大军的耐心和忠诚度,Twitter的病毒式成长趋势却依然无恙。
为Twitter程序提供平台的Ruby on Rails是一套可以即拆即用的软件框架,拥有数之不尽的优点。要建立一个可以正常运转的原型不是什么难题——不过是用不超过140个字回答“你在干什么”这个问题而已,要添加什么附加程序也很便宜。然而,这种模式并不适合大规模使用。“我们之前也没考虑过扩展性的问题。”Twitter创建者之一伯利兹·斯通(Biz Stone)承认道。他表示,Twitter刚开始仅仅只是一个项目、一个不错的点子,后来才发展成为一家真正的企业。到2009年4月时,他们已经拥有了600多万名用户。
参与投资Twitter的联合广场风投公司(Union Square Ventures)合伙人佛瑞德·威尔森(Fred Wilson)认为,微博工具在着手解决扩展性的严重问题上动作极为缓慢。“他们正在快马加鞭、抓紧赶上,他们的工作也因此平添了不少困难。”他说道,“但是Twitter之所以是Twitter,与创造它的人是分不开的。就算你把世界上最好的扩展性工程师们关在一起,他们也做不出Twitter来。现在最好的结果,就是Twitter的创始人能够意识到扩展性的问题、招募优秀的扩展性工程师加入自己的团队。”但是顶级工程师可是稀有资源。如果你能够帮助谷歌扩展到每秒1亿万次检索的程度,你又怎么可能会去Twitter工作呢?你要么会去在谷歌,要么就自己开公司了。但无论如何,Twitter的独立性都在稳步提高之中。
2008年上半年,公司有84%的时间都处于停机状态,但进入下半年后就从未再出现过大的停机现象。部分公司为了保证系统能够应对由病毒式成长带来的指数性增长而选择限制网站的成长速度。作为Gmail邮箱幕后军师的保罗·布克海特(Paul Buchheit),就曾经有目的地通过仅接受邀请注册的方式控制用户增长速度。相比只能为用户提供4兆容量的普通邮箱,Gmail能够提供1000兆的存储容量,为此,布克海特选择降低Gmail的成长速度,以保证谷歌的这项应用程序能够正常运转,避免了下载速度缓慢、停机、数据丢失以及其他在迅速扩张过程中常见的性能问题。
无论如何,开快车时能够及时刹车和把脚放在油门上一样重要。即便如此,我们也不能保证这就是一趟平稳的旅程。谷歌虽然抑制了增长,但也在成长过程中呛过水。Facebook也是如此。YouTube不是没有黑过屏,Ning也一样。所有开办这些网站的人都有过编程的经历。