八千信息门户网
腾讯的开源革命

腾讯高级执行副总裁兼技术工程集团总裁路山讲述了一个在内部场合多次触动他的故事:

“一个新来者来到腾讯后,他们的团队想要一些东西,但在乐文(腾讯内部网智湖)上找不到。在极端情况下,如果他的团队是新组建的,内部网能够提供的是与各种业务组和生产系统紧密结合的东西,这很难拿出来使用,那么新团队就像一个孤岛。”

鲁山对这件事印象深刻的原因是,他开始思考已经走了20年的腾讯。每个企业集团都有强大的能力和技术团队。但是为什么外界甚至腾讯都感觉不到这些能力的存在呢?

“这是一个非常现实的情况。”卢山说。

在腾讯,技术为产品服务是正常的,但这也导致腾讯内部的许多企业形成了一个技术闭环。以应用于视频的服务器端编码器技术h.265为例。此前,腾讯有四个团队,由20多人组成,围绕各自的业务需求同时工作。他们都表现得很高,但他们并没有相互融合。过去,腾讯也有很多类似的例子。

研发环境中的众多烟囱和孤立的技术孤岛等问题很可能成为阻碍腾讯未来发展的难点。

930改革后,腾讯成立了一个技术委员会,由腾讯高级执行副总裁兼云智能产业集团总裁卢山和唐道生领导,在全公司推广开源协作和云自主研究。所有的行动都是为了消除腾讯留下的技术孤岛。

决心打破技术壁垒,优化研发环境,这是腾讯开源革命的源头。打造腾讯自己的技术地图,发展自己的军火库,为两万多名技术人员建立无缝协作的工作机制,可能是解决这一局面的“灵丹妙药”。

“开放代码是第一步,也是需要采取的关键步骤。开源可以理解为一种文化。我们需要从过去封闭的代码转变为未来开放的代码。”庐山拿出第一把钥匙解除腾讯的限制。

腾讯关于开源协作的最官方声明有点抽象:

“开源代码,技术协作,减少重复投资,提高研发效率,降低运营成本。核心是代码开源和技术协作。”

在采访中,钛媒体了解到,开源协作实际上是腾讯梳理和连接各商业集团最低和最常见的技术能力。打破壁垒,加强内部开放与合作是腾讯开源合作的初衷。

“在过去的一两年里,外界突然对腾讯的技术实力产生了一些怀疑。我们在反思。”腾讯技术委员会pmo成员、腾讯开源协作负责人郑亚峰回忆道,“公司以前确实存在一些技术壁垒,部门之间的壁垒太多了。使用相同的技术,多个团队正在这样做。”

"事实上,在腾讯众多公司的背后,肯定有不同的技术支持系统."腾讯副总裁王桔鸿在采访中提到。

以qq为例。qq是腾讯最早的核心业务。它的结构演变可以说是腾讯科技发展和成长的缩影。从中汲取的智慧和经验已经浓缩成腾讯的“大规模服务方式”。

腾讯内部流传着这样一种说法,即腾讯创始人之一、前首席技术官张之洞在早期为qq设计了一个后端架构。这种架构已经使用了很长时间,从零开始支持qq业务,直到同时有数亿用户在线。

这种说法也可能有些夸张,但基于“有害服务”、“动态运行”、“大系统小运行”、“过载保护”、“灵活可用性”、“先抗后优化”等价值和方法的持续优化架构体系确实支持腾讯实现了用户数量从0到1亿的飞跃。

