腾讯的开源之路

但业务上的快速扩张也让腾讯成为了众矢之的,年末3Q大战爆发,“全行业的敌人”在舆论中分外狼狈,“3Q大战改变了腾讯的战略,甚至部分地改变了马化腾的性格,他宣布腾讯进入半年战略转型筹备期,承诺将加大开放的力度。”(来源《腾讯传》)

不久之后腾讯举办了第一次开放者大会,并相继开放了QQ空间和QQ应用平台。还有一件相对不太起眼的事情也在那一年发生,腾讯开始在内部倡导开源,提倡“开放、共享、合力开发”的研发模式,这也成为后来腾讯开源的基础。不过,相比腾讯飙升的股价和快速推进的业务,腾讯的开源要缓慢得多,直到近两年才“步入正轨”。

2016年时,腾讯的开源项目开始在Github上公布;2017年,覆盖云计算、腾讯游戏、腾讯AI、腾讯安全、小程序等相关领域近20个项目对外开源;截止到18年6月,由腾讯发起的开源项目累计达到57个,在GitHub获得了近15万Star;在6月25日召开的LC3(LinuxCon + ContainerCon + CloudOpen)中国2018大会上,腾讯宣布将其自研开源项目——高性能RPC开发框架TARS,及其轻量化名字服务方案TSeer贡献给Linux基金会,并正式成为Linux基金会白金会员。

腾讯的开源之路

Linux基金会执行董事Jim Zemlin(左)与腾讯副总裁曾宇(右)

腾讯为什么要做开源?腾讯怎么做开源?以后又会怎么做?解答这些问题,让我们回到2010年。

开源:由内到外

毫无疑问的是,最初最直接的动力,就是对效率的追求

如大众所知,内部竞争一直是腾讯的特色,在保持创新力的同时,显而易见的是存在内耗的可能,比如重复造轮子(框架工具):一个部门写好了,另一个部门也有类似的需求,只能自己再写一个。(实际在不提倡内部竞争的公司,这样的事情也不少见,类同数据孤岛一般)

在2010年,腾讯内部试水开源,好的项目会跨团队、跨部门、跨业务得到广泛使用。腾讯开源负责人许勇将最初阶段称之为“自上而下”,“2010年前其实腾讯起码技术上是挺封闭的。”许勇说,来自管理层的支持是必不可少的。

腾讯的开源之路

腾讯副总裁曾宇

在2010年-2015年之间,对内开源的形式帮助腾讯减少了内耗和提升了效率,但对外开源还是相对敏感,“如果对外开源,要经过层层审批,假如一个开发把自己写的部分代码开源了,结果忘了里面有一些内网的东西,那就完蛋了。”该程序员说。

但从长远来看,将项目对外开源,形成活跃的开源社区,企业也能从中获取知识,带来的提升无疑要比内部开源更大。以此次捐献的TARS项目为例,TARS的开发始于10年前,彼时腾讯没有统一的开发框架,每个业务都有自己的开发习惯,每个团队也有自己的开发语言,这让开发协作出现了许多问题。比如不同语言之间的通信适配非常繁重,不同团队会重复实现一样的功能组件,而且代码质量参差不齐——有些团队没有实现业务容灾,有些团队为了快速上线,直接写死IP在代码中,甚至有的后台开发团队没有平台建设人员,操作都需要登录服务器,造成误操作。

基于这些开发和运维的痛点,腾讯MIG无线运营部研发团队在10年前研发出基于 TARS 协议的高性能 RPC 框架TARS,为开发和运维提供了一体化的微服务治理方案。目前TARS已经成为腾讯内最广泛使用的微服务治理开发框架和运营平台,为数百个产品提供服务,微服务规模达到百万级。

故事到这里结束,这会是不错的企业案例,但在解决内部需求的同时,TARS的应用也在向外蔓延,TARS团队与各种类型的企业和机构开始进行深度的技术交流与合作:与中国信息通信研究院合作,一起建立国内微服务相关标准;与大唐移动合作,共同开发基于TARS的5G核心网SBA架构;与财付通合作,开发基于TARS的银行核心网系统。而在TARS开源后,腾讯外的企业应用对社区提供了许多贡献。如阅文集团为TARS提供了PHP语言的补充,满足了PHP语言对于微服务治理框架的需求;科大讯飞为TARS扩展了对Google Protobuffer协议的支持;以及社区开发者为TARS提供了一键化安装脚本以及TARS-Docker镜像。

