凤凰家居

腾讯的开源革命

腾讯高级执行副总裁兼技术工程企业集团总裁鲁山(Lu shan)讲述了一个在内部场合多次触动他的故事:“当一个新人来到腾讯时,他们的团队想要一些东西,却在乐文(腾讯内部网智虎)上找不到。

在极端的情况下,如果他的团队是新成立的,内部网能够提供的是与各种业务组和生产系统紧密结合的东西,这很难拿出来使用,那么新团队就像一个孤岛。

”“一个新来者来到腾讯后,他们的团队想要一些东西,但在乐文(腾讯的内部网智湖)上找不到。

在极端的情况下,如果他的团队是新成立的,内部网能够提供的是与各种业务组和生产系统紧密结合的东西,这很难拿出来使用,那么新团队就像一个孤岛。

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

”卢山说道。

在腾讯,技术为产品服务是正常的,但这也导致腾讯内部的许多企业形成了一个技术闭环。

以应用于视频的服务器端编码器技术H.265为例。此前,腾讯有四个团队,由20多人组成,围绕各自的业务需求同时工作。他们都表现得很高,但他们并没有相互融合。

过去,腾讯也有很多类似的例子。

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

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

决心打破技术壁垒,优化研发环境,这是腾讯开源革命的源头。

打造腾讯自己的技术地图,发展自己的军火库,为2万多名技术人员建立无缝协调的工作机制,可能是解决这一局面的“灵丹妙药”。

“开放代码是第一步,也是需要采取的关键步骤。

开源可以被理解为一种文化。我们需要从过去的封闭代码变成未来的开放代码。

”卢山拿出第一把钥匙举起腾讯的手。

腾讯给出的最正式的“开源协作”声明(势在必行)有点抽象:“开源代码、技术协作、减少重复投资、提高研发效率、降低运营成本。

核心是代码开源和技术协作。

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

核心是代码开源和技术协作。

“在采访中,钛媒体了解到,开源协作实际上是腾讯梳理和连接各商业集团最低和最常见的技术能力。

打破壁垒,加强内部开放与合作是腾讯开源合作的初衷。

“在过去的一两年里,外界突然对腾讯的技术实力产生了一些怀疑。我们在反思。

腾讯技术委员会项目管理办公室成员、腾讯开源协作负责人郑亚峰回忆道,“公司以前确实存在一些技术壁垒,部门之间的壁垒太多了。

用同样的技术,几个团队正在做这件事。

“事实上,在腾讯众多公司的背后,肯定有不同的技术支持系统。

”腾讯副总裁王桔鸿在采访中提到。

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

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

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

除此之外,能够证明腾讯技术实力和对技术极致追求的案例还有很多:如QZone时期的支持LRU的sharememorycache,和基于裸设备的filesystem;以及Wechat在移动互联网时代的分布式IDC容灾、容错设计,等等。此外,有很多案例可以证明腾讯的技术实力和对技术完美的追求:例如,在QZone时期支持LRU的共享内存和文件系统;基于裸设备;以及移动互联网时代的分布式IDC容灾和微信容错设计等。

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

“这导致腾讯内部不同部门在同一技术领域重复建设基础平台,造成资源、人力和其他成本的浪费。

“开源这个基础平台具有各部门成为公司级基础平台的优势,其他部门直接在其上协作实现统一的协同管理。我们希望在内部营造开放的技术氛围和开放的代码文化,以提高公司的研发效率和运营效率。

”郑亚峰说道。

因此,开源协作的概念提出后,腾讯从各个业务群体中梳理出一些相对基础的技术板块,率先在开源协作实践中发挥作用。

腾讯竞争情报和大数据“天穹”是两个典型的例子。

腾讯首席信息官团队(Tencent CIOteam)是腾讯内部的跨团队虚拟组织。由IEG(互动娱乐集团)蓝鲸CI(蓝盾项目)团队牵头,组织相关团队和个人共同开展腾讯CI的开发、建设和运营,旨在减少重复劳动,提高研发效率。

目前蓝鲸团队拥有多年的内外开源经验,腾讯CI开源协作项目现已为腾讯10000多名开发者服务。