此外,有很多案例可以证明腾讯的技术实力和对技术完美的追求:如qzone支持lru和文件系统的共享内存缓存(share memory cache基于裸设备;以及移动互联网时代的分布式idc容灾和微信容错设计等。

然而,围绕腾讯技术的内部和外部争议也触动了腾讯的深刻反思。郑亚峰坦言:“以前,腾讯在存储、计算和分析方面基本上都有自己的一套“车轮”

因此,在腾讯内部,在同一个技术领域,不同的部门可能会重复建设基础平台,这也造成了资源、人力等成本的浪费。“开源这个基础平台具有各部门成为公司级基础平台的优势,其他部门直接在其上协作实现统一的协同管理。我们希望在内部营造开放的技术氛围和开放的代码文化,以提高公司的研发效率和运营效率。”郑亚峰说道。

因此,开源协作的概念提出后,腾讯从各个业务群体中梳理出一些相对基础的技术板块,率先在开源协作实践中发挥作用。腾讯ci和大数据“天穹”是两个典型的例子。

腾讯ci oteam是腾讯内部的跨团队虚拟组织。由ieg(互动娱乐集团)蓝鲸ci(蓝盾项目)团队牵头,组织相关团队和个人共同开展腾讯ci的开发、建设和运营,旨在减少重复劳动,提高研发效率。目前,蓝鲸团队拥有多年的内外开源经验,腾讯ci开源协作项目现已为10,000名腾讯开发者服务。

根据腾讯ci开源合作负责人兼腾讯蓝鲸产品中心主任党守辉(Dang Shouhui)的说法,ci分为较低的汽车生产线模块和较高的测量改进模块。下层属于基础设施,其价值低于上层接近业务的价值。然而,如果不做好工作,下层就不能建立上层。此外,较低层的自动化易于统一,但较高层的度量改进与每个bg业务类型和管理模式相关,不易于统一。

因此腾讯ci首先确立了奥腾达成的共识:下层装配线应该一起建造,上层测量应该互相学习。因此,每个业务组只需要预留一小部分人力来建造较低层次的装配线,就可以在高价值的上层建筑上投入更多的资源。"

平台的开源一步到位,协作将基于本地协作或完全协作的应用情况晚会由慧教授如何与腾讯ci团队进行开源合作。“在腾讯ci的奥腾合作中,每个人都不把开源合作视为kpi,而是让它自己成长。”

到目前为止,来自腾讯各地的217名开发人员已经提交了自己在腾讯ci网站上开发的插件,这些插件用于连接各业务集团在ci流程中使用的内部系统。提交了287个组件和10066个代码。

与腾讯ci对腾讯各部门持续整合交付系统的统一相比,腾讯天空项目统一了腾讯六大业务集团的大数据相关系统。

“开源协作有许多优势。在大数据系统统一之前,bg可能有自己的数据平台。系统支离破碎,数据不统一。反复建造轮子和开发资源会造成浪费。同时,因为没有开源,大数据系统对许多公司用户来说就像黑匣子。开源协作后,每个人都将参与大数据的共同构建,系统问题将变得透明。”腾讯大数据负责人、腾讯大数据开源合作项目“天空穹顶”负责人刘玉红表示。

在刘玉红看来,开源协作除了实现透明度和分担责任,也是腾讯工程师增强影响力的有效途径。

他认为对于技术人员来说,开源是有影响的。“现在许多发展专业的学生自愿向外界开放他们自己的项目。我们的内部项目使用与外部开源社区相同的操作模式。该公司倡导自上而下的开源协作。对于技术人员来说,外部通道会立即打开。每个人都希望他们的代码被成千上万的人使用,并且更容易产生个人技术影响。”

当一个部门中的一个项目被打开时,它还需要被其他部门立即知道,以确保它不会被重复。腾讯还建立了一套开源协作管理和运营方法。

据腾讯开源合作项目执行董事许李海介绍,开源合作项目成立后,公司已经建立了一系列内部接触渠道,包括开源合作官方网站、官方邮箱号码、内部企业推送渠道等。与此同时,通过内部技术交流社区“编码者”、腾讯技术地图全景“技术地图”、围绕技术深入讨论的“吐出会议”等多种方式,做好了信息传递协调沟通工作。

鹿山对技术地图的未来寄予厚望:“五年后,项目经理、技术经理和研发经理可以轻松选择哪些东西可以在腾讯的技术地图上使用。"

目前,腾讯有腾讯ci、大数据天空等50多个开源合作项目。k8s、ci、软件源、大数据、配置中心等基础底层技术的公司级顶层设计正在逐步形成。自发布以来的近10个月中,代码客户社区已经产生了近3,000个技术问题,引发了150,000个响应和评论。每月,超过80%的技术人员访问代码客户社区进行技术讨论。

腾讯分三步开源

开源合作的提议进一步完善了腾讯的开源战略链。

今年6月,在由cncf主办的云本土技术大会上,腾讯开源联盟主席、腾讯开源管理办公室成员、apache成员杜俊平首次公布了腾讯的整体开源战略路线图。

路线图显示腾讯有一个开源的三步计划。前面提到的开源合作实际上是腾讯开源战略的第一步。这一步的目标最终是通过部门小团队运作或跨部门大团队运作共同促进技术研发,以集中优势,通过优化资源配置寻求技术突破。随后,腾讯建立了一个筛选机制,将代码向内部开放。

第二步是打开外部代码。在这一步,腾讯将优化设计和代码结构,不断拓展登陆场景,有效利用外部贡献者的资源,实现资源整合,打造技术影响力。

第三步是社区开放治理。现阶段,腾讯将着力于大规模技术推广应用、开发商生态系统建设、社区领袖和领导力培养、全社会研发资源优化配置。

“虽然这三个步骤是按顺序进行的,但它们实际上是同步前进的,这更像开发中的‘迭代’概念。目前,我们在第一步投入的资源更多,但在第二步和第三步已经取得了一些成绩和产出。”杜俊平说道。

到目前为止,腾讯已经在github上发布了84个开源项目,包括微信、腾迅云、腾讯游戏、腾讯ai、腾讯安全等相关领域,所有这些都经历了腾讯明星业务的大规模测试。腾讯发起的开源项目已经在github积累了超过24万个明星号码,在全球github的明星企业总数中排名前10位,在国内外得到了广泛的关注和认可。

王桔鸿在采访中还提到,这三个步骤是战略的前两个步骤。内部开源协作和外部代码开源实际上是相辅相成的关系。

“当我们开辟新的收入来源时,标准、治理、管理方法、工具等等。已经完全投入使用。当内部开源协作刚刚推进时,我们认为这可能没有必要,直接这样做可能更有效率。”

然而,一段时间后,腾讯发现它在不采用与外部开源相同的标准方面存在很大问题。因此,腾讯的开源团队很快将外部规范(如安全检查程序和代码规范要求)引入内部开源构建过程。

“如果多年来没有外部开源的积累,内部可能需要很长时间来摸索过程规范和管理体系。现在我们的经验和规格都准备好了。如果在内部开源过程中发现问题,可以立即应用。”王桔鸿说。

腾讯开源管理办公室执行主任徐勇也认为,为了促进内部开源项目的可持续发展和迭代更新,开源协作借鉴了外部开源社区的概念,并将公司内部对该项目感兴趣的团队和个人聚集在一起,使内部开源协作项目能够继续更好地发展。

当然,内部开源协作也直接提升了腾讯技术团队对外部开源的贡献率,工程师们对开源的热情正在被激发和激发。

王桔鸿表示:“这是内部930的结构调整带来的变化,这在腾讯开源生态上实现了质的飞跃。”。“内部开源可以促进外部开源产生更多重量级的项目。过去,有许多开源项目,包括前端和工具项目。现在,大数据、人工智能深度学习、物联网操作系统等重大项目也在不断开放。”

到目前为止,腾讯已经参与并贡献了许多著名的开源社区和项目,如apache、linux、openstack、kvm、docker、nvdimm、ceph、hbase、hadoop、spark、kubernetes、torrent、dht、goprocinfo、法兰绒、netlink等。成为会员和维护者。同时,腾讯也将工具平台从svn转移到git,这更适合开源协作,在10个月内增加了600个开源项目。

新措施的实施往往伴随着一些问题。

在腾讯ci、天桥等项目推出之前,腾讯实际上已经预见到了一些项目实施中可能出现的间歇期。

腾讯有大约2万名工程师,每个bg以前都有自己的研发技术。如果它现在突然想统一成一种技术,它将不可避免地产生不同的声音。此时,它需要一个强有力的自上而下的实施保证。

2019年1月4日,腾讯技术委员会正式成立,由腾讯办公厅两名成员卢山和唐道生领导。来自几个主要商业团体的所有技术领导人都进入了技术委员会的决策圈。

腾讯科技总部诞生,负责协调公司整体技术战略规划,制定公司级技术规范和程序,指导大型技术项目落地。

在过去的许多年里,腾讯实际上对开源采取了“自下而上”的民间态度,并没有从整体上从自上而下的角度审视开源战略。大约在2013年,3q战争让腾讯意识到了开放的重要性。技术上的直观变化是,以张之洞为代表的腾讯总公司开始向工程师倡导“开放、重用、共同开发”的代码文化。

“当时为什么是自下而上,因为虽然行政长官办公室提到了,但还没有强制执行,实际上每个人都完全自愿参与开源。”徐勇回忆道。

在过去的几年里,腾讯也因为这种自下而上的自愿开源取得了许多成就。然而,腾讯慢慢发现,在开放越来越多的外资来源后,自下而上的推广模式遇到了瓶颈。

自下而上的开源项目是前端体积比较小的更多项目,因此很难利用大规模和有影响力的项目进行开源协作这一次,它需要从上到下的强力推动。

那么,腾讯为什么必须利用大型开源项目?

这实际上关系到腾讯的整个战略。腾讯副总裁王桔鸿对钛媒体表示,腾讯正在积极拥抱工业互联网,整个开发商生态对腾讯的工业互联网战略非常重要。

在腾讯的to b战略中,以csig为代表的腾讯to b出口可以为企业用户提供各种基于云的服务,但腾讯不能也永远不会遍历所有服务。云在着陆期间需要遵循与其合作伙伴共同构建的道路。

因此,只有开源,才能吸引更多的开发者加入腾讯生态,为最终端的工业互联网用户和企业提供服务,腾讯的工业互联网战略才能到位。

“开源自上而下与公司的战略紧密协调。最初的自下而上的方法,如果只有一些前端和工具组件是开源的,是对情感的追求,但对业务没有影响。然而,如果核心技术平台现在不开放,不仅感情,而且业务都可能受到影响。所以腾讯必须这么做。”王桔鸿说。

“开源代表了未来技术研发的一种方式。这种技术研发方式基于前几代人,不断向前迭代,而不是重复建造轮子。”腾讯开源运营主管王春雨表示:“一个好的开源项目会吸引很多参与者。在输出能力的同时,它将不断吸收社区的营养,变得越来越强大。在开源技术的支持下,技术创新的周期将大大缩短。”

腾讯改变了原本纯粹自发开源的“自下而上”路径,采用了一种新的开源模式,将“自下而上”和“自上而下”相结合,将自发和自觉相结合。在新模式的推动下,腾讯已经开发了一些非常核心和创新的项目。最近,新开发的轻量级物联网操作系统腾讯微网(tencentos tiny)和万亿级大数据消息中间件tubemq也发布了腾讯全堆栈机器学习平台angel的3.0版,这是对tensorflow的补充。

然而,在这个过程中,决策者也考虑到腾讯不再是一个能够克服技术障碍,从零开始“立刻”的小团队。决策后不能失去最初的自下而上的传统,因为一线员工需要定义一种新的方法来实现开源决策。

因此,技术委员会最终将选择把内部和外部开源的主动权交给每个参与开源的技术工程师。钛媒体获悉,自委员会成立以来,收集前线反馈的工作从未停止。两万名技术人员讨论了公司的发展环境、统一框架、研发流程、技术氛围等问题,描述了他们的问题并提出了解决方案。

在腾讯内部技术社区代码师、“腾讯内部智虎”音乐查询和电子邮件等各种渠道,这些话题几乎变得“每天都有更多的帖子发布”,讨论热潮还在继续。腾讯技术委员会认为,“只有从下到上才能发现真正的问题,只有从上到下才能快速准确地解决问题。”

自上而下的改革不仅体现在核心项目的开源上,而且腾讯的研发文化也得到了提升。

郑亚峰说开源让代码更加透明。像“说话便宜,向我展示代码”这样的开放平台让工程师们更容易相互学习,相互交流,高效沟通。郑亚峰还希望在未来开放的基础上,技术人员能够进一步提升腾讯的技术深度和高度。

对此,徐勇还认为,过去依靠“产品”赢得世界的腾讯更加关注其业务的增长,每个团队都在闭环中进行研发。然而,它可能会发展到一定阶段,需要每个人一起进行技术变革和升级。只有这样,更多的资源才能有效地用于创新和代码质量。

腾讯副总裁姚兴也对腾讯内部技术社区代码师的“新代码文化”做了进一步的解释:

“开源是手段,协同是结果。当一个组织太大后,把所有的研发集中在一起是非常低效的。而‘去中心化’的问题又会让公司研发各自为战,闭门重复造轮子。如何平衡‘去中心化’和‘重复造轮子’,开源协同是个很重要的方法。开源的目的是减少‘重复造轮子’,权限开放、代码相互可见。协同的目标是‘去中心化’

fun88

最新推荐
除了福耀玻璃 这些美国工厂也是中国人开的
热点文章