长青市入了夏,梧桐树绿得发黑。蝉叫得震天响,一声接一声的,像在比赛谁叫得最大声。阳光烈得刺眼,柏油路面被晒得微微发软,踩上去像踩在棉花上。
长青公司迎来了成立以来最大的挑战。不是竞争对手的打压,不是融资的困难,不是用户的流失——是核心数据中心的服务器瘫痪。
事情发生在一个周二的凌晨。郑阅被一通电话从睡梦中惊醒,手机屏幕上显示的是CTO周子衡的名字。凌晨两点十七分,这个时间打电话,只有一种可能——出大事了。电话那头,周子衡的声音很沉,像一块被扔进深水里的石头。
“老郑,服务器挂了。”
郑阅已经从床上坐起来了,动作很快,快到刘琼也被惊醒了,迷迷糊糊地问了一句“怎么了”。他说“没事”,然后拿着手机走出了卧室。
“什么原因?”他问。
“还在查。不是硬件故障,不是网络攻击,是数据量太大了。用户增长太快,数据库扛不住了。从昨晚十点开始,响应速度越来越慢,到凌晨一点彻底崩了。”周子衡的声音里有疲惫,从昨晚到现在应该一直在盯着,眼睛大概已经红了,嗓子大概已经哑了。
“现在什么情况?”
“我们在抢修。但数据量太大了,按照现在的速度,至少要两天。”
两天。对于一个日活过百万的App来说,两天 downtime 意味着什么?意味着几百万用户打不开App,意味着几百万条投诉,意味着几百万的损失,意味着几年积累的口碑可能在两天内崩塌。郑阅握着手机,站在阳台上。夜风很凉,吹在他脸上,他从睡梦中彻底清醒了。
“我马上到。”他说。
“好。”周子衡挂了电话。
郑阅走回卧室,刘琼已经坐起来了,床头灯亮着,橘黄色的光落在她的脸上。她穿着一件白色的睡衣,头发披散着,眼睛里还有睡意。
“怎么了?”她问。
“服务器挂了。我去公司一趟。”郑阅从衣柜里拿出一件T恤,一条牛仔裤,快速穿上。
刘琼看着他,没有问“严重吗”,没有说“小心点”,没有说“早点回来”。她从床上下来,走到厨房,倒了一杯水,递给他。
“喝点水。”她说。
郑阅接过水杯,一口气喝完,把杯子放在茶几上,拿起手机和钥匙,走到门口换鞋。
“郑阅。”她叫他。
“嗯。”他应了一声。
“别太累了。”刘琼倚在卧室门框上。
“好。”郑阅推开门,走了出去。
长青公司,办公室。灯火通明,技术部的工位上坐满了人,键盘声此起彼伏,像一首没有人指挥、但每个人都在拼命演奏的交响乐。周子衡站在服务器机房门口,脸色很差,眼睛下面两团深青色。
“现在什么情况?”郑阅走过去。
“数据量太大了。我们的数据库架构是五年前设计的,那时候日活只有几千,现在的日活是几百万,架构已经撑不住了。即使这次修好了,下次还会崩。不改架构,这个问题永远解决不了。”周子衡看着郑阅,他知道这个问题的答案,郑阅也知道。
“需要多久?”郑阅问。
“如果从头重构,至少要一个月。”周子衡说。郑阅沉默了。
“老郑,我知道你在想什么。”周子衡看着他,“一个月 downtime,公司承受不起。但不改,我们永远在修修补补。每一次修补都是治标不治本。就像一栋地基已经裂了的房子,你今天补了这面墙,明天那面墙又会裂。总有一天,整栋房子会塌。”
“改。”郑阅说,“需要多少人?”
“全部。”
“那就全部。”
郑阅走进开放办公区,站在中间,所有人都抬起头看着他。那一张张疲惫的、紧张的脸——有人已经连续工作了十几个小时,眼睛红得像兔子;有人连晚饭都没吃,桌上放着一碗已经凉透了的泡面,面条涨成了一团糊;有人刚毕业不久,脸上还带着学生的稚气,但眼睛下面已经挂了和那些老员工一样深的黑眼圈。
“大家听我说。”他的声音在办公室里回荡,“服务器挂了。大家都知道。周子衡说,要改架构。改架构,需要一个月。这一个月,App不能 downtime。所以,我们要一边改架构,一边保证现有系统稳定运行。这意味着双倍的工作量。我知道大家很累。我也很累。但问题已经在那里了,不会自己消失。我们只能解决它。”他顿了顿,“我会和大家一起。从现在开始,到问题解决,我都在这里。”
没有人说话。然后周子衡开始鼓掌,一下,两下,三下。掌声渐渐响了起来,从稀稀拉拉变成了密密麻麻,从密密麻麻变成了震耳欲聋。
从那天开始,长青公司的技术部进入了战时状态。郑阅住在公司,不是睡在办公室,是睡在工位上。累了就趴在桌上睡一会儿,醒了继续写代码。刘琼每天会来送饭,有时候带着郑念。她从不问“你什么时候回来”,从不问“你还要忙多久”。她把饭盒放在他桌上,说一句“吃饭了”,然后坐在旁边看着他吃。吃完,把饭盒收走,说一句“我走了”,然后离开。
“妈妈,爸爸为什么住在公司?”郑念问。
“因为爸爸在工作。”
“他什么时候回来?”
“不知道。”
“我想爸爸了。”
“爸爸也想你。”
郑念低下头,看着手里的布偶熊猫,那只黑白相间的小熊猫,是郑阅从北京带回来的礼物。
“妈妈,我们去找爸爸吧。”
“爸爸在工作,不能打扰他。”
“我不打扰他。我就看看他。”
刘琼看着她,看了几秒钟,拿起了手机。
长青公司,办公室。郑阅趴在桌上睡着了。键盘上还压着他的手,手指还搭在几个键上。屏幕上是一行没写完的代码,光标在最后一个字符后面一闪一闪的,像一只不知疲倦的、一直在等待的萤火虫。
郑念走进来,脚步很轻。她走到郑阅旁边,看着他的脸,爸爸瘦了,眼睛下面有两团黑黑的圈,像被人用炭笔涂抹了两下。
“妈妈,爸爸好累。”她的声音很小。
“嗯。爸爸好累。”刘琼站在她身后。
“他什么时候能回家?”
“快了。”
“快了是多久?”
“很快。”
郑念从口袋里掏出一颗糖,水果糖,橘子味的,黄色的糖纸。她轻轻地把糖放在郑阅的桌上,看了他一眼,然后转身走了。
郑阅醒来的时候,看到那颗糖。
长青市老城区,那间小小的两居室。凌晨两点,郑阅推开门。客厅的灯亮着,刘琼坐在沙发上,手里拿着一本书,已经睡着了,书从手里滑落掉在腿上。电视开着,没有声音,只有画面在一闪一闪的。
他走过去,轻轻把她手里的书拿下来,放在茶几上,又从卧室拿来一条毯子,轻轻盖在她身上。
“你回来了?”她醒了,眼睛还没完全睁开。
“回来了。”
“几点了?”
“两点。”
“你吃饭了吗?”
“吃了。”
“吃的什么?”
“泡面。”
刘琼看着他,清醒了一些。“你几天没吃正经饭了?”
“不记得了。”
刘琼站起来,走进厨房。冰箱里有鸡蛋,有西红柿,有面条。她开始煮面,锅里的水烧开了,面条放进去,用筷子搅了搅。另一个锅炒西红柿鸡蛋,油热了,鸡蛋液倒进去,蛋液在热油中迅速膨胀,金黄黄的,像一朵突然绽放的花。西红柿倒进去,翻炒,加盐,加糖,加水,煮了一会儿。
十几分钟后,一碗热气腾腾的西红柿鸡蛋面端到了他面前。
“吃。”她说。
郑阅低下头,吃了一口面条,又吃了一口,又吃了一口。
“好吃吗?”她问。
“好吃。”他说。
“真的好吃?还是安慰我?”
“真的好吃。比任何地方的都好吃。”他又吃了一口。
“为什么?”她问。
“因为你做的。”郑阅吃完了那碗面,把汤也喝完了。
“还要吗?”刘琼问。
“够了。”
刘琼把碗收走,在厨房里洗了,放回碗架。
“郑阅。”她走回来,坐在他旁边。
“嗯。”他应了一声。
“你还要忙多久?”
“快了。”
“快了是多久?”
“两周。”
“两周后能回来吗?”
“能。”
“你保证?”
“我保证。”
她看着他,看了很久。
“郑阅。”她叫他。
“嗯。”他应了一声。
“你知道我和郑念为什么从来不问你什么时候回来吗?”
“为什么?”
“因为我们不想让你分心。”她看着他,“我们知道你在做很重要的事。我们不想成为你的负担。但你记住,你不是一个人。”
长青公司,会议室。郑阅、周子衡、林知夏、还有几个核心骨干坐在一起,讨论新架构的方案。
“数据分片。把数据拆开,放在不同的数据库里。这样即使一个数据库挂了,其他的还能用。”周子衡用笔在白板上画了一个图。“微服务。把不同的功能拆开,不同的团队负责不同的服务。这样即使一个服务挂了,其他的还能用。不会像这次一样,一个地方出问题,整个系统都崩了。”林知夏在旁边补充。她在纸上快速地记着什么,字迹潦草但有力。
“缓存。把常用的数据放在缓存里,不用每次都查数据库。”另一个技术骨干举手。讨论了很久,方案定了,分工明确了。
散会后,林知夏叫住了郑阅。
“郑总。”她叫他。
“嗯。”他应了一声。
“你已经连续工作十四天了。你知不知道你瘦了多少?”
“不知道。”
“八斤。”林知夏看着他,“你需要休息。”
“不需要。”
“你老婆会担心的。”
郑阅看着她,她也看着他。
“林知夏。”他叫她。
“嗯。”她应了一声。
“谢谢你。”
“谢什么?”
“谢谢你关心我。”郑阅说。
林知夏看着他,看了两秒钟,转身走了。
长青公司,办公室。郑阅在写代码。手机震了一下,他拿起来一看,是刘琼发来的消息,一张照片,女儿画的画。画上是三个人,爸爸、妈妈、她。爸爸穿着深蓝色的毛衣,妈妈穿着白色的连衣裙,她穿着粉色的公主裙,三个人手拉着手,站在一片绿色的草地上,头顶是一个黄色的太阳,旁边是一棵绿色的树,树上有一只红色的小鸟。
照片下面配了一行字:“郑念说,等爸爸回来,要把它贴在冰箱上。”
郑阅看着那行字,看了很久。他回了一个字:“好。”
长青公司,办公室。距离郑阅承诺的“两周”还剩三天。新架构的代码已经写了一大半,剩下的都是硬骨头,最难啃的部分。
“老郑,出问题了。”周子衡走过来,手里拿着一个平板。
“什么问题?”
“数据库迁移。老数据太大了,按照现在的速度,至少要迁移一周。”周子衡把平板递给他,屏幕上是一张图表,显示着迁移进度。
郑阅看着那张图表。
“不能一周。我们没有一周。三天,最多三天。”郑阅说。
“三天不可能。”周子衡的声音很肯定,没有商量的余地。
“可能。把迁移的优先级调整一下,先把核心数据迁移过去,非核心数据的往后放。这样,即使非核心数据暂时用不了,核心功能还能用。”郑阅说。
周子衡看着郑阅,看了几秒钟。
“试试。”他转身走了。
长青公司,办公室。距离郑阅承诺的“两周”还剩最后一天。新架构的代码写完了,核心数据迁移完了,系统正在测试。
“老郑,测试通过了。”周子衡走过来,脸上的表情有些奇怪——不是笑,是那种绷了很久的弦终于松了、整个人像被抽空了一样的、疲惫但满足的表情。
郑阅看着他的脸。
“没问题了?”他问。
“没问题了。”周子衡说。
会议室里响起了掌声,所有人都在鼓掌,所有人都在笑,所有人都在拥抱。
郑阅没有鼓掌。他拿出手机,给刘琼发了一条消息:“搞定了。今天回家。”
她秒回了:“好。等你。”
长青市老城区,那间小小的两居室。郑阅推开门,女儿正站在客厅里等着他,穿着那件粉色的连衣裙,扎着两个小辫子,手里拿着那幅画。看到郑阅,扔下画跑过来,扑进他怀里。
“爸爸!”她的声音很大,大到整栋楼都能听到。郑阅蹲下来,抱住她。
“爸爸,你瘦了。”她看着他的脸。
“没瘦。”
“瘦了。脸都小了。”
“那是角度问题。”
“什么角度?”
“你看我的角度。”
郑念想了想。“爸爸,你骗人。”她看着他,郑阅笑了。
“爸爸,你看。”她从地上捡起那幅画,举到他面前,“我贴好了。在冰箱上。”
郑阅走进厨房,冰箱门上贴着那幅画。画上的三个人手拉着手,站在一片绿色的草地上,头顶是黄色的太阳,旁边是绿色的树,树上有一只红色的小鸟。
“好看。”他伸出手,摸了摸画上那个穿着深蓝色毛衣的小人,“这是爸爸?”
“嗯。爸爸。”
“这是妈妈?”
“嗯。妈妈。”
“这是谁?”
“我。”
郑念指着那个穿着粉色公主裙的小人。“郑念。念念不忘的念。”她笑了,笑起来的时候,那两颗门牙整整齐齐,白白的,亮亮的,和郑阅笑起来一模一样。
长青市老城区,那间小小的两居室。夜已深,郑念已经睡着了。刘琼坐在郑阅旁边,窗外的月光洒进来,落在地板上。
“郑阅。”她叫他。
“嗯。”他应了一声。
“你知不知道,这十四天,我和郑念每天都在等你回来。”
“知道。”
“你知不知道,郑念每天都会问‘爸爸今天回来吗’。”
“知道。”
“你知不知道,我每天都会回答‘快了’。”
“知道。”
“你知不知道,我每次说‘快了’的时候,都在骗她。”
郑阅偏过头,看着她。月光落在她的脸上。
“刘琼。”他叫她。
“嗯。”她应了一声。
“对不起。”
“不用对不起。我知道你在做很重要的事。”她看着窗外,“但你要记住,你还有一个很重要的身份。”
“什么身份?”
“爸爸。郑念的爸爸。”她看着他,“她不需要一个成功的爸爸。她需要一个在身边的爸爸。”
长青市入了秋,梧桐叶黄了。距离服务器崩溃已经过去了一个月,新架构运行稳定,用户没有流失,反而增长了。长青公司不仅在这次危机中活了下来,而且变得更强大。
郑阅走在梧桐大道上,阳光很好,落叶在脚下沙沙作响。他想起这一个月发生的事——没日没夜地写代码,每天一碗泡面,在工位上睡觉,醒来继续写。很多人问他,你为什么要这么拼?他没有回答,因为他知道答案。
他拼,不是为了钱,不是为了名,不是为了证明自己,是为了她,为了她们,为了在女儿问他“爸爸,你什么时候回来”的时候,他可以回答“爸爸很快就回来”。
长青市老城区,那间小小的两居室。阳台上的绿萝长得很好,藤蔓垂下来,拖在地上,像一条绿色的瀑布。那把藤椅还放在阳台上,阳光正好照在上面,像一盏聚光灯,把整个阳台照得亮堂堂的。郑阅坐在藤椅上,手里握着那杯热拿铁,看着窗外。刘琼在厨房做饭,郑念在客厅画画,画的是三个人,爸爸、妈妈、她。
“爸爸,你看。”她把画举到他面前。
“看到了。”
“妈妈,你看。”她把画举到刘琼面前。
“看到了。”
郑念把画贴在冰箱门上,冰箱门上已经贴了很多画,最早的已经泛黄了,但郑念不让撕。她说,那是小时候画的,不能丢。
长青市入了冬,梧桐叶落光了。长青公司开了年会,郑阅站在台上,手里拿着话筒,看着台下。几百个人坐满了整个宴会厅,有老员工,有新员工,有技术部的,有产品部的,有运营部的,有市场部的。
“今年,我们经历了一次很大的考验。”他的声音在宴会厅里回荡,“服务器挂了,我们一起修好了。架构不够用了,我们一起改了。用户不满意了,我们一起优化了。没有什么特别的人。就是你们,每一个人。没有你们,我什么都做不了。”
台下响起了掌声,很响,很真诚,像潮水一样涌过来。刘琼坐在第一排,鼓着掌。郑念坐在她旁边,也鼓着掌,小手拍得很响,手举过头顶,手腕轻轻转动,手指微微张开,像一朵在风中轻轻摇曳的花。
长青市老城区,那间小小的两居室。郑念已经睡着了。郑阅和刘琼坐在客厅里。
“郑阅。”她叫他。
“嗯。”他应了一声。
“你还记得吗?你当初回到过去,是为了什么?”
“记得。”
“为了什么?”
“为了改变。”他看着她,“为了改变我自己的命运,为了改变我爸妈的命运,为了改变你的命运。”
“你改变了吗?”
“改变了。”他看着窗外,“但改变不是一次性的。改变是每一天。每一天,我都要做选择。选择留下来,而不是离开。选择坚持,而不是放弃。选择相信,而不是怀疑。选择爱,而不是恨。”
“今天你选择了吗?”
“选择了。”
“选了什么?”
“选了你们。”郑阅看着她。