专栏介绍
「对话 CTO」是极客公园的一档最新专栏,以技术人的视角聊聊研发管理者的发展和成长。
本专栏由企业级研发管理工具ONES的创始人&CEO王颖奇作为特邀访谈者。王颖奇曾参与金山软件 WPS、金山毒霸等大型软件的核心开发工作;2011 年创立了正点科技,旗下产品正点闹钟、正点日历在全球用户过亿;2014 年,王颖奇在知名美元基金晨兴资本任 EIR,并以个人身份参与十余家公司的管理咨询工作;2015 年,王颖奇创立 ONES,致力于提供企业级研发管理工具及解决方案。
摘要
有像甲骨文这样的统治级巨头在,数据库市场还是个好的创业领域吗?在 PingCAP 联合创始人&CTO 黄东旭眼中,答案是肯定的,数据库行业的转折点已经到了。
黄东旭曾在豌豆荚从事 infrastructure 相关工作,在分布式存储领域有着多年的积累和实战经验。在他看来,伴随着分布式数据库理念和技术的成熟,对传统数据库理念和技术的依赖正在走向瓦解。
开源理念的普及也在加速数据库行业走向下一个阶段,「像数据库、操作系统、云技术,或者云内部的基础软件,未来只有开源一条路,如果不开源,或者说内核不开源的话,产品的生命力是很差的。」
一切正在 PingCAP 中顺利落地。作为开源新型分布式数据库公司,PingCAP 研发了分布式关系型数据库 TiDB 项目,具备「分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活」等核心特性。目前公司准生产测试用户 1400 余家,涉及互联网、游戏、银行、保险、证券、航空、制造业、电信、新零售、政府等多个行业。
本期对话 CTO,我们请到了 PingCAP CTO 黄东旭来谈一谈他对于数据库行业的技术和行业演进的理解,以及商业公司究竟需要什么样的数据库。
分布式数据库、开源数据库的蓝海机遇在哪?
颖奇:PingCAP做的事情,我认为在中国工业领域上具有很大意义。因为几乎没有其他公司做过,你们是怎么想到做这件事的?
黄东旭:中国过去也不是没有做数据库的公司,我们和他们不太一样在于,一是我们是类似于互联网公司,或者说创业公司的路径,是走融资发展的;二是技术上,我们公司是基于分布式数据库的理论成立的。
过去三四十年,数据库市场都是依赖像 Oracle、IBM 所建立的理论基础运行。但在 21 世纪,Google 提出分布式系统技术后,随着硬件条件的成熟,像 SSD、万兆的网卡,带来的改变就是处理的数据量在持续地变大。数据库市场到了需要去做修订或者说要有个转折的地方了。数据库行业最根基的东西在发生变化,而这一块还没人做,所以说一定要找到正确的切入点。
颖奇:你们找到的切入点是什么?
黄东旭:就是分布式理论怎么跟传统关系数据库理论融合的点。
最近这些硬件的革新,使得原来很多的假设都不成立了。比如过去大家可能觉得数据库的瓶颈是磁盘,想怎么设计一个更好的 B-Tree 能够让磁盘磁头转得少一点。但现在全是 SSD,甚至未来可能持久化内存的东西都出现了。过去分布式系统的网络这么慢,带宽这么小,所以尽可能都是在单机或者本地上去做。但现在基本上单机访问远程数据库和访问本地数据库在吞吐量上表现差不多了。
还有就是选择「开源」。中国传统软件数据库的技术软件商业模式,跟传统的软件很像,就是做一个产品,招一堆销售挨家敲门。我们觉得这样效率太低。就现在而言,基础软件好不好关键是在于怎么在最短的时间找到最多人来去用这个产品,能够让它变得更好,变成一个正向循环。但传统软件招销售并不是一个特别好的选择,因为扩张速度取决于销售敲门的速度。
颖奇:靠销售肯定来不及。
黄东旭:所以我们喜欢「开源」。「开源」相当于用一些 to C 的方法论,在工程师的社区里通过病毒式传播让产品 adoption,别人用得不爽一定会 feedback 提 issue。用的人越多,它的质量就越好,质量越好,会变成一传十,十传百的这种效应,让产品正向循环下去。
对于基础软件,我的观点是像数据库、操作系统、云技术,或者云内部的基础软件,未来只有开源一条路,如果不开源,或者说内核不开源的话,产品的生命力是很差的。不像其他的商业软件,基础软件就像在水管、水电煤这样的基础设施的层面上,你不开源的话别人也不敢用。
颖奇:我们看到在中国实际上有两件事情之前没怎么做好。第一是特别基础的软件,第二是做一个特别好的开源公司,你们算是把两种结合起来的「鼻祖」。请问你们具体是怎么做的呢?
黄东旭:我觉得有一点是因为 PingCAP 或者 TiDB 选的这个坑特别好。过去大家都知道 MySQL 数量大了以后只能 sharding,现在 TiDB 就是解决这个坑。大家都非常清楚这是个痛点,你不用去跟别人解释这就是一个非常厉害的内核代码。有需求有痛点,然后问题足够清晰,也足够大。
颖奇:那你觉得开源这个事情会把PingCAP带到一个什么样的位置上?
黄东旭:从数据库的角度上来看,大家会发现,最早的关系数据库 SQL、TSQL,在互联网或者移动互联网开始爆发的时候,数量开始膨胀,单机系统怎么样都搞不定的时候,互联网公司没有办法,只能去做了一套 NoSQL,但 NoSQL 又有点过了,就把原来的传统管理模型全都扔掉,但至少能把数据存下来。所以我觉得历史是螺旋式发展。
其实这两年已经开始有这个趋势,就是新一代的数据库又开始回归 SQL 模型,可能未来持续十年会有一个关系型数据库的复兴吧。过去是因为分布式理论,以及硬件环境没有办法去跟这个模型很好地结合在一起。但至少以我们的经验来说,现在分布式基本上能满足很多需求。
颖奇:所以传统数据库公司是在单机上解决这种数据的问题?
黄东旭:对,我觉得未来数据一定是更大的状态,单机肯定是有问题的。硬件成本持续在下降,一定会到达一个临界点,就是数据本身的价值都比硬件成本要高,这样一来,我肯定是保护数据,怎么样把我的数据能无限存下来,并且能快速通过好用的接口来访问它。我觉得这个市场会很大,所以我从来都不跟别人说这个事情的天花板在哪里,因为我自己也不知道。
颖奇:早期还是在数据价值比较大的行业里来应用会更好一些?
黄东旭:我们早期策略上分两块,一块就是互联网公司,workload 数量很大,然后有很强的研发团队,开源社区的主力就是这帮人,随便用,而且我会很鼓励你们投人投精力去用它。
还有一部分是一些高净值客户,比如银行,业务已经倒逼他们要去用一些互联网的技术去解决问题。比如说即使 Oracle 用得不好,迁到 TiDB 上其实也是很平滑的过程,同时可以保证多数据中心高可用、强一致等这些特性,用起来很省心。
我觉得我们就是拿互联网最先进的技术给到传统公司,给他们赋能,而且让对方的迁移成本降得很低。
「商业公司」如何管理「开源社区」
颖奇:可以跟大家讲一下PingCAP对人才的要求和你们的管理方法吗?
黄东旭:我一直信奉一句话,「Hire for attitude, train for skill」。
首先你要打心底里认可这个事情,是一切往后谈的基础。这对我们来说不难,很多工程师他们还是有共同理想的。
第二点就是研发人才的 skill set,我可能会更倾向于是在互联网,或者说在做这种大规模分布式系统。互联网人有个优势在于他们对新技术的接受度特别高,思想特别开放,没有一些条条框框的东西。
第三点就是特别喜欢年轻人,我们会刻意地让团队里面有一些非常新鲜的血液。
第四点的话我们并不强求,就是人的责任心和主人公意识,这其实跟我们的晋升体系有关。我们的晋升体系跟 Facebook 很像,团队在实际工作的时候,让员工的特点会慢慢浮现出来。比如说小明,每件事情交给他都特别靠谱。大家都公认觉得他是个靠谱的人,慢慢形成这样的效果。
对于小公司来说,没办法把每个人每天的工作,每个任务都亲自去帮你规划好。所以我们的管理风格还算是比较粗放吧。
颖奇:你们公司现在是有一些外籍工程师?
黄东旭:对,我们也有一些外籍人士,大概七八个人吧。我们比较国际化。因为我们这个项目是开源的,用户用出问题了一般会去上面提一个 issue,很多国内用户直接用中文写 issue 上去,我们还有一个团队专门把中文 issue 翻译成英文,因为这个东西要同步嘛,在别人遇到同样问题去搜索的时候也能看到。
颖奇:你们的TiDB或者TiKV里,我看到有几百个contributors,那里面有多少是外籍的?
黄东旭:一半。包括我们的文档都是中英文一对一的比例。
我觉得在哪做这个事情,这个问题已经不重要了。包括现在我们很多人才,在加入之前就已经是项目的粉丝,有些人甚至都不用面试,都不用看 GitHub,因为这个人天天就在 commit code。
我们在国内的招聘方式也是挺特殊的,我们不太关心你到底在哪个城市工作。我们重度依赖像 Google Docs、Slack、GitHub、Jira、Confluence 这种生产力工具,基本上能够摆脱面对面的会议,这个是很重要的。我们不鼓励开长会,如果要开会,就开半个小时、15 分钟的短会。
远程有个好处就是它会迫使工程师把所有想做的东西进行文档化,任何东西都可以被检索。我觉得这样更符合现代化的管理模式,有充足的时间,更加灵活地安排自己的生活,是一个更好的工作方式。
颖奇:开源社区可能有一套管理模式,商业公司也有自己的管理模式,现在你们在这两边的管理模式是一样的还是说会有一些区别?
黄东旭:我们是一样的。你可以认为我们自己的员工跟社区小伙伴的区别,就 TiDB 内核部分的开源来说,唯一区别就是我们给他们工资。
颖奇:你觉得未来中国会有很多这样的工作出现吗?
黄东旭:我觉得在技术软件行业会越来越多。
颖奇:早期美国的很多开源软件没有太多资本介入,所以发展周期会很长。你觉得资本介入会使得开源软件发展周期变短吗?
黄东旭:没有资本介入,或者说没有商业公司在后面支持的话,开源软件都不会有太强的生命力。开源我认为是分成两个阶段,一个是 1.0,一个是 2.0。1.0 是当年像 Glue、 GCC、Linux 内核这些项目;2.0 是就最近的这几年像 Eclipse、MongoDB、Databricks 这些开源软件公司,这些模式其实是更先进的,或者更加符合现在时代的做法。中国其实过去没有这样的东西,我们算是第一波。
颖奇:早期的开源公司商业化诉求没那么快,所以贡献者相对平等,也没有经济回报。现在您这边的项目里有两种方式,可能一百个工程师是拿回报的,另外一百个可能是不拿回报的。那现在一个项目里混杂了两种组合方式,你们的解决方案是什么?
黄东旭:我觉得其实这个问题的本质是:为什么要来(社区)。
两种情况,一种就是我实际就在用这个东西,发现这个东西不好,某些地方有 bug 或者说某些地方的功能不是我想要的,我想要去改进它。大多数机构都是出于这种思路来贡献的。
第二种人就是纯粹为了做出成就感。觉得这事情很不错,我能参与到这个项目来了,「I want to help」,我想去帮助别人,同时我能够得到证明,我是这个项目的 heavy contributor、committer,得到尊敬或者认同感。
对每一个 contributor,哪怕提交一行代码或者修改一个文档,我们都会给他一个大礼包,包括贴纸、杯子等等周边产品。如果贡献比较多的话,我会亲手给你写一封明信片表达感谢,包括我们每年办的这些大会,只要是 contributor 都是免费的。
颖奇:我觉得这个挺棒的。再问最后一个问题,你可以推荐几本书,给已经是CTO或准备想当CTO的人学习和借鉴。
黄东旭:我有几本书是很喜欢的,《Unix 编程艺术》是到目前来说对我影响最大的跟编程和计算机相关的书。更技术一点的是《Unix 环境高级编程 (APUE) 》。很多人想学编程可能看这本书够了,其他什么书都不用买,就这个。还有《大教堂与集市》,这个介绍 open source 的原始出发点。然后我最近在读《毛选》,还有王小波的小说。
颖奇:《Unix编程艺术》这本我也会推荐给年轻人看。这本书对我的影响非常大,读完使得我对整个计算机的软件体系结构有了非常深刻的认识。第一次读是在13年前了,至今对我的工作和创业都有很大的帮助。非常感谢东旭今天的分享。
本文作者:王颖奇
联系方式:wangyingqi@gmail.com
关注「万事ONES」微信公众号,查看更多「对话CTO」文章