过程改进 FaceBook 的开发过程

laofo · 发布于 2012年04月02日 · 66 次阅读
4

Facebook的基础信息

Facebook 是一家提供社交网络服务的网站,2004年2月在美国开始运营,到2010年已经有1700名以上的员工,网络流量全球第二(Nov,2010)。 Facebook保有 3万台服务器(2009年统计),每月5700亿的页面访问,每月上传30亿张图片,每月250亿条记录,每秒需要处理120万张图片,到2010年5月有5亿活跃用户。 架构相关

Facebook 的技术架构是采用典型的php分层模式。PHP开发 web应用软件。一层是数据缓存,另一层是抽取的服务组件。数据缓存使用稳定而快速的memcached修筑在大量的mysql上。数据缓存对于Facebook的发展非常关键,所以,facebook现在是memcached的一个重要的赞助商。

为了支撑急速扩张的需求,大量的服务组件采用一种叫Thrift的远程调用机制 (原来是Facebook开发,现在是apache的开源项目)。这种远程调用语言采用一种类似CORBA接口调用语言(IDL)的机制;它被用来绑定不同的语言,并优化了网络速度。

开发过程管理

-版本控制

facebook将代码开源后,使用github的服务提供代码下载。主要是Git作为版本控制系统。

其内部使用的是Subversion,一部分人使用的Git,通过桥接相联。

https://github.com/facebook

Facebook 已经公布所有的平台、开发工具、基础架构等所有代码包。

-开发流程

Facebook采用了快速开发流程。开发过程目标表面看有些矛盾:不停机,扩充快,代码极快升级。(minimizing down time, scaling fast, and extremely quick code updates.)

Facebook的开发工程师被鼓励快经常和快速地发布代码。通过直接使用公司基础平台,发布代码(push)不会被拖延。这种做法就是为了快速发现问题和代码对系统的影响。保证任何经常发布的小变更被安全地修复。

Facebook有一套独特的开发和开发环境-(快速开发和部署环境)(rapid development and deployment environment)很少有其他公司有类似的环境:工程师可以在60分钟之内完成一个变更并发布在全球。

-持续性能测试原文连接

Facebook 数千台服务器提供数亿次的访问,而且代码发布的频率非常高,所以及时了解系统的性能表现非常关键。便于系统知道生产环境的压力和精确回退特定功能的特性。

XHProfLive (不属于开源的工具包),是Facebook使用的一个全系统的性能监测系统,建立在XHProf的基础之上 。

XHProf是一个分层PHP性能分析工具。它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。是facebook开源出来的一个php性能测试工具。统计系统当前的压力。

-系统测试

Facebook有一个有限、规模不大的QA团队。

-代码评审

工程师之间的代码评审(同行评审)被大量、广泛使用。主要的质量手段。

Facebook的开发团队规模都相对较小,团队成员之间的沟通频繁。开发团队利用部署工具将代码部署在不同的平台上,不同用户群的机群,不同成熟度的机群,不同地理环境的机群。进行策略测试、偏好测试等,如A/B测试,而且目标地区用户可以渐次部署。这些手段保证了过去3年中,中断服务的时间少于3小时。

所谓 A/B 测试,简单来说,就是为同一个目标制定两个方案(比如两个页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更符合设计目标。当然,在实际操作过程之中还有许多需要注意的细节。

-发布与部署 原文连接

Facebook 搭建了发布和部署的基础架构平台。工程师像使用电插头一样,使用发布过程。工程师的在少于60分钟完成一次开发流程,包括发布、部署、回退。

自动化工具

为了处理用户每天产生的大量数据,Facebook 使用Hadoop ,Scribe , andHive开发了不同的后台服务管理程序。例如,用户的照片、状态、评论等数据文件周期性地移到中心仓库,不仅是为了便于访问,也为了执行数据分析。数据团队甚至开发了HiPal 工具,这是一个类似SQL GUI接口工具,允许市场和商业团队进行查询,并基于信息作出策略。公司的大部分软件是开源的,(Facebook已经公开网站的代码)因为Facebook的文化就是“world is a better place due to open source.”

原文 极限敏捷在Facebook http://cacm.acm.org/blogs/blog-cacm/51564-extreme-agility-at-facebook/fulltext

共收到 2 条回复
96
north_bird · #1 · 2013年01月21日

很详尽的描述。

96
yoky21 · #2 · 2013年10月24日

在少于60分钟完成一次开发流程,真的是极限敏捷啊

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册