中国velocity web性能与运维大会 – part 2

第一天晚上

最后一个session结束以后,还在问魏博士一些问题的时候,百姓网的人过来请他去参加晚上的一个交流沙龙,同时也邀请了我们。我看时间还早,就一起上了他们的大巴,在车上,我很累就睡了一会,结果一睁眼发现居然到石景山了。

到了咖啡店,大家先拿了一些东西各自吃完,然后轮番自我介绍,沙龙就开始了。我后面的一个隔断就坐着蒋博士,我看刘江老师站起来了,于是赶紧霸占了他的位置,一群人就开始围着他问起来。

最开始大家都会问一些技术问题,比如bigpipe的一些实现细节啦,pagelet的调用方式啦。他很惊讶我们在根本没有看到实现的情况下,就能提出一些细节性的问题,尤其是浏览器差异的问题,我们的一致答案是,因为经常都在处理这些问题,尤其是IE6的问题。然后我问他,facebook的用户,IE6占多少比例。他说之前应该在5%左右,最近经过一些推动,已经降到2%左右了。当知道国内浏览器份额和原因的时候,他连连惊叹,居然还有这么多的原因。

后面渐渐大家都比较放松了,话题也慢慢的聊开,他也会问我们一些国内互联网的情况。其实他们这类人最想知道中国互联网的状况,想找机会回来。因为已经在国外呆了这么多年,如果不想在大公司养老,回国就是他们的最佳选择了。有大公司的招牌,财富也积累的差不多了,中国又是一个正在成长的市场,到处都是机会。

快到结束的时候,百姓网还给他们的一个同事庆祝了生日,貌似这是他们的一项例行活动。他们现在只有10个技术人员,公司一共30人,规模很小,但是这次大会却给大家留下了比较深的印象。在第一天入场的时候给所有的参会者一瓶饮料,下午可以再领一瓶。饮料上有他们的广告,这样绝大多数人都知道了这是一个什么样的公司。他们的摊位也和其他赞助商不同,其他的都是广告视频+宣传册,几乎没有人停下来,而他们是一个叠杯子游戏,4秒以内可以赢一个鼠标,这样就吸引了很多人去玩,摊位背后的大海报浏览量应该不小。

第二天

第一个session是九点开始,于是我起了个大早,8点半就到达会场,抢了一个第二排的好座位。

卷土重来:服务器端JavaScript

这是老道在这次大会上的第二个session,主要讲的是nodejs这个服务端JS环境,因为我一半年前就用过nodejs,里面的概念都很熟悉,包括event loop的好处,服务端js能配合本地js,在一些比较老旧的浏览器上用服务端js直接返回数据,现代浏览器用客户端js等。

但是据我的使用,nodejs仍然是不稳定版本,之前我使用的时候,库特别少,而且接口不稳定,会发生比较大的变化。不知道现在情况如何了。

Facebook: 一个可持续发展的高性能网站

经过第一天facebook的两个很有内容的session以后,大家都对这个session充满期待,而实际上魏博士也没有让大家失望。前面两个sesssion主要是分别介绍了facebook的两套系统,而这个session说明了他们采用什么样的思路构建这样系统的,如何保证优化的可持续性。

他首先提出了一个观念:fast by default,facebook成长的速度很快,如何才能让它一直保持快速呢?答案是用一个小的团队,关注性能和前端架构,用架构来保证优化。

然后提出了性能优化的四个周期:系统架构 - 测量数据- 分析理解数据-优化。过去我们可能只关注最后的优化结果,而不关注数据的来源和分析,更不关注系统的架构。在08年的时候,扎克发现facebook很慢,于是成立了一个专门的20小组来解决这个问题,一个多季度以后,问题被解决了,同时他们还得到了一个结论:如果我们的系统不能保证优化,以后网站还是会变慢的。于是成立了一个3-4人的专门小组,来关注系统架构问题,直到现在。

系统架构主要包含三个重要的事情:

  1. 做一件事情只有一个办法
  2. 有清楚的最佳实践可以让工程师follow
  3. 开发的时候不用关心性能

其实就是让系统做好所有的事情,工程师只需要按照给定的方式去写代码,一定是最优的。

其中举了一个很有意思的例子:facebook的cookie曾经很大,大到居然有2K,对网站的速度影响很大,最终,他们将cookie精简到了400bytes,但是他们还发现,cookie就像野草一样,是拔不干净的,工程师永远会写新的cookie,找到他的时候,他说,我的项目很紧急,就要上线了,你让我上线以后再修改吧。但代码上线以后,他又会说,我现在还有很多事情要做,cookie这个事情我真的没法安排。

最后,他们在开发环境中部署了一个小程序:“cookie monster”,如果有人写了他们不认识的cookie,这个程序就会把cookie在传输的过程中直接删除,并且给页面返回一个消息“这个cookie很好吃,我吃掉了”。这样以后,工程师在发现问题的时候,就会主动来找他们,他们会告诉工程师如何使用服务端cookie来做同样的事情。

接下来就是让数据说话,其实就是将数据记录和分析系统化,报表自动生成,在上线以后进行分析。

最后是让所有人都参与优化,他们认为,速度是产品的一个目标,而不是额外的东西。因此所有工程师和产品团队都需要理解和关注这件事情,在新人培训时有专门的课程进行培训,在新产品上线之前,他们会进行指导,保证性能优化。

facebook的系统架构提醒了我,很多时候我们如果仅仅关注目的,和与之紧密相关的部分是不够的,只要底层架构优化了,一些上层的改变就是轻而易举的事情。

这个session以后,又是很长的广告时间,我趁机到会场外面找人聊聊天,接着发现魏博士也在,前一天晚上没有和他聊过,于是又获得了一些其他的信息,包括facebook前端系统的开发,测试,部署步骤等。内容比较多,我将在后面的blog中单独发出,欢迎订阅我的blog获得更新消息。

下午全是国内公司的交流,而且大多和前端关系不大,听了淘宝的商品详情页面的优化实践以后,就坐同事的车回公司了。

这次大会收获很超出我的预期,facebook的两位博士介绍的东西很实在,交流起来也很坦诚,问到一些具体的细节的时候,都能不厌其烦的一一告诉我们;Youtube的那个session也给我现在的实际工作带来了不少启发;Douglas和steve的session嘛,就当联系英语听力了罗。

如果你也参加了本次大会,或者你对上面的内容的细节有兴趣,欢迎在下面留下你的评论,或者follow我的twitter进行进一步交流。

发表评论

火花来自思想的碰撞,请留下你宝贵的评论吧: