数万人的互联网公司如何高效运转,提升技术开发和运用效率?
截至2019年6月30日,腾讯(00700.HK)共有5.63万名员工。在去年9月30日的大规模组织架构调整中,腾讯没有通过人员团队移动,效仿建立技术领域的“大中台”制,而是寄希望于用内部的“开源协同”去实现“减少重复造轮子”的目标,完成有腾讯特色的“中台”功能。
此后,腾讯开始愈发注重内部的“技术协同”,希望营造开放的技术氛围。2019年6月3日,腾讯副总裁姚星在腾讯内部技术社区码客上写道:开源协同是目前腾讯研发体系升级很重要的一个方法,开源是手段,协同是结果。如何平衡“去中心化”和“重复造轮子”,开源协同是个很重要的方法,开源的目的是减少“重复造轮子”,协同的目标是“去中心化”,保持快速的响应。
近日,腾讯内部开源和对外开源相关负责人接受了澎湃新闻(www.thepaper.cn)记者在内的媒体采访,介绍了腾讯近一年以来在内部开源协同和外部开源上的进展。
腾讯为什么要做内部开源协同?
在外界的印象中,腾讯以产品见长。技术围绕产品快速迭代,但往往限于事业群或是业务内部使用,互相之间壁垒高耸。
“过往我们也有很多引以为豪的技术,像我们的QQ有亿级的在线,微信为十亿级用户服务,为什么到去年突然外面觉得整个腾讯技术能力不行了呢。”腾讯技术委员会PMO成员、开源协同项目负责人郑亚峰回忆2018年组织架构调整前的腾讯。
“我们在反思,之前公司内部确实有一些技术壁垒,部门与部门之间的隔阂太多了。同样的技术,多个团队在做。”
这成为腾讯推进内部开源协同的初衷:打破壁垒,加强内部的开放和合作。“所以开源协同最主要的目的,是在公司内部营造开放的技术氛围和开放的代码文化,以提升公司的研发效能和运营效率。”
2018年9月30日,腾讯宣布架构调整,一是重组事业群(BG),新成立云与智慧产业智慧群(CSIG)、平台与内容事业群(PCG),两个事业群成立的逻辑均是集结了原本散落在多个部门的拳头产品和技术,齐心拥抱产业互联网,以及集中精力加大对消费互联网投入。
二是宣布将成立技术委员会,通过内部分布式开源协同,加强基础研发,打造具有腾讯特色的技术中台等一系列措施,促成更多协作与创新。
内部开源协同因此被提升到公司级的战略高度。2019年1月,腾讯技术委员会正式组建,由腾讯高级执行副总裁、技术工程事业群总裁卢山和腾讯高级执行副总裁、云与智慧产业事业群总裁汤道生两名腾讯总办成员牵头,下设“开源协同”、“自研上云”两个项目组和对外开源管理办公室。
过去,开源是自下而上的自发行为;现在,开源协同升级成为腾讯的技术战略之一,由技术委员会牵头自上而下,投入更大的力度全员推进。
避免“重复造轮子”的另一目的是成本优化。
郑亚峰介绍,2014年之前,腾讯运营成本增长得很快,运营成本在腾讯总收入里占比年年上升。至2014年,腾讯开始组建专门的团队,通过顶层设计、去中心化协作进行成本优化。
“成本优化,始终是腾讯这么多年来一直在坚持和贯彻的一项战略。自从开源协同出现后,这项战略可以有更多手段来实施。”
内部开源协同是如何实现的?
“这次开源在腾讯的战略是从上而下去设计,从腾讯的技术蓝图出发,盘点每一个领域里,有哪些公共的技术,以及有哪些团队在做,多少团队可以组织起来。这样做,是为了在将来能达到技术真正的统一和协作。”郑亚峰介绍。
在日常工作中,技术委员会的角色是做协调、沟通、运营,支撑工作,开源协同的真正参与者是腾讯2万多名的开发人员。
具体的操作方式上,在推进开源协同后,之前的代码在小组内、部门内可见,现在代码全公司可见。之前同一个项目可能有四个团队在做,但现在四个团队可以协同开发,技术委员会负责设立协作沟通的方式和平台,四个团队把技术共同分享、探讨,定期进行会议,讨论需求、计划、方案。
“原来四个团队各做各的,现在四个团队还在做这个事情,只是这时候,四个团队要出一个带头人,这个带头人之前管一个团队,现在可能把另外三个团队也当做他的团队管。”郑亚峰说。
以腾讯公司级大数据平台体系“天穹”项目为例,在天穹项目下,腾讯将内部的大数据技术开源共建,首批开源的组件项目包括Hadoop、Spark、Flink等应用广泛、技术成熟的公共基础类项目。
腾讯大数据负责人刘煜宏介绍,之前有些业务BG各自建设了一套业务级的大数据平台,“我记得以前腾讯被吐槽,说我们的平台不互通,互相隔离。这次开源协同后,我们搞了一个天穹项目,把公司所有大数据平台都整合起来,技术资源也聚拢起来了,一起建设公司的大数据基础平台。”
运营效率的提升还体现在,此前腾讯内部有4个团队在做视频项目,一项技术是可以在同等清晰度情况下把所需带宽大幅减少,其中一个团队在这一技术上较为领先,其他团队一开始没有直接采用这一技术,而是希望“要自己做”。“但开源协同之后,技术快速在全公司所有视频领域上线,这是开源协同的收益。”郑亚峰介绍。
“刚刚跨出一小步”
“天穹”是腾讯内部目前50个开源协同的项目之一,未来这一数量还会增加。目前腾讯内部还在做开源协同的基础工具,包括技术图谱、专门讨论技术的社区码客、代码管理工具等。“让技术人员能够在固定的地方找得到各种技术,可以直接拿来用。”郑亚峰说。
不过,郑亚峰评价腾讯的开源协同是:“刚刚跨出一小步”。
“因为开源动作操作起来简单,但真正要把过往腾讯20年的代码开放出来,团队要花很大的精力盘点,以前代码里写得不是太美观或者注释写得不太规范的,这都需要技术人员重新盘整。”郑亚峰说。
“在我们看来,这是一个很漫长的过程,大概需要花腾讯3到5年的时间去建设开放氛围,但这些都是值得的。”
推进内部开源的过程也不是一直顺利。“执行过程中总会触及到一些实际的情况,谁来负责,谁做什么,怎么分工等,这在一个团队里可能不是问题,当几个团队在一起工作时,就显得突兀起来了。”郑亚峰说,“腾讯的做法是面对这些问题时,认真沟通和对待,而不是通过一些强硬的手段把大家捏合在一起。做好顶层设计,做好去中心化的协同分工。所以需要从上往下有这个认知,以及逐个团队去沟通和贯彻。中间也许需要部分团队做些退让,但最终的目的都是一致的,让腾讯的技术更加美好和强大。”
郑亚峰介绍,为了鼓励内部的开源协同,腾讯设置了公司级开源协同奖、BG级开源协同奖,HR也在制定相应的策略,以保障技术人员在开源协同的投入后,获得对应的回报,比在职位的晋升上提供辅助。
和技术“大中台”有什么区别?
腾讯选择了工作方式上的“开源协同”,而并非通过团队调整建立庞大的技术“中台”,这区别于另一大互联网公司阿里巴巴的做法。
阿里在2015年开始推行“大中台、小前台”组织机制,中台事业群整合阿里产品技术和数据能力,原来的搜索事业部、共享业务平台、数据技术及产品部进入中台,以支撑前台业务。技术中台在这两年,成为互联网界津津乐道的关键词。
腾讯副总裁王巨宏介绍,腾讯没有刻意提“中台”的概念,“因为我们在内部有非常多的中台,每一样中台服务的对象、内容不同,差别会非常大。提中台反倒引起更多矛盾和误解,所以对我们来讲,我们反倒特意不提,并不是腾讯没有。”
但相比强调“中台”概念,或是用组织架构调整实现技术“大中台”,“开源协同”成为腾讯认为的最适合当下的手段。
郑亚峰告诉记者,腾讯早前就有中台的做法,“那时我们的形式是托管服务的方式,但随着业务的发展,很多团队的需求都涌入到托管平台后,基础中台的团队根本响应不过来,所以有些需求业务团队只好自己实施。”
而现在的内部开源协同,就是为了改变过去托管服务的困境,“多个团队参与进来,在代码开放的前提下,每个团队都可以实现自己的需求。所以协同是腾讯另一种实现中台的方式。”
鼓励对外开源
推进内部开源协同的同时,2018年9月30日的组织架构调整后,开发者生态的重要性凸显,腾讯对外开源的步伐也在加快,鼓励项目首先在腾讯内部流动,并对有价值的项目引导和帮助对外开源。
腾讯大数据负责人刘煜宏介绍,“技术人员都很喜欢开源。开源对技术人员来说是影响力,很多人都想在Apache社区、Linux社区里有自己的名声,做到PMC(Product Management Committee,项目管理委员会),可能比腾讯的T4专家名气还大。”
2019年6月,腾讯开源联盟主席、腾讯开源管理办公室委员堵俊平公开了腾讯整体的开源战略路线图,腾讯开源将重点关注IaaS、容器与云原生、数据库、大数据与AI、中间件、IoT/边缘计算、小程序生态等。
2019年8月22日,腾讯首个AI开源项目Angel正式发布3.0版本。Angel3.0尝试打造一个全栈的机器学习平台,功能特性涵盖了机器学习的各个阶段:特征工程,模型训练,超参数调节和模型服务。9月18日,腾讯宣布将开源自主研发的轻量级物联网实时操作系统TencentOS tiny。
截至2019年9月,腾讯在Github上发布了84个开源项目,包含微信、腾讯云、腾讯游戏、腾讯AI、腾讯安全等相关领域。
对外开源所积累下来的社区化运营、安全检查流程等开源规范的经验,也反之运用到了腾讯内部开源协同的过程中。
“开源代表一种未来技术研发的方式,这种技术研发方式是站在前人基础上往前不断地迭代,而不是反复地造轮子。”腾讯开源运营负责人王春雨说。
腾讯开源管理办公室执行总监许勇告诉记者,“开源,是类似腾讯这样企业的标配。如果不拥抱开源,那就可能被淘汰。我们也会借鉴和学习其他公司的‘工程师文化’,从而鼓励我们内部的工程师更开放,能够写出更优美、质量更高的代码。这些代码不但可以在公司内复用,也可以贡献到开源社区,让更多人使用。”