根据腾讯竞争情报开源合作负责人兼腾讯蓝鲸产品中心主任党守辉(Dang Shouhui)的说法,竞争情报分为较低的汽车生产线模块和较高的测量改进模块。下层属于基础设施,其价值低于上层接近业务的价值。然而,如果不做好工作,下层就不能建立上层。

此外,较低层次的自动化易于统一,但较高层次的度量改进与每个BG业务类型和管理模式相关,不易于统一。

因此腾讯竞争情报(tencent CI)首先建立了Oteam达成的共识:下层装配线应该一起建造,上层测量应该互相学习。

因此,每个业务组只需要预留一小部分人力来建造较低层次的装配线,就可以在高价值的上层建筑上投入更多的资源。

” “平台开源一步到位,协作基于本地协作或完全协作的应用条件。

“党是由回族教如何开源合作,由腾讯CI团队.”在腾讯竞争情报的奥腾合作中,每个人都不把开源合作视为关键绩效指标,而是让它自己成长。

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

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

“开源协作有许多优势。在大数据系统统一之前,BG可能有自己的数据平台。系统支离破碎,数据不统一。反复建造轮子和开发资源会造成浪费。

同时,由于没有开源,大数据系统对许多公司用户来说就像一个黑匣子。开源协作后,每个人都将参与大数据的共同构建,系统问题将是透明的。

腾讯大数据负责人、腾讯大数据开源合作项目“天空”负责人刘玉红表示。

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

他认为对于技术人员来说,开源是有影响的。“现在许多发展专业的学生自愿向外界开放他们自己的项目。我们的内部项目使用与外部开源社区相同的操作模式。

该公司倡导自上而下的开源协作。对于技术人员来说,外部通道会立即打开。每个人都希望他们的代码被成千上万的人使用,并且更容易产生个人技术影响。

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

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

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

“目前,腾讯有腾讯CI、大数据天空等50多个开源协作项目,k8s、CI、软件源、大数据、配置中心等基础底层技术的企业级顶层设计正在逐步形成。

自发布以来的近10个月中,代码客户社区已经产生了近3,000个技术问题,引发了150,000个响应和评论。每月,超过80%的技术人员访问代码客户社区进行技术讨论。

内外共生的三步战略、腾讯开源和开源合作的三步战略,进一步完善了腾讯开源战略的链条。

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

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

随后,腾讯建立了一个筛选机制,将代码向内部开放。

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

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

“虽然这三个步骤是按顺序进行的,但它们实际上是同步前进的,这更像开发中的‘迭代’概念。

目前,我们在第一步投入了更多的资源,但在第二步和第三步已经取得了一些成绩和产出。

”杜俊平说道。

到目前为止,腾讯已经在Github上发布了84个开源项目,包括微信、腾迅云、腾讯游戏、腾讯人工智能、腾讯安全等相关领域,所有这些都经历了腾讯明星业务的大规模测试。

腾讯发起的开源项目已经在Github积累了超过240,000个星级数字,在全球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战争让腾讯意识到了开放的重要性。

技术上的直观变化是,以张之洞为代表的腾讯总公司开始向工程师倡导“开放、重用、共同开发”的代码文化。

“当时,为何是自下而上,因为虽然行政长官办公室提到,但尚未达到执行的地步,大家参与开源其实完全是自愿的。

”徐勇回忆道。

在过去的几年里,腾讯也因为这种自下而上的自愿开源取得了许多成就。

然而,腾讯慢慢发现,在开放越来越多的外资来源后,自下而上的推广模式遇到了瓶颈。

“自下而上的开源项目是前端体积比较小的更多项目,很难利用具有较大体积和影响力的项目进行开源协作。

“这一次需要自上而下的强力推动。

那么,腾讯为什么必须利用大型开源项目?这实际上关系到腾讯的整个战略。

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

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

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

“开源自上而下与公司的战略紧密协调。

最初的自下而上的方法,如果只有一些前端和工具组件是开源的,是对情感的追求,但对业务没有影响。

然而,如果核心技术平台现在不开放,不仅感情,而且业务都可能受到影响。

所以腾讯必须这么做。

”王桔鸿说。

“开源代表了未来技术研发的一种方式。这种技术研发方式基于前几代人,不断向前迭代,而不是重复建造轮子。

腾讯开源运营主管王春雨表示:“一个好的开源项目会吸引很多参与者。在输出能力的同时,它将不断吸收社区的营养,变得越来越强大。

