此文是阅读极客公园对 PingCAP CTO 黄东旭的采访后笔者产生的一些想法,笔者认为在黄总的言语之中包含着海量的 insight,故写此文记录分享之。

原文链接

Insights

“最近这些硬件的革新,使得原来很多的假设都不成立了。比如过去大家可能觉得数据库的瓶颈是磁盘,想怎么设计一个更好的 B-Tree 能够让磁盘磁头转得少一点。但现在全是 SSD,甚至未来可能持久化内存的东西都出现了。过去分布式系统的网络这么慢,带宽这么小,所以尽可能都是在单机或者本地上去做。但现在基本上单机访问远程数据库和访问本地数据库在吞吐量上表现差不多了。”

技术革新导致原本的理论假设不成立,要去寻找新的瓶颈,要以新方式来看待问题。

“所以我们喜欢「开源」。「开源」相当于用一些 to C 的方法论,在工程师的社区里通过病毒式传播让产品 adoption,别人用得不爽一定会 feedback 提 issue。用的人越多,它的质量就越好,质量越好,会变成一传十,十传百的这种效应,让产品正向循环下去。

对于基础软件,我的观点是像数据库、操作系统、云技术,或者云内部的基础软件,未来只有开源一条路,如果不开源,或者说内核不开源的话,产品的生命力是很差的。不像其他的商业软件,基础软件就像在水管、水电煤这样的基础设施的层面上,你不开源的话别人也不敢用。”

基础软件最适合开源,只有开源之后才有可能获得众多用户的反馈,才能够持续改进迭代版本,才能在工程师社区中进行“病毒式”的传播,产生正向循环。而且对于不开源的基础设施,是没人敢用的,没有用户就没有反馈,失去了变得更好的可能性。事实上,现在反过来看这些成功的应用,如 MySQL、Redis、Spring 的等确实都是开源社区运营,赢得用户之后直接拿下市场。

“从数据库的角度上来看,大家会发现,最早的关系数据库
SQL、TSQL,在互联网或者移动互联网开始爆发的时候,数量开始膨胀,单机系统怎么样都搞不定的时候,互联网公司没有办法,只能去做了一套 NoSQL,但 NoSQL 又有点过了,就把原来的传统管理模型全都扔掉,但至少能把数据存下来。所以我觉得历史是螺旋式发展。”

历史的螺旋式发展,好的产品必须应用在特定的背景下,太过超前的理念即使在当下实现出来也难以得到推行。技术开发不能脱离大众,还是不能单纯地做艺术品。

“对,我觉得未来数据一定是更大的状态,单机肯定是有问题的。硬件成本持续在下降,一定会到达一个临界点,就是数据本身的价值都比硬件成本要高,这样一来,我肯定是保护数据,怎么样把我的数据能无限存下来,并且能快速通过好用的接口来访问它。我觉得这个市场会很大,所以我从来都不跟别人说这个事情的天花板在哪里,因为我自己也不知道。”

在未来,数据本身的价值要比硬件成本更高,即 ,我们会花费更多的成本在保护数据、存储数据上。最好的媒介就是数据库了。

“我们早期策略上分两块,一块就是互联网公司,workload 数量很大,然后有很强的研发团队,开源社区的主力就是这帮人,随便用,而且我会很鼓励你们投人投精力去用它。

还有一部分是一些高净值客户,比如银行,业务已经倒逼他们要去用一些互联网的技术去解决问题。比如说即使 Oracle 用得不好,迁到 TiDB 上其实也是很平滑的过程,同时可以保证多数据中心高可用、强一致等这些特性,用起来很省心。

我觉得我们就是拿互联网最先进的技术给到传统公司,给他们赋能,而且让对方的迁移成本降得很低。”

这个观点真的很好,通过开源社区吃螃蟹、完善产品后再给传统公司使用,还节省了公司的人力成本哈哈哈。

“Hire for attitude, train for skill.”

态度是一切的前提,技能是可以传授的。

“对于小公司来说,没办法把每个人每天的工作,每个任务都亲自去帮你规划好。所以我们的管理风格还算是比较粗放吧。”

而大公司就是画好格子让你填,你也很难有机会去做划分好的小格子之外的事情。各有利弊吧。

“我们在国内的招聘方式也是挺特殊的,我们不太关心你到底在哪个城市工作。我们重度依赖像 Google Docs、Slack、GitHub、Jira、Confluence 这种生产力工具,基本上能够摆脱面对面的会议,这个是很重要的。我们不鼓励开长会,如果要开会,就开半个小时、15 分钟的短会。

远程有个好处就是它会迫使工程师把所有想做的东西进行文档化,任何东西都可以被检索。我觉得这样更符合现代化的管理模式,有充足的时间,更加灵活地安排自己的生活,是一个更好的工作方式。”

生产力工具一人使用提高的效率有限,而在公司(团体)层面上一起使用,那就是力压对手提升效率的一把利器。

文档化其实非常重要,只有知识积累的过程完善,这家公司才能够长久地传承下去,能够持久地发展下去而不用担心会去开倒车。员工的经验和想法是公司最宝贵的一笔财富。PingCAP 所有项目的文档都非常的全面、通俗易懂,可以说是我在大陆开源项目中见到最优秀的项目文档了。

“为什么要来(社区)。

两种情况,一种就是我实际就在用这个东西,发现这个东西不好,某些地方有 bug 或者说某些地方的功能不是我想要的,我想要去改进它。大多数机构都是出于这种思路来贡献的。

第二种人就是纯粹为了做出成就感。觉得这事情很不错,我能参与到这个项目来了,「I want to help」,我想去帮助别人,同时我能够得到证明,我是这个项目的 heavy contributor、committer,得到尊敬或者认同感。

对每一个 contributor,哪怕提交一行代码或者修改一个文档,我们都会给他一个大礼包,包括贴纸、杯子等等周边产品。如果贡献比较多的话,我会亲手给你写一封明信片表达感谢,包括我们每年办的这些大会,只要是 contributor 都是免费的。”

PingCAP 运营开源社区还是有他的独门秘笈的。贡献能够感受到奖赏,是自主驱动的开发者们最大的欣慰了。这也同时证明了 PingCAP 社区做的好的合理性,感谢 PingCAP,才能够有一个更好的大陆开源生态。


知识共享许可协议
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。