最下面是核心引擎层。
调度算法。数据处理管线。索引系统。负载均衡的核心策略。
这一层,是我在2015年写的。十年来陆陆续续迭代了几百个版本。
这一层的代码——
从来没有提交到公司的Git仓库。
公司仓库里有一个叫"core-engine"的仓库。里面有什么呢?
一个README文件。
几个接口定义文件——.proto文件,gRPC的接口描述。
还有一个/lib目录,里面放着编译好的二进制文件——.so文件。
所有上层服务调用核心引擎,都是通过gRPC接口调用这些二进制文件。
没有人看过这些二进制文件的源代码。
因为源代码不在那里。
源代码在我的本地。在我自己的笔记本电脑上。在三个加密的移动硬盘里。
每次核心引擎需要更新,都是我在本地编译好,把新的。so文件替换到服务器上。
这个流程,十年来没有变过。
为什么没有人质疑?
因为没有人在意。
核心引擎是一个黑盒子。它工作正常,输入数据,输出结果,性能稳定。上层开发只需要调用API就行了。
贺鹏来了之后,做过一次代码审计。审的是服务层和业务层。
核心引擎?
“这块是建明负责的嘛,他在就行了,不用审。”
他自己说的。
在管理会上说的。
因为他打开那些。so文件也看不出什么。他需要源代码才能审。但他不知道源代码不在仓库里。
他从来没点开过那个仓库看一眼。
或者他点开了,看到一个README和几个接口文件,以为源代码在某个子模块里,懒得深究。
不重要了。
我坐在家里,打开了那个仓库的提交记录。
最后一次提交:2019年3月17日。张建明。“初始化项目结构。”
五年了。
五年没有任何提交。
如果有人认真看一眼——哪怕只是看一眼——就会发现,这个支撑着整个系统的核心模块,在公司的代码仓库里只是一个空壳。
但没有人看。
我关掉电脑。
坐了一会儿。
给老马打了个电话。
“马哥,你下午有空吗?出来坐坐。”
“行。在哪?”
“老地方,楼下那个苍蝇馆。”
下午三点,我和老马坐在苍蝇馆里喝啤酒。
老马比我大两岁。工号005。做了八年测试总监。
去年,贺鹏把测试团队“扁平化”了。测试总监这个岗位取消,老马变成了普通的高级测试工程师。
降级。
老马没闹。他老婆刚查出甲状腺结节,正在治疗。他不能丢工作。
“想好了?”我问他。
老马看着我。
他太了解我了。坐了八年对面工位的人。
“你想走?”
“嗯。”
他喝了口酒。
“早该走了。”
“你呢?”
“我再撑撑。等我老婆那边稳了。”
我点了点头。
“建明,”老马放下杯子,“你走之后,核心引擎那块……”
他没说完。
我看着他。
他也看着我。
然后他笑了。
“行,我不问了。”
我们碰了一下杯。
回家以后,我打开我的三个加密硬盘,把所有核心引擎的源代码做了一次完整备份。
三份备份。一份放家里保险柜。一份放银行保险箱。一份上传到我的私人云盘,加密。