本文记录了自己的个人生活经历及其感悟,以回忆为主,文中所有姓名均为化名,无心对任何人或者是公司造成影响,如果可能发生,请联系我进行修改
初入创业公司
公司原本只有三个人,我本以为他们三个是联合创始人,但到后来我发现创始人只有朱总一个。朱总曾先后在多家大型外企工作(我记得的就有惠普和甲骨文),有很多年的技术经验,在「去 IOE」的大背景下,希望基于 PostgreSQL 研发自主可控的国产数据库。CTO ——范畴,在华为研究所里开发了多年的缓存,后来去过中东做市场,也是一个非常有想法的人,最初也是他找到了我。另一个叫何敏,2012年西安电子科技大学毕业,原本供职于深圳国家电网,在那里做 C#,因为公司数据库选型和朱总结识。除了他们,其他人都跟我一样,是应届大学生。除了前端的邵梦,我们都是 C 语言开发入职的,按照最初的计划,进公司后是要从事数据库开发的。
范畴为我们进行了为期数日的 C 语言岗前培训,同时,朱总还为我们进行了数据库相关知识培训。老实说,那段时间学到了蛮多东西。公司有个项目叫 EcoX,是朱总以前用 Perl 脚本写的 PostgreSQL 高可用集群管理系统,因为要商用,所以范畴那段时间一直在用 C++ 重新实现。那时候公司还没有任何基础设施建设,他维护代码特别麻烦,所以让我给解决一下。svn、samba、ldap,这些我以前听都没听过的东西,也还包括一些其它基础服务,我都给搭了一遍。当时我本来想推荐 git 而不用 svn 的,但是我那时项目做得少,最多也就是用过 Github,没有其它解决方案,索性也就搭的 svn。直到后来在西科大做了很多项目的研究生建平过来带来了 gitlab 的解决方案,我们才正式使用 git 的。不得不说,那确实是个好东西,直至今日我做自动化运维还用它✨✨✨。
鸿鹄系列
我们的数据库称作 鸿鹄数据库,PG 是 OLTP 的一把好手,为了丰富应用场景,使其更好地支持 OLAP ,他第一步想要做的是加入列存。自主研发数据库门槛特别高,然而我们都是新人,大多数人连数据库原理都不懂,这可如何开始?我给范畴推荐了「中国大学 MOOC」上哈工大战德臣教授数据库系统的系列课程,这是我当时备战秋招的时候学过的,觉得还不错,后来他也在上面学习,还推荐给了大家。只是可惜的是,我后来一直没有在做数据库。
刚进公司那会儿,公司有三台服务器(两台二手 hp,一台华为),我们自用的服务器都是从华为那台虚拟出来的。宿主机是 SmartOS 系统,它支持多种虚拟化技术:zone、基于 zone 改造的 lxc 以及从 linux 移植过来的 KVM ,前两种就是我们当前总在讲的容器化技术,使得运行在上面的应用有可以利用裸机的 IO 能力,在传统虚拟化技术面前有着非常大的优势。而支持 KVM 可以让用户将原本运行在虚拟机中的服务迁移过来;其次,SmartOS 原生支持 ZFS 文件系统。ZFS 作为最先进的文件系统之一,自带存储解决方案,服务器上的磁盘甚至不需要做阵列。这种技术特别适合数据库这种对 IOPS 要求很高的应用。朱总希望将其改造成自主可控的国产数据中心产品,所以做一个管理系统将这种能力管理起来成为了我们另一个项目,后来朱总给它取名叫 鸿鹄彩云「😅老实说,我对这个名字存有保留意见」。
数据中心国产化之路
由于数据库产品的门槛实在过高,「鸿鹄彩云」便成为了我们的当务之急。范畴主要负责架构设计,我和常齐负责技术选型。因为采用 SOA 架构,所以选择一种较为合理的服务间通信方式是我们技术选型的头等任务。我们决定消息队列直接采用 OpenStack 在用的 RabbitMQ;Protobuf 以二进制流方式进行网络传输,作为序列化技术远比 XML 和 JSON 的效率高,只使用相对复杂,基于 Protobuf 的 gRPC 还是 Beta 版本,当时我们还在考虑要不要采用来着😯。因为大家都是新手,所以也没做什么详尽的测试,就都用了一下。不过,很快事情就变得不一样了。
某天,朱总跟我演示了一样东西——Triton「Joyent 旗下的数据中心产品」,它基于 SmartOS「SmartOS 也是 Joyent 公司的产品」,它拥有几乎所有我们想要的功能,并且还经市场检测过的。没经过太多犹豫,我们就放弃原来的工作,一门心思放到了 Triton 上来。这是一个开源产品,我们计划先进行界面改造,然后再深入底层开发,实际上我们也这么做了。adminui 这是一个纯前后端分离的项目,但是我们前端开发只有一个,还是一个新手,所以我们连学带用的也加入到了前端开发的阵营。为了简化开发测试流程,我利用 gitlab runner 建了一套自动化运维系统,用以实现持续集成和持续部署。最后完成了一个 1.0 版本,只是确实有点丑😰。
朱总应该发现了效果不怎么好,所以又找了一个有经验的前端开始 2.0 版本的开发。由于一直以来我表现都非常突出,加之强烈的责任心,因此深受朱总信赖,他把整个项目全权交由我来负责,命我做项目经理,当时我们这个项目组无疑成为了撑起公司的希望「前端:尹月、前端+文案:邵梦、后端:常齐+我+齐政+范畴、测试:灿灿」。
齐政当时还在成都的 Veritas 上班,在我们公司兼职,基本上有事就可以找他支援。后来 Veritas 散伙后,直接来了我们公司,不过来的时候我已经快离开了。
当时,我将前端所有部分交由尹月负责,毕竟,她在我们所有人中前端经验是最丰富的,她可以安排邵梦跟她分工协作。邵梦还有一个任务就是完成用户说明文档,优先级在前端任务之后,说明文档以 Markdown 的形式书写,用 Gitbook 整理,把项目框架搭好后给到她。灿灿主要就负责测试。我记得我们在底层加了两个功能:IaaS 层的虚拟机迁移和 PaaS 层的 RDS。虚机迁移完全是利用 ZFS 的能力完成的,我们将这套流程加到 Triton 的 Workflow 中,使其可以利用前端界面进行管理。在做 RDS 时,我们使用 Triton 带的系统组件 Zookeeper 实现服务的注册与发现,以自动实现主备切换。我们后端几人任务分配方式基本都是按模块,一个模块就是一个微服务,使用 RESTful 对接。
运维
一进公司,我一心为公司发展的一片赤子之心便展露无遗,当然了,仅仅有心还不够,还得有能力「我的特点是:超强的学习能力、快速的上手能力以及问题的分析解决能力」,这使得我很快得到了朱总和范畴的认可,几乎把公司所有的基建都交给了我……搭建😂 是的,会的、不会的、见过的、没见过的,只要有需求,我就得满足😩。我前后为公司搭建了 SVN、LDAP、Samba、Bind9、Gitlab 等多种服务。
为验证 triton 软件定义数据中心的能力,公司前前后后又买了两台满配的 Dell 服务器、一台 Dell 的万兆三层交换机、两台 Dell 的千兆三层交换机。另外,朱总让我非常佩服的地方在于他总能跟各种公司借到想要设备。这其中包括了从宝德借来的一台 x86 服务器,从 Cavium 借来了一台 ARM 服务器,还从 Mellanox 借来了两块 infiniband 的网卡想把 RDMA 技术放到自研数据库中。有幸管理和使用这些设备着实让我硬件知识提升了不少,以前仅仅在书上看到的东西在这里都尝试了一把😄。还记得当时照着手册给交换机配置 VLAN 可真是把我折腾惨了😨。
出差
作为公司颜值担当和实力担当的我(不好意思,我膨胀了🙈),实习期就开始出差了。玩笑归玩笑,不过说真的,那时我确实是全公司最了解 Triton 的人。当时我们在川内有个项目要做 PoC,公司派我过去的,他们的服务器又老又旧,可难受死我了。他们那机器用的 LSI 的磁盘驱动器,但是 SmartOS 并没有内置该驱动,我们当时花了好长时间才发现这个问题,最后朱总亲自重新编译了内核,问题才得以解决;翌日安装完成后,我又发现计算节点的 PXE 启动有问题,系统初始化一直不能成功,而这些问题在自己机房是从未出现过的,我只能通过微服务日志跟踪的方式寻找原因,当时现场有10来个人看我直播排错来着,可把我惊出一身冷汗,庆幸的是,我找到了原因,客户现场的路由器时间有问题,引发服务器使用 NTP 服务出错,Triton 不允许在时间不同步的情况下进行初始化。
此外,还去北京参加过一次数据库大会,毕竟我们也是中国少有的几家能够提供 PostgreSQL 专业服务的公司。当然,我们也趁着这个机会推销了一下公司的鸿鹄彩云。🐾🐾🐾另外去北京、上海各一次,都是为了去宣传我们的「鸿鹄彩云」。
数据库大会的时候,我负责宣传我们的「鸿鹄彩云」,敏哥负责「EcoX」,在那之前,公司在招了一个销售叫 Sott,当时负责招揽意向客户。
Scott 是一个有近20年工作经验的前辈,也是我见过少有的能够为了梦想豁出自己的人,也是一个特别热心的人,不过由于跟朱总理念不合,没过多久就离开了。我们一直都还有联系,后来还帮了我不少忙。
纪律
公司管理特别放松,本来人也少,不打卡、不考核,秉承着革命靠自觉的管理方式,本意是觉得大家都是高素质人才,只要大家把工作完成好了就行。刚开始的时候,大家确实都还蛮自觉的,然而随着时间的推移,情况变得越来越糟。数据中心产品始终没有办法变现,办公室里终日人心惶惶。每天九点、十点、十一点来上班的人都有,更有甚者过来直接就到饭点了😟,但是下班基本都比较准时,过了 18:10 几乎很难看到公司还有其他人。平常在公司里,看球赛的看球赛、看电视的看电视,也没有人管,我几乎不敢相信这是一家创业公司,感觉国企也不能这样吧?朱总平时都不在办公室里,对公司的情况并不了解,我看在眼里,痛在心里,我知道这是主人翁意识在“作祟”。
我们大多数人都是刚出校门的学生,没有形成什么职业素养,很容易受环境所累。公司产品销路一直有问题,所以在当时,公司正处于一种内忧外患的境地。为此,我跟朱总探讨了上班打卡的可能性,朱总最终决定使用钉钉打卡,尽管如此,还是不计入考评(准确来讲是没有考评😂)。从那以后,每天的上下班时间都有记录了,碍于情面,出勤效果改善了不少。但是后来有人来晚了就直接选择忘记打卡😥。为了给公司营造一个良好的工作氛围,我后来还建议朱总加入绩效考评,这在我离开公司那会儿得到了采用,可能也是我觉得当时我所还能够给公司带来的吧。
离开
不论到哪儿,我都会问自己的一个问题是:我可以为这里带来些什么?
价值体现 大概是我职业生涯最在乎的东西了。公司发展一直都比较缓慢,又内外交困,我隐隐觉得看不到未来。我希望凭借自己的努力可以让公司变得越来越好,因为我与公司荣辱与共。我每天都在不断地思考着,除了跟朱总一起探讨办公室氛围问题,关于公司发展,我也会出谋划策。我不见得说的都对,但我的立场和出发点完全都是在为公司考虑,朱总看到眼里也记在心里,因而一直都挺欣赏我的,也愿意跟我一起探讨。
朱总每天或每周偶尔来一下办公室,因此,范畴就是实际意义上的办公室领袖,有什么问题我们都找他解决,特别是刚去公司那会儿,那时的他跟招我时一样干劲十足。在工作过程中,我的能力慢慢展现出来,范畴和朱总都有心提拔我,慢慢把「鸿鹄彩云」的控制权交到了我手里。自那以后,范畴主要和建平一起做数据库方面的一些东西,偶尔帮衬一下我们。可是过了一段时间,我发现范畴有点魂不守舍的,来得越来越晚了不说,还经常请假,当时我们已经在打卡了,他也经常不打。老实说,我觉得他有些无视纪律,恣意妄为。其实不单是我,大家都有发现,只是敢怒不敢言而已。可是作为办公室领袖如此行事,影响相当恶劣。范畴似乎早已看出了我们的不满,就在一次请假的假期结束之后单独找我聊天。从聊天我得知了他刚离婚的消息,看得出来他十分爱他的前妻,请假是因为悲伤过度,实在无心工作。他让我不要告诉大家,不想因为自己影响大家。他原计划当时就离去的,但是答应朱总的两年期限未满不能也不愿违背承诺,同时也不想动摇军心,过年前他会努力做好考勤的,事实上,他确实做到了。后来,我一直都跟大家讲的是范畴可能有什么苦衷,让大家给他点时间,直至最后范畴离开真相大白的时候,大家都说范畴平时都嘻嘻哈哈的,一点看不出来。或许这就是一个成熟男人吧👊👊👊。
这件事情之后,我就在想如果解决不了公司的困境,我不得不为自己的未来早做打算。一方面,我仍旧试图帮助公司扭转局面,作为研发人员的我还跟朱总一起去外勤,但非常遗憾的是那时的我并不具备任何销售能力,眼见帮不上什么忙,我内心心急如焚;另一方面,我觉得我的未来特迷茫,研发我觉得自己不够深入,运维有点浪费能力,想做项目经理吧,我又没有走过标准化流程,真心纠结😖,但我心里很清楚,倘若我继续待下去,情况并不会有所改观,反而随着年龄增大压力会越来越大,我想要改变🏃♂️。
朱总的挽留并没有让我留下,因为我觉得自己无能为力。我一直都特别感激朱总的赏识,觉得自己的离开有点辜负了他,所以我把所有工作做好后才离开的,并没有提前找好工作,这算是对这份工作的一种敬畏吧🙏。
我走的时候尹月不知道,因为那时候她请假了。直到我去公司拿「离职证明」时她才知道,我现在还记得特清楚她当时微信里“质问”我:“你是不是觉得在这里学不到什么东西啦,所以你要离开?”“不是的”,我并没有想好要怎样回答。她随后说道:“工作找好了吗?我相信你到哪里都可以一样优秀的。”“还没呢,谢谢祝福!”我内心非常感激,我也一样相信 我的未来不是梦!