技术开发 频道

Facebook在Web性能方面的秘密武器

        【IT168 评论】这是边界博客参访的第一部分的转帖。

  边界博客:如果可以的话,能否说说Facebook在网络上管理什么是最大的大数据项目的秘密武器是什么呢?

  霍夫:从几个示例,我们已经了解了Facebook内部人士,像Aditya Agarwal和Robert Johnson - 两位前任技术主管怎么看待他们的秘密武器的:

  • 扩展需要迭代。通常,解决方案一开始工作得很好,但随着你不断深入,你不得不修改它们。例如,PHP最开始使用很简单,但当你有成千上万web服务器时,它不是一个好的选择。

  • 扩展需要迭代。你可以再说一次。

  • 不用过度设计。当你扩展系统时,只使用你需要的。在一个解决方案中找出你需要迭代的地方,优化它们或者自己创建完整的堆栈部分。

  • 选择正确的工具来完成工作。要意识到任何选择都需要开销。如果你真的需要使用Python那用吧,我们会尽量让你成功。然而,这会带来开销,通常包括整体部署、监控、ops(?)等等。

  • 了解文化权利。在公司内部营造一个促进建立正确第一以及必要时修复的环境。不要担心创新或打破旧事物,要从大处着想并且思考完成第一件事后接下来该做的是什么。隔离你重视以及想保护的那部分文化,这不会自动发生。

  • 迅速行动。第一个进入市场。如果你破坏了什么也没关系。例如,Facebook的整个web层都运行在一个由三个人开发的HipHop上。这是一个危险的策略。它经常让站点停止工作(内存不足、无限循环),但当他们找出如何让他们恢复工作时,也是一个很大的潜在回报。

  • 授权给小团队。小团队可以做大事情。 Facebook的搜索,照片,聊天和HipHop都是小团队的杰作。找到一组正确的人,授权给他们并让他们工作。

  • 人员最重要。是人建立和运行系统的。扩展的最好工具是可以处理任何事的一个工程和它的运营团队。

  • 横向扩展。处理成倍增长的网络流量需要在多台机器上任意地分摊负载。

  • 权衡一切。好的产品是居于真正有用的数据建立的。通过测量系统和应用程序级统计来了解发生什么。

  • 给团队控制权和责任。责任需要控制权。如果一个团队要为某事负责,他们也必须控制它。

  所有这些原则共同构成了一个自我强化的良性循环。有控制力及责任意识的小团队可以保障产品的快速迭代,将改善放到产品中验证才能确认改善的效果,在用户感到新代码可信任之前不能替换现有运行代码,在弄清楚如何横向扩展,快速迭代和评估现状前不要着手系统缩放更改,这一切都归结到有杰出品行及技巧的人上。

  但上述并不是故事的全部,也很显然不是机缘巧合的原因。我们经常看到的是一个现状是:具有领先优势公司早于他人看到问题,所以他们在其他人之前解决这些问题。我们看到了来自谷歌,Netflix,Twitter和Facebook等科技热点公司所带来的创新冲击波。

  Boundary:你认为其他主要的网站在需求扩展,持续保持用户高兴和快速响应方面,做了哪些大量的工作?

  Hoff:我们有一个很棒的行业。人们持续不断的愿意分享他们的经验,分享他们的代码,并谈论与工作相关的点点滴滴。我妻子是一名税务会计师,并且他们绝对不会有相同的氛围,就这一点有点伤感。在这一领域有很多令人难以置信的聪明和热情的人们,越来越多的人谈论关于怎样构建伟大的东西,总质量只上升。

  很明显的,我认为高质量的网站同分享的意愿是相关的。我能列出很多此类的公司,但这些脱颖而出:Twitter、Etsy、Facebook、Google、Netflix、Amazon 以及 StackExchange。其它一些贡献者包括 Airbnb、Tumblr、Instagram、TripAdvisor、Heroku、Prismatic、37signals、Pinterest 以及 Yahoo。

  还有数以百计的公司应当感谢,但上述公司一直在为网络性能的进步作出持续性的贡献。无论如何,我对自己并不满意,因为我知道我遗漏了一些。

0
相关文章