推倒「烟囱」这两年:腾讯正进行一场自我革命
担任腾讯技术运营副总监好几年,徐海丽的风格一向稳健,可今年十月底申报预算时却特别紧张,因为她打算为一项工作第三次“狮子大开口”,向公司申请一大笔钱,“公司还会批吗?”
何况批预算的总裁刘炽平是出了名的“火眼金睛”,在预算会上审项目,要么一言不发直接过,要么随时打断提问题。轮到自己,徐海丽惴惴不安地看着老板,只见刘炽平点点头,竟自言自语地说“这个钱花得值”——预算通过了。
短短几个月中,这样的意料之外已是第二次发生在她身上了。
另一次发生徐海丽休假时的大半夜,家人的手机响了,竟然是团队同事找来,声音紧张又兴奋。徐海丽一惊:出了什么事?原来,CEO马化腾刚刚回复了团队的一封邮件,要求修改邮件的内容格式,让手机上看起来更方便。而这封邮件,不过是徐海丽团队发给全员的例行工作进展邮件。
让刘炽平如此大方、让马化腾如此仔细的工作,究竟是什么?
151秒识别128万张图,底层技术收入写进财报
答案是四个字:开源协同。
简单说,开源协同就是腾讯内部源代码全部开放,不同团队协同开发,共建腾讯基础技术平台。
外部人可能了解的少,实际上,开源协同已在腾讯推进两年。目前,腾讯内部代码开源率已超过80%,组建和孵化了151个Oteam(开源协同小组的简称),涵盖了计算、存储、数据等所有互联网技术基石,涉及了微信、QQ、腾讯云等所有腾讯核心业务板块。
开源协同不仅为腾讯省下了数亿元的成本,更通过研发效能的提升,技术辅助腾讯自己的产品、腾讯云上的广大产业客户乃至全球技术共同体。
以云帆Oteam为例,这个小组已有70多位程序员参与贡献代码,主攻深度学习框架,集结了腾讯所有事业群的相关技术高手,成立半年后,小组成功刷新图像处理领域著名的ImageNet训练速度世界记录,只需2分31秒就能识别出ImageNet内128万张图片内容,Top5精度达到93%。
在编程语言java的openJDK国际开源社区里,腾讯是迄今为止唯一一家因显著贡献被点名致谢的中国公司,在社区最近发布的JDK15版本中,JDK Oteam向主分支贡献的代码名列中国公司第一。
在全球最大的代码托管平台——Github上,腾讯也已经悄悄贡献了超过100个开源项目,累计获得超过30万个星标,开源贡献度居全球科技企业头部。
底层技术收入甚至写进了刚刚出炉的腾讯2020年第三季度财报。企业级技术优势被认为是腾讯发力产业互联网的新亮点,今年前九个月,基础架构安全产品收入同比增长178%,云原生安全产品客户规模超过一万家。
这还是那个被坊间笑称只会做产品没有技术标签的腾讯么?
开源协同正在悄悄地重构着腾讯的肌理。腾讯向来以赛马文化知名,但开放协同恰恰是封闭赛马的反面。两年来,腾讯究竟经历了什么,不惜在技术上告别“赛马”转向“协同”?
但可以肯定的是,无论是取得共识,还是推行实践,只要对自己“动刀”,就注定了开源协同会历经艰辛。
哪个能代表腾讯,哪个看上去都不够强
作为推动开源协同落地的项目经理,徐海丽目睹了这个艰辛的过程,也看到了她在腾讯十三年所不曾看过的景象,比如两个程序员互吹整瓶红酒。
张青林酒量平平,但在2018年底一个晚上,却主动干掉了一整瓶红酒,对于低调平实的程序员来说堪称罕见。
更稀奇的是,他竟然是向一直以来的“对头”——另一个程序员雷海林敬酒。俩人的团队同在腾讯技术工程事业群(简称TEG)做数据库技术,关系却很僵。用雷海林的话说,曾认为彼此“老死不相往来”。
“互撕”在腾讯内部并不稀奇。
多年来赛马机制催生出许多业务相似的团队,产品侧在赛马,技术侧也在赛马。优点是产品的需求能在自己的技术团队里闭环,得到最快速的支持;而缺点是,重复技术自然造成资源浪费,尤其是研发效能低下,劲儿没法往一处使。
能推出微信、QQ这种十几亿用户级别的产品,腾讯存储、计算、数据等支撑产品的技术家底一定不薄。但伴随产品取胜,留下一根根技术大烟囱,好比强大的水和电被分散在一个个独立运转的工厂里。
“我们梳理过公司内部重复的技术团队,有150个之多,向Martin(刘炽平的英文名)汇报时,他都惊呆了。”TEG运营管理部总经理郑亚峰回忆。
2018年9月30日,腾讯宣布战略调整(简称930变革),树起产业互联网大旗,专门成立了云与智慧产业事业群(简称CSIG)。而要向其他产业提供互联网的水和电,腾讯云需要输出的,恰恰是公司级的技术能力。
但分散的技术能力显然既缺少说服力,也缺少竞争力。这些烟囱在内部谁也不服谁,单拿出来又都没法跟外面整体比较,简言之,就是“不强”。
“拿数据库来说,光是关系型数据库就有三个技术产品放在腾讯云上,客户一看都懵了,究竟哪个能代表腾讯?哪个看上去都不够强。”郑亚峰说。
数据库只是腾讯几百个技术烟囱之一。不破不立,腾讯高级执行副总裁兼TEG总裁卢山给出的答案十分直接:敲掉烟囱,拉通技术。
930变革后,腾讯在各事业群之上专门成立技术委员会,卢山牵头。数据库是技术委员会点名“必须拉通”的首批技术之一。
在2018年底双方宣布合作的晚宴上,看着张青林一瓶红酒喝完,雷海林没示弱,也干了一瓶。酒精的刺激下,也许是回顾过往的感触,也许是多年心防的释放,放下成见的两人抱头痛哭。
两瓶酒和男人的眼泪,成了团队合作前夜最好的“破冰”仪式。
在技术拉通的大势之下,还有多少个醉倒的“雷张”无从知晓。接下来的问题是:该怎么把散落在公司各处的技术拧成一股绳?
走出条新路,就得先革自己的命
压力漩涡中心的卢山陷入焦虑:拉通技术意味着打破封闭,可封闭正是过去腾讯胜利的法宝。
革自己的命,谈何容易?
郑亚峰能理解这种复杂心情,他见证过腾讯技术打过的大大小小无数硬仗。在中国互联网公司里,腾讯服务面最广、场景最多、用户时常最长,“海量”是腾讯技术最重要的标签之一。
海量时代讲究技术专有、敏捷开发,一个功能的实现要经过从需求到开发、测试、运营上线等各环节的串联路线,每个环节把自己的能力做到极致,专有的同时也是封闭。
但随着开源和云化成为最大的两个技术趋势,持续开发持续集成,大量开源组件可以直接用,测试运营等则交给研发效能工具,一行代码可以很快让用户看到效果。
曾经的先进变成如今的落后,封闭是病根,那开放就是解药。
卢山想明白了。他说服腾讯最高决策层“总办”,借势930变革,用“开源协同”的方式拉通技术。
但期待中的“大干一场”,并未立刻出现:从2018年底提出到2019年5月,腾讯的“开源协同”在半年里,几乎毫无进展。
“原因特别简单,大家都觉得开源协同是好事,但不是我的事。”在腾讯技术委员会负责开源协同项目的郑亚峰说。甚至有技术团队不理解地问:“我们靠本事打下的阵地,凭什么别人来抢地盘?”
2019年6月,腾讯技术委员会的会议上,卢山下决心拍板“全面开源”。不光是底层的共同代码开源,所有专门为产品服务的业务代码也要内部开放,否则总有人说是业务代码藏起来。
说到感慨处,卢山在会上红了眼眶,对着各事业群的技术副总裁们说:“等多年后我们都离开了腾讯,回头看留下的东西都是一堆烟囱这种残垣断壁,心里会不会痛?”
技术委员会开启自上而下的强推,决定从最重要的底层技术“山头”开始动刀,“不同意开源协同的就上总办”。
基础的名字服务(一种对IP地址进行名字编码以方便后台调用的技术)被点到。TEG基础架构部组长王洪智受命做名字服务Oteam,才发现公司里竟然有cl5、织云l5等眼花缭乱的九个名字服务系统。
怎么把九个砍成一个?王洪智懵了,“当时我们团队在维护其中最大的一个,另外八个里我只认识两个,还不太熟。”
平台与内容事业群(简称PCG)的内部合并让Oteam找到一个契机。930变革时,PCG由原先三个事业部合并而成,大量类似的技术服务亟待整合,九个名字服务里有三个都在PCG。
“我们首先找到PCG的团队,提出了统一全公司名字服务的方案,经过四轮讨论和修改,统一方案得到了双方的认可。”王洪智先把PCG的“三合一”团队拉了进来。
这让王洪智信心倍增,他带着统一方案又成功说服CSIG的第五个团队,接着剩下四个团队也顺理成章地都加入了。Oteam给公司级的名字服务取了一个响亮的名字——北极星。
截至2020年9月底,北极星已更新至第12个版本,整合了腾讯全公司90%以上的服务,有110个部门、140万节点接入了北极星,接口的日调用量超过2.5万亿,调用成功率超过99.999%,曾经的cl5和织云l5在10月20日正式下线。
从大学毕业进入腾讯,王洪智做“码农”五年,从没想过有机会做一个公司级的技术产品。
“我们九个团队第一次见面时还畅想过,将来提到腾讯的名字服务就是北极星了,我们再完善些也会贡献到开源社区。”王洪智嘿嘿笑说。
从海量到云,新时代提出新的技术要求,敲烟囱的人终于跑通了一条自己的新路。
“全行业只有腾讯选择了开源协同这条路,这是腾讯的创新。”郑亚峰认为,这条路以开放和协同为抓手,提供了一种新技术中台的虚拟组织形式,提升研发效能,促进技术进步。
趟进深水区,反而不焦虑了
“新鹅”杨晓峰,虽然在JDK(编程语言java的开发工具技术)领域很资深,却一直觉得:“谁会关注我们这些做基础技术的?”
刚入职三个月,他就代表JDK Oteam在腾讯深圳总部滨海大厦领了个大奖——2019年度开源协同优秀奖。
“腾讯招我来牵头JDK开发的时候就说了,要用开源协同的方式做,我其实就是冲着‘协同’两个字来的。”杨晓峰认为,把基础软件开发和全公司的产品需求融合在了一起,Oteam的方式很难得。
10月,JDK Oteam在滨海大厦举办生态开放日。杨晓峰没想到,业务总经理都亲自来参加活动;更没想到,当看到Oteam成员沉醉于讨论技术细节、以致于超时了都没发现,他忽然被感动了。
杨晓峰不再认为自己的工作在腾讯是“无人关注”的:“开源协同这事,给了对基础技术有兴趣的人一个舞台。”
这正是徐海丽期望看到的。生态开放日活动是她今年推动开源协同的一个重要抓手,帮助Oteam在公司内外打造技术影响力,鼓励程序员们找到更多存在感和荣誉感。
“我们叫培育新代码文化,让开放和协同的文化深入人心。”徐海丽说。从当初旁观雷海林和张青林的“红酒泯恩仇”,她就隐隐感觉到某种精神被激发,只要有合适的技术土壤和技术氛围,腾讯的技术还能“干出更大的事”。
程序员的热情被点燃。仅2019年,腾讯新增的代码行数就高达12.9亿,新增研发项目超过3500个。
今年6月,集合了腾讯各事业群数据库内核开发精英力量,数据库Oteam正式发布首个开源协同版本的数据库内核TXSQL-8.0,这是腾讯历史上第一个公司级MySQL内核统一版本,可为腾讯自研业务以及广大云客户提供更强大的支持。
码客(腾讯内部的技术社区)中“数据库技术”圈子的成员已超过2800人,一个置顶帖子问:腾讯云和友商的数据库产品有何差距?获赞最多的回答来自一位数据库产品总监。他写道,腾讯云和所有兄弟团队“已经不止是开源协同,而是全面合作开发”,腾讯云数据库的未来“砥砺前行,大有可为”。