在开源技术的支持下,技术创新的周期将大大缩短。

腾讯改变了纯粹自发开源的最初“自下而上”的路径,采用了一种新的开源模式,将“自下而上”和“自上而下”相结合,将自发和自觉相结合。

在新模式的推动下,腾讯已经开发了一些非常核心和创新的项目。最近,新开发的轻量级物联网操作系统腾讯科技(TencentOStiny)和万亿级大数据消息中间件TubeMQ,也在今年8月发布了腾讯全堆栈机器学习平台安吉尔的3.0版,这是对天梭流(TensorFlow)功能的补充。

然而,在这个过程中,决策者也考虑到腾讯不再是一个能够克服技术障碍,从零开始“立刻”的小团队。

决策后不能失去最初的自下而上的传统,因为一线员工需要定义一种新的方法来实现开源决策。

因此,技术委员会最终将选择把内部和外部开源的主动权交给每个参与开源的技术工程师。

钛媒体获悉,自委员会成立以来,收集前线反馈的工作从未停止。

两万名技术人员讨论了公司的发展环境、统一框架、研发流程、技术氛围等问题,描述了他们的问题并提出了解决方案。

在腾讯内部技术社区代码师、“腾讯内部智虎”音乐查询和电子邮件等各种渠道,这些话题几乎变得“每天都有更多的帖子发布”,讨论热潮还在继续。

腾讯技术委员会(Tencent Technical Committee)认为,“只有从下到上才能找到真正的问题,只有从上到下才能快速准确地解决问题。

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

郑亚峰表示,开源让代码更加透明,像“talkischeap,showmethecode”这样的开放平台让工程师们更容易相互学习,相互交流,高效沟通。

郑亚峰还希望在未来开放的基础上,技术人员能够进一步提升腾讯的技术深度和高度。

对此,徐勇还认为,过去依靠“产品”赢得世界的腾讯更加关注其业务的增长,每个团队都在闭环中进行研发。

然而,它可能会发展到一定阶段,需要每个人一起进行技术变革和升级。只有这样,更多的资源才能有效地用于创新和代码质量。

腾讯副总裁姚兴(Yao xing)再次在腾讯内部技术社区代码师身上解释了“新代码文化:“开源是手段,协作是结果。

当一个组织太大时,把所有的研究和开发放在一起是非常低效的。

然而,“去集中化”的问题将使公司发展自己的研发,并闭门造车。

如何平衡“去集中化”和“再造轮子”,开源协作是一个非常重要的方法。

开源的目标是减少“轮子构建的重复”,具有开放的权限和可见的代码。

协作的目标是“去集中化”,这可以使用开源组件并在必要时重用。开源组件具有BG部门和腾讯的属性。开发人员是开源组件的共同参与者和创造者,而不是甲方和乙方,因此保持快速响应。

”“开源是手段,协作是结果。

当一个组织太大时,把所有的研究和开发放在一起是非常低效的。

然而,“去集中化”的问题将使公司发展自己的研发,并闭门造车。

如何平衡“去集中化”和“再造轮子”,开源协作是一个非常重要的方法。

开源的目标是减少“轮子构建的重复”,具有开放的权限和可见的代码。

协作的目标是“去集中化”,这可以使用开源组件并在必要时重用。开源组件具有BG部门和腾讯的属性。开发人员是开源组件的共同参与者和创造者,而不是甲方和乙方,因此保持快速响应。

今年年初,腾讯技术委员会的成立,再次明确了腾讯公司“开源协作、自主研究、云开发”的技术战略。

“开源、协作、云增长”已经成为腾讯新代码文化的关键词。

“我们希望从心底里这样做。工程师们写的每一行代码,除了支持腾讯自己的业务,还将开拓和创造更多价值。

在家里,所有的员工都应该在开源方面合作。开源将是一种文化的沉淀。

”王桔鸿总结道。

回到故事开始时的H.265,现在在腾讯,它是一个开源协作小组,代号为V265。

基于同一组基线代码,分为业务和场景,四个团队合作开发,奔向打造业界最佳视频编码器的目标,为腾讯自主研究业务和云业务中的视频压缩提供了强有力的支持。

You may also like...

发表评论