“TARS开源社区在国内开发者中已非常活跃,接下来,我们想进一步吸引来自全球更多的开发者。”腾讯开源顾问也是刚刚成为Linux基金会董事的刘昕在演讲中说,鉴于Linux是全球中立的开源组织,腾讯决定让TARS和TSeer加入Linux基金会——类比国内开发者对TARS的贡献,TARS的未来颇有想象空间。

腾讯的开源之路

腾讯开源顾问&Linux基金会董事刘昕

开源在创新和开发上的高效率,还体现在可以快速地将想法转换成产品投入市场检验。一个典型的例子是TStack,最初是腾讯基于Openstack搭建内部使用云平台,在接入大量腾讯内部成熟的PaaS和SaaS服务后,积累了海量的的运营经验。2年前,也从内部开始走向外部提供腾讯云的服务,并深入参与到Openstack基金会的社区,目前腾讯也是Openstack基金会的白金会员,并在17年获得Openstack Super User大奖。“这种新一代开源商业模式意味着,腾讯云TStack不仅可以按照国际规则参与开源社区,通过代码贡献把握和影响OpenStack社区方向,同时又能够基于客户需求将OpenStack产品化,降低企业级客户采用OpenStack的门槛,还可以将实践中积累客户需求反馈社区,推动社区良性发展。” 刘昕说。

回溯自2010年至今的8年,腾讯从一个能做出有竞争力的产品(怎么做出来的暂且不提)成为全行业公敌的公司,转变为开放化的巨头;而腾讯开源的发展,从最初内部开源提升效率到对外开源繁荣生态可以说,就是腾讯的转型在技术路线上的体现

。在2018年,腾讯成立开源管理办公室,每个开源项目都设立相应的管理委员会,刘昕表示,除了输出开源项目和贡献代码,腾讯也会探索开源的商业化模式。

中国距离开源还有多远?

“在国内,尤其是大企业,做技术分享也是很难的事情。”腾讯开源负责人许勇说。

而长期以来的这种风气,也影响到了中国的工程师文化——归根结底,技术都是由人实现的。腾讯副总裁曾宇写了十几年的程序,在他看来,国内的应用虽然发达,但在工程水准上,距离国外仍有较大差距。或者,更准确的说法不是差距较大,而是差异较大。在中国的互联网企业中,程序员和开发者更多专注到具体的问题上,如提升性能、解决漏洞、放开并发等,曾宇评价,这样的工作效率比较高,但却会缺失对整个体系整体的把握,“简单来说我认为还是工匠手艺文化和公司手艺文化的区别,我们手艺不错,但是一座大厦不只是一块一块砖码出来的,要码出来让它不至于倒掉,这个问题是要构建一个很庞大的系统,这些系统化的思维,这些架构的能力其实是不可或缺的。”

腾讯的开源之路

腾讯开源负责人许勇(左)、腾讯副总裁曾宇(中)、腾讯开源顾问&Linux基金会董事刘昕(右)

相对来说,这些都是基础性和长期性的需求,和近期目标或KPI没有明显关联,因此也往往被企业甚至技术管理者忽略,工程师文化的培养也无从谈起。但至少在腾讯,如曾宇这样的高层,已经注意到了这个问题,并开始在腾讯内部推动工程师文化,和程序员架构、抽象、分享、产品复用能力的培养。

腾讯并不缺少技术的基因,如早期创始人马化腾、张志东都毕业于深大计算机系。自上而下的引导下,工程师文化正在复苏,开源项目,就是工程师们展示和学习极佳的平台。任何一个项目,都会由于开发者不知觉的疏忽,而存在Bug或漏洞,开源项目一直被诟病的安全性问题,在曾宇看来,并非是开源让项目变得更不安全(就像不开源的项目也有很多不安全的),倒不如说是开源项目由于应用更广泛,因此出现问题的影响更明显、范围更大。目前腾讯的开源项目在上线之前,代码都会经过严格检查,在开源社区,项目会接受全社区的检验和评价,优秀的开发者也可以帮助发现和弥补安全漏洞,对工程师来说将是很大的激励,在项目不断完善的同时,工程师的能力与规范性也在同步提升。

当然,问题也依旧存在,在开放技术、解耦、优化等方面,腾讯就因缺少经验而遇到过不少困难甚至“历史包袱”,但自上而下的支持和自下而上的工程师文化,以及推出新的技术项目都和技术落地,在腾讯都已经是进行时。谈到此次与Linux的合作,曾宇说:“朴素地说,我们想借这个事情改变我们自己的研发模式,我们想加速技术的创新,我们想融入到这个OPEN SOURCE(开源)的大环境下去。”

腾讯的开源之路

作者 | 李昊原


分享到:


相關文章: