首页 > IT资讯 > 正文

LinkedIn利润井喷背后的软件开发模式革命

LinkedIn现在已经成为了华尔街的宠儿。伴随着不断上扬的公司收入和利润,它的股价相比2年之前已经上涨了两倍,并连续7个季度在营收上超过了银行家的预期。不过,LinkedIn的成功绝不仅仅是数字上的戏法:LinkedIn的产品迭代周期大大缩短了。其革命性的软件开发方式成为了公司不可或缺的一大成功要素。

Kevin Scott为LinkedIn所带来的变革很大程度上帮助LinkedIn实现了今日的成就。他于2011年2月加入LinkedIn,目前是是分管工程的高级副总裁,而在这之前他已经在谷歌工作多年。正是他与他的开发团队彻底颠覆了这家互联网企业开发与部署软件更新的方式。以往需要整整一个月来部署新功能的系统,现在已经能够实现每天多次的更新推送。

Kevin Scott

这种软件构建上的革命帮助LinkedIn发布了一系列智能化的功能(比如“您应考虑雇佣的人”建议框),帮助企业招聘专员在LinkedIn上更好地完成招聘任务。在近几年,LinkedIn其他的产品创新还有很多,如:改版公司主页,新版通知系统,重新设计的网站主页,新闻页面的评论功能和Like功能,iPad端与Windows Phone端的应用,改版的个人资料页面,求职app,博客系统等。就在这2周,LinkedIn参考Facebook的实践发布了一个新功能,让用户可以与好友的状态更新建立联系。

Scott谈到:“假如我们没有花时间革新我们构建软件的方式的话,像‘技能认可’系统,'业界领军者'系统,改版个人资料页面,移动端应用,升级版招聘者工具等在内的无数意义深远的新功能几乎是不可能成功构建出来的。“

LinkedIn使用了一种名为“持续部署”的软件开发模式。通过持续部署的机制,开发者可以通过零散的代码块形式来组织并编写代码,然后迅速将代码块部署到软件的主开发线上面去。软件的主开发线(或被称为“支干线”)在所有开发者之间共享,并通过代码版本管理系统依据预先设定好的标准进行代码维护。新添加的代码块在完成部署前必须通过一系列精心设计的自动化测试,以确保代码块中没有bug存在。代码块通过这些测试后,就会合并入主开发线,并在系统中进行记录,以通知管理人员新功能已经作好上线准备了。

LinkedIn以往的软件开发模式相对来说就传统得多了。其核心思想是在需要进行软件更新时,从程序的主开发线上截取一段分支程序,并在几天乃至数周的时间内对这段分支程序进行开发。开发人员往往不得不在完成大段新功能代码的开发工作后,干坐着等待这些代码合并进入主开发线。而即使在合并完成后,这些新功能依然需要再次进行测试,以确保新引入的代码不会与主开发线上同时引入的其他代码产生冲突。在这种“基于功能划分软件分支”的体系中,bug并不少见,甚至还可能构建出完全无法正常运行的系统。这些问题主要归因于由各自独立的多个开发团队开发的代码往往会在同一时间合并进入系统的主开发线,从而导致许多难以预测的后果。而为了尽可能避免这种情况,管理人员倾向于尽可能控制每个月新功能迭代更新的数量与范围,从而在整体上使公司软件的开发周期变得更长。

为了实现从传统的开发模式到“持续部署”开发模式的转变,LinkedIn不得不在2个月的时间内中断所有的新开发工作,而将所有的开发人员安排到旧代码迁移和自动化测试工具构建的工作上来——只有这样才能保证新开发模式的正常运作。

“这种模式的转变其实蕴藏着巨大的风险。”Scott表示,“这意味着我要告诉我的工程团队,我们即将要彻底改变我们开发软件的方式。在这2个月的转变过程中,我们需要齐心协力跨越象征着我们传统软件开发模式的大桥,并在跨越成功之后把这座大桥彻底焚毁。”

LinkedIn并不是唯一使用持续部署开发模式的公司。Scott在之前的系统开发中也曾经使用过这类开发模式,而其他的互联网企业,如Etsy和Facebook,也开始逐渐采纳这种开发模式。然后LinkedIn这个例子的代表性在于,这种革命性的开发模式直接地帮助了LinkedIn实现了公司业绩上的提升,应证了持续部署模式的所能为科技企业带来的收益,从而间接地推动了科技行业软件交付效率的提升。

而对于Scott来说,持续部署模式的意义并不仅仅在于那些规则与方法,更在于这种模式的的确确解决了LinkedIn原来所面临的问题。

Scott认为:“我们必须改变现状。以往,开发者之间的开发工作是相对独立的。在开发完成之后,他们需要在办公室里大喊一声:‘请把我开发的功能分支代码合并到整个分支中,然后运行测试,告诉我测试结果,再在合适的发布窗口把这些代码发布到网站上去!’ 而我们所希望的场景是,开发者交付代码时,这些代码就已经是合乎规格并可发布的了。主开发线上的所有代码应时刻处于可发布的状态。假如这种情况被打破,那么这就是一个严重的问题,所有人应该停止手上的新功能的开发工作,投入到修复主开发线代码的工作中来。”

诚如本文中之前所提到的,这种革命性开发模式的实践从目前来看是相当成功的。Scott在上次采访中也提到这种开发模式,并阐述了这种模式对LinkedIn求职者产品项目的所带来的惠意。而自那时起,LinkedIn在软件开发方面日益高效,而它的股价也又上涨了61个百分点。


上一篇:让Facebook Home桌面运行在所有安卓手机
下一篇:“中国谷歌”挺进硅谷 成立人工智能实验室

PythonTab微信公众号:

Python技术交流互助群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854