年是中国互联网历史上值得纪念的一年,这一年BAT完成了对新浪、搜狐、网易的反向超越,成为“新三巨头”,而腾讯无疑是最大获益者,当年的中报里,腾讯的半年利润超过阿里、百度、新浪和搜狐的总和。
但业务上的快速扩张也让腾讯成为了众矢之的,年末3Q大战爆发,“全行业的敌人”在舆论中分外狼狈,“3Q大战改变了腾讯的战略,甚至部分地改变了马化腾的性格,他宣布腾讯进入半年战略转型筹备期,承诺将加大开放的力度。”(来源《腾讯传》)
不久之后腾讯举办了第一次开放者大会,并相继开放了QQ空间和QQ应用平台。还有一件相对不太起眼的事情也在那一年发生,腾讯开始在内部倡导开源,提倡“开放、共享、合力开发”的研发模式,这也成为后来腾讯开源的基础。不过,相比腾讯飙升的股价和快速推进的业务,腾讯的开源要缓慢得多,直到近两年才“步入正轨”。
年时,腾讯的开源项目开始在Github上公布;年,覆盖云计算、腾讯游戏、腾讯AI、腾讯安全、小程序等相关领域近20个项目对外开源;截止到18年6月,由腾讯发起的开源项目累计达到57个,在GitHub获得了近15万Star;在6月25日召开的LC3(LinuxCon+ContainerCon+CloudOpen)中国大会上,腾讯宣布将其自研开源项目——高性能RPC开发框架TARS,及其轻量化名字服务方案TSeer贡献给Linux基金会,并正式成为Linux基金会白金会员。
Linux基金会执行董事JimZemlin(左)与腾讯副总裁曾宇(右)
腾讯为什么要做开源?腾讯怎么做开源?以后又会怎么做?解答这些问题,让我们回到年。
开源:由内到外
毫无疑问的是,最初最直接的动力,就是对效率的追求。
如大众所知,内部竞争一直是腾讯的特色,在保持创新力的同时,显而易见的是存在内耗的可能,比如重复造轮子(框架工具):一个部门写好了,另一个部门也有类似的需求,只能自己再写一个。(实际在不提倡内部竞争的公司,这样的事情也不少见,类同数据孤岛一般)
在年,腾讯内部试水开源,好的项目会跨团队、跨部门、跨业务得到广泛使用。腾讯开源负责人许勇将最初阶段称之为“自上而下”,“年前其实腾讯起码技术上是挺封闭的。”许勇说,来自管理层的支持是必不可少的。
记者采访腾讯基层的程序员了解到,腾讯目前有内部交流的平台,许多程序员都会积极的在平台上开源小工具内部使用,其中优秀的会得到评选和鼓励,并在内部推广。该程序员在测试产品时,就会用到许多开源的工具,使用的过程中也会发现工具的问题,然后提交修复bug的代码。
腾讯副总裁曾宇
在年-年之间,对内开源的形式帮助腾讯减少了内耗和提升了效率,但对外开源还是相对敏感,“如果对外开源,要经过层层审批,假如一个开发把自己写的部分代码开源了,结果忘了里面有一些内网的东西,那就完蛋了。”该程序员说。
但从长远来看,将项目对外开源,形成活跃的开源社区,企业也能从中获取知识,带来的提升无疑要比内部开源更大。以此次捐献的TARS项目为例,TARS的开发始于10年前,彼时腾讯没有统一的开发框架,每个业务都有自己的开发习惯,每个团队也有自己的开发语言,这让开发协作出现了许多问题。比如不同语言之间的通信适配非常繁重,不同团队会重复实现一样的功能组件,而且代码质量参差不齐——有些团队没有实现业务容灾,有些团队为了快速上线,直接写死IP在代码中,甚至有的后台开发团队没有平台建设人员,操作都需要登录服务器,造成误操作。
基于这些开发和运维的痛点,腾讯MIG无线运营部研发团队在10年前研发出基于TARS协议的高性能RPC框架TARS,为开发和运维提供了一体化的微服务治理方案。目前TARS已经成为腾讯内最广泛使用的微服务治理开发框架和运营平台,为数百个产品提供服务,微服务规模达到百万级。
故事到这里结束,这会是不错的企业案例,但在解决内部需求的同时,TARS的应用也在向外蔓延,TARS团队与各种类型的企业和机构开始进行深度的技术交流与合作:与中国信息通信研究院合作,一起建立国内微服务相关标准;与大唐移动合作,共同开发基于TARS的5G核心网SBA架构;与财付通合作,开发基于TARS的银行核心网系统。而在TARS开源后,腾讯外的企业应用对社区提供了许多贡献。如阅文集团为TARS提供了PHP语言的补充,满足了PHP语言对于微服务治理框架的需求;科大讯飞为TARS扩展了对GoogleProtobuffer协议的支持;以及社区开发者为TARS提供了一键化安装脚本以及TARS-Docker镜像。
“TARS开源社区在国内开发者中已非常活跃,接下来,我们想进一步吸引来自全球更多的开发者。”腾讯开源顾问也是刚刚成为Linux基金会董事的刘昕在演讲中说,鉴于Linux是全球中立的开源组织,腾讯决定让TARS和TSeer加入Linux基金会——类比国内开发者对TARS的贡献,TARS的未来颇有想象空间。
腾讯开源顾问Linux基金会董事刘昕
开源在创新和开发上的高效率,还体现在可以快速地将想法转换成产品投入市场检验。一个典型的例子是TStack,最初是腾讯基于Openstack搭建内部使用云平台,在接入大量腾讯内部成熟的PaaS和SaaS服务后,积累了海量的的运营经验。2年前,也从内部开始走向外部提供腾讯云的服务,并深入参与到Openstack基金会的社区,目前腾讯也是Openstack基金会的白金会员,并在17年获得OpenstackSuperUser大奖。“这种新一代开源商业模式意味着,腾讯云TStack不仅可以按照国际规则参与开源社区,通过代码贡献把握和影响OpenStack社区方向,同时又能够基于客户需求将OpenStack产品化,降低企业级客户采用OpenStack的门槛,还可以将实践中积累客户需求反馈社区,推动社区良性发展。”刘昕说。
有关