我被裁掉那天,公司刚拿下年度最大的云服务订单。
合同金额八千万,客户要求双十一期间零中断。销售部把消息发到群里时,所有人都在刷“稳了”。
只有我知道,平台撑不住。
过去半年,我提交过四次扩容申请。数据库主节点磁盘使用率已到百分之八十七,缓存层没有冗余,灾备机房只存在于文档里。每次申请都被孙博驳回,理由都是“成本太高,大促后再说”。
所谓大促后,就是下一轮大促。
庆功海报还挂在墙上,HR已经把解除通知推到我面前。
“沈工,公司优化夜间运维编制,你今晚不用来了。”
我以为自己听错了。
整个平台的主机、数据库、容灾和监控都由我负责。过去四年,每一次大促、每一次版本发布、每一次凌晨告警,都是我先看第一眼。
“夜间运维编制只有我一个人。”
“所以才要优化。”HR说,“外包团队会接。”
“他们做过故障演练吗?”
“下周开始。”
“下周是大促。”
“所以需要你配合交接。”
我看向玻璃墙外的技术总监孙博。
他端着咖啡,假装在看手机。
我在这家公司五年,从开发工程师做到运维负责人。最初没有监控系统,我手写脚本;后来数据库不稳定,我重做主从架构;去年云厂商故障,我连续工作二十小时,保住所有客户数据。
公司第一次出事是在两年前。
凌晨一点,订单库主节点损坏,所有用户无法支付。我从被窝里爬起来,坐出租车赶到机房,一边恢复备份,一边让开发写临时降级页面。天亮前系统恢复,损失控制在二十万以内。
第二天,老板陈峰给大家发了两千块红包,说辛苦了。
孙博拿走一半,说管理层协调有功。剩下的钱按部门人数平分,我收到三百。
我没有争。
那年我一直相信,技术人只要把事做好,迟早会被看见。
后来我才知道,如果公司只在出事时想起你,平时就只会把你当成本。
孙博在管理层群里说,技术团队抗压能力很强。
他说完,销售总监立刻跟进,说客户表扬公司响应迅速。
客户不知道,所谓响应迅速,是三个工程师在机房坐了一夜。他们更不知道,原本应该提前更换的磁盘因为预算被砍,已经在报警边缘运行了三个月。
第二天复盘会上,我提出扩容方案,预算四十五万。
孙博只问一句:“能不能明年再做?”
“明年磁盘会满。”
“还剩多少?”
“百分之八十七。”
“这不还有百分之十三?”
会议室里有人笑。
我没笑。
百分之十三对一个高并发数据库来说,不是余量,是倒计时。
他没有提我的名字。
一个月前,他让我把核心权限交给外包公司,说公司要“去个人英雄主义”。
我同意,但要求先做三次故障演练。
第一次,外包把测试库当生产库重启。
第二次,他们找不到主从切换脚本。
第三次,报告写着“全部通过”,实际根本没演练。
我退回报告,孙博嫌我卡流程。
现在,他直接把我裁了。
“赔偿怎么算?”
“N加一,签协议当天打款。”
“扩容申请、值班补贴和未休年假呢?”
“一起核算。”
“竞业协议呢?”
HR递来第二份文件:“同行一年内不能入职,公司按月补偿。”
补偿金额:一千八百元。
“我月薪四万。”
“合同写的是最低工资标准。”
“法律要求不低于离职前工资的百分之三十。”
HR看向孙博。
他走过来,压低声音:“沈宁,别搞得这么专业。公司现在困难,大家互相体谅。”
“可以。”我点头,“先把服务器容灾和值班补贴结了。”
“你非要拿这些卡公司?”
“不是卡,是工作证明。”
我把交接清单放在桌上。
里面列明系统、账号、监控指标、故障预案和联系人。每一项都有文档路径,没有隐藏。
孙博翻了两页:“密码呢?”
“按安全流程,离职当天注销个人管理员账号。公司账号转交接任人,密码重置由IT审批。”
“你注销了,今晚出事怎么办?”
“所以我建议暂缓离职,等外包完成演练。”
“公司已经决定了。”
“那就按流程办。”
我签了解除通知,没签竞业协议。
下午六点,我交电脑和门禁卡。走前把所有工作群静音,没有退群。
孙博在群里发:“沈宁因个人原因离职,后续运维由启航科技负责。”
有人回“收到”。
周舟私信我:“沈姐,监控阈值还是你设的吗?”
“是。”
“外包刚把阈值调高了,说报警太多。”
“把操作记录存下来。”
“他们说是孙总要求。”
“照做记录,不要争论。”
我离开后,周舟把后台操作记录导了出来。
外包团队先在压测环境改配置,测试通过后直接复制到生产环境,没有走变更审批。为了减少报警,他们把数据库连接数阈值从五千改到五万,把磁盘告警从百分之八十改到百分之九十五。
前者掩盖了连接池耗尽,后者让主库写满前没有任何提醒。
更荒唐的是,外包工程师只有两个人,一个在老家远程,一个晚上九点下班。孙博却对管理层说,运维团队已经实现二十四小时覆盖。
覆盖的方式,是把电话转接到一个无人值守的自动语音。
平台第一次超时的时候,值班同事给外包打电话,语音提示“当前坐席忙,请稍后再拨”。
他以为是号码错了。
没有错。
外包合同里的紧急联系电话,就是那个号码。
晚上九点,我在家煮面。
九点二十,值班同事打来电话,平台开始出现零星支付超时。
十点,数据库连接数上升。
十点半,孙博在群里说:“只是流量波动,大家不用紧张。”
十一点,监控系统彻底安静。
不是故障消失。
是报警阈值被调到了永远触发不了的位置。
我把手机调成静音,打开一部电影。
零点十二分,平台订单开始积压。
零点十七分,客户投诉打爆客服。
零点二十四分,最大电商客户要求立即恢复。
零点三十,孙博发消息:“沈宁,系统出事了,马上回来。”
我回:“我已离职。”
“你交接没做完。”
“文档在共享盘,账号注销按流程执行。”
“数据库密码!”
“个人权限下午已注销。”
“你故意删库?”
“请提供证据。”
他不回了。
零点四十五分,老板陈峰打来第十七个电话。
我接起。
“沈宁,你开条件。”
那边有人在喊订单全卡住。
“先确认三件事。”我说,“第一,我没有删库;第二,我离职前提交过三次风险报告;第三,公司违法解除劳动合同。”
“先救系统。”
“先确认事实。”
陈峰沉默两秒:“好,我认。你现在能回来吗?”
“可以。技术服务每小时八千,预付四小时;另加违法解除赔偿、竞业补偿和欠薪。”
“八千太贵。”
“你可以继续等外包。”
那边又喊数据库主节点挂了。
陈峰骂了一声:“合同发过来。”
我挂断电话,给律师发消息。
二十分钟后,合同发到邮箱。
我穿外套出门,打车去公司。
出租车上,陈峰发来消息:“系统恢复以后,之前的事好谈。”
我没有回。
好谈是危险解除以后的说法。系统没恢复时,我只有合同。
路上,周舟发来后台截图。所谓流量波动,其实是大促缓存配置错误,连接池被占满。外包为了“减少报警”,还关掉磁盘空间监控,主库已经快写满。
我到公司时,孙博脸白得像纸。
“先修。”
“先签合同。”
“都什么时候了?”
“你裁我的时候也很快。”
陈峰把合同递来。
我逐页看完,签上名字,又让财务当场转预付款。
然后我走进机房。
第一件事,恢复监控阈值。
第二件事,停止自动扩容,避免副本被写满。
第三件事,从备用节点拉起数据库,切走支付流量。
问题不复杂。
复杂的是,已经没人知道系统之间怎么连接。
我花四十分钟恢复主流程。
订单回流,客服大厅的红色警报一块块熄灭。
孙博想按主机电源,我头也没回:“别碰任何按钮。”
他收回手。
凌晨两点,系统稳定。
我写完故障报告,注明直接原因、诱因和责任链。外包配置错误是引线,公司裁掉唯一熟悉架构的人,是根本原因。
孙博让我删掉“裁人”那段。
“为什么?”
“客户会看,不能写内部管理问题。”
“那就让客户以为是我离职造成的?”
“你离职确实是触发器。”
“我按要求交接,是你们拒绝演练。”
他压低声音:“沈宁,别得寸进尺。”
我把录音笔放在桌上。
“再说一遍。”
他闭嘴。
第二天,客户拿到报告,要求更换技术负责人。
陈峰召开董事会。孙博试图把责任全推给外包,说合同是采购签的,演练是技术部安排的。外包负责人当场拿出邮件,证明孙博要求“先上线,后补流程”。
会议开到下午。
孙博停职,外包合同解除。
陈峰希望我回公司做技术副总裁。
“先把欠款结清,竞业协议作废。”
他点头。
我没有立刻答应。
“运维至少三人轮值;高危操作双人复核;监控阈值不能由业务部门调整;事故报告不得删改。”
陈峰看完,说成本会增加。
“比一次事故便宜。”
他最终签字。
签字前,他问我能不能把事故报告里的“管理失职”改成“技术故障”。
“不能。”
“客户看到会影响续约。”
“客户已经看到系统三个小时不能下单。”
“你写得这么直接,以后谁还敢跟我们合作?”
“遮着不写,以后才会再出一次。”
他看了我很久,最后签了字。
我回公司后,第一件事不是换设备,是查权限。
外包留下的公共管理员账号至少被六个人使用,登录地点分布在三个城市。有人用它在测试环境改配置,有人用它下载日志,还有人离职后仍能远程登录。
我把账号全部冻结,逐个建立实名权限。每个人只保留岗位需要的最小权限,高危命令必须双人确认,任何生产变更都要关联工单。
外包负责人说这样太慢。
“你们犯错的时候很快。”我说,“承担后果的时候也不能慢。”
他不说话了。
第二个问题,是告警。
过去业务部门总嫌报警太多,要求降低频率。孙博干脆把阈值调高,说这样“大家都能睡个好觉”。
我把告警分成四级。
一级直接打值班电话,二级进群,三级生成工单,四级只做日报。任何一级告警被关闭,都必须写明原因和恢复时间。
周舟负责测试。她手动制造了一次慢查询,电话十秒后响起。她又在群里发了一条假告警,系统自动推给对应负责人。
“沈姐,以后总算不是谁声音大谁有理了。”她说。
“告警不是给人看的,是让人行动的。”
第三个问题,是人才。
被裁的两个工程师一个在做外卖,一个回了老家。我给他们打电话,问愿不愿意回来。
第一个问我:“公司真的会改?”
“至少这次会写进制度。”
“下次老板再让你裁人呢?”
“那我就再走。”
他沉默几秒,说回来试试。
另一个已经找到工作,但答应周末来做兼职顾问。我们签了正式合同,不再用“帮个忙”占人便宜。
第三周,技术团队重新排班。
每个人每月最多值七个夜班,值班有补贴,凌晨处理后可以调休。以前这些都没有,大家靠责任心和咖啡顶着。现在制度写清楚,反而没人推诿。
陈峰看着新排班表,说成本比之前高。
“你花八千万拿的订单,现在靠三个人熬夜兜底,才叫成本低?”
他没反驳。
我回去第一周,招回两个被裁工程师。
第三周,清理外包留下的配置。
第一个月,系统没有再出大事故。
一个月后,平台做第二次大促。
我提前两周做全链路压测,又模拟了主库宕机、缓存穿透和外包误操作。每一种故障都有预案,每个预案都有人签收。
大促当天,订单量比去年高一倍。系统峰值持续了四十分钟,没有出现一次支付失败。
陈峰站在大屏前,说这次总算稳了。
我提醒他:“稳是因为准备了一整个月,不是运气。”
他点头,让人把复盘报告发给全员。
报告第一页写着:系统可靠性不是运维一个人的能力,是公司是否愿意为风险付费。
这句话被员工转发到行业群。
孙博看见了,给陈峰发消息,说我借公司事故抬高自己。
陈峰没有回,把消息转给了我。
我看完,删掉。
我没有必要再和一个已经离开的人解释。
孙博离职那天在门口碰见我。
“你早就知道会出事?”
“知道。”
“为什么不提醒?”
“提醒过三次。”我把打印邮件递给他,“你每次都说先上线。”
他翻了两页,什么都没说。
我也没再问。
回家后,洗了那件凌晨救火时穿的外套。
手机里十七个未接来电还留着。
它们提醒我,一个人被低估时,不需要大喊。
只要在离开以后,让事实替你说话。
事情结束后的第一周,客户提出索赔。
索赔函送到公司时,陈峰正在开会。
法务把邮件转给我,问我能不能出具一份“故障主要由外包引起”的说明。我回:“可以写外包配置错误,但不能省略公司裁撤运维和关闭告警的责任。”
陈峰不满意,让我去办公室谈。
他把索赔函摊在桌上:“四百多万,你一句话就能帮公司少赔一半。”
“我帮你少赔,谁来帮公司记住教训?”
“教训已经记住了。”
“怎么证明?”
“以后不会再裁运维。”
“那在合同里写清楚。”
他看着我,像第一次发现我不接受口头承诺。
法务提议把整改条款写进与客户的和解协议。客户同意,但要求第三方每季度检查一次系统可靠性。
陈峰觉得丢脸。
“出了这种事,还怕丢脸?”我问。
他最终签了。
第一份季度报告出来时,系统可用性达标,变更审批率百分之百。客户负责人说,他们不是因为一纸报告原谅公司,是因为连续三个月没有夜间事故。
孙博停职期间,曾发邮件给客户,说事故由我离职引发。客户把邮件转给陈峰,问公司为什么还在统一下属口径。
陈峰这次没有护着他。
孙博被正式辞退。
外包公司要求返还预付款,公司反过来索赔。双方律师函来回几轮,最后进入诉讼。外包负责人承认公共账号管理不合规,但坚持认为核心责任在公司没有提供完整交接。
法院认定,外包承担直接损失的三成,公司承担七成。
我作为证人出庭,只回答技术问题。
对方律师问我:“你是否希望报复公司?”
“不希望。”
“为什么?”
“因为系统恢复以后,我还要靠它证明自己的判断没错。”
根据合同,平台每中断一分钟赔偿两万元。当晚订单积压三小时四十分钟,金额算下来四百多万。
陈峰召开紧急会议,想让法务争取“不可抗力”。
“那一晚没有地震,没有台风,只有被关掉的监控。”我说。
“公司赔不起。”
“赔不起,就更不该赌。”
他沉默下来。
客户最终同意减免一部分,条件是由我负责提交完整整改报告。报告里我列出七项根因,没有替任何管理层留面子。
第一项,长期忽视容量风险。
第二项,外包准入没有技术评审。
第三项,生产变更缺少审批。
第四项,监控阈值由非技术岗位调整。
第五项,关键岗位无备份。
第六项,故障演练流于形式。
第七项,管理层试图让离职员工承担组织责任。
最后一项让陈峰很不高兴。
“这条删掉,客户不会关心。”
“客户不需要知道,但公司需要记住。”
他看了很久,最终保留。
报告发出去后,行业里有人转发,说这是一份少见的“把责任写在自己脸上”的复盘。
也有人私信我,问能不能去他们公司做技术顾问。
我挑了一家做医疗系统的公司。面试时,对方问我最不能接受什么。
“最不能接受把告警当噪音,把值班当奉献,把离职员工当故障原因。”
技术负责人点头,说他们医院系统凌晨也会出问题,但从来没有一个运维被要求独自承担全部责任。
我入职后,第一件事是检查数据库权限。
系统不大,监控却做得清楚。每个告警都有负责人,每次变更都有回滚方案,夜班超过三次会自动触发管理层复核。
我问是谁定的。
他说上一任运维负责人走之前留下的。
“她也遇到过类似的事?”
“不是遇到。”他说,“是她坚持改的。”
我点头。
原来同样的问题,在不同公司会有不同答案。
有的公司等事故发生后找人背锅,有的公司在事故发生前把锅从员工头上拿走。
三个月后,原公司再次联系我。
这次不是求我救火,是问我能不能接手一部分客户。他们失去了核心团队,只剩销售和外包,已经接不了复杂项目。
方澜给的方案很直接:客户转让,由我们提供技术服务,原公司收渠道费。
我看了合同,没有拒绝。
同事问我为什么还帮他们。
“客户没有错。”我说,“而且这次他们按市场规则付钱。”
签约那天,陈峰没有来。
孙博给我发了一条好友申请,备注是“过去的事对不起”。
我没有通过,也没有拉黑。
他可能真的后悔,也可能只是又没钱了。
我不需要分辨。
现在我每天六点下班,手机开着,但夜班不归我一个人。告警响起时,值班人有权限停机,有主管复核,有完整的故障手册。
周日早晨,我在家煮面,手机一整天没有响。
我把面端到阳台,看见楼下有人搬家,有人遛狗,有人带孩子去上课。
没有人知道一座系统背后该有多少准备。
没关系。
只要它不出事,就已经是许多人在深夜换来的正常。
原公司的客户转让推进得并不顺利。
技术交接会上,对方工程师发现原系统没有完整架构图。孙博以前嫌维护文档浪费时间,所有关系都留在我和两名工程师脑子里。外包接手时只复制了几份部署脚本,连数据库分库规则都没弄明白。
客户问我能不能把文档补全。
“可以,但只能作为新合同里的技术服务,不包含在原公司旧债务里。”
“你最清楚系统,为什么不直接给他们?”
“因为文档是劳动成果,不是离职赠品。”
客户理解了,重新签了服务协议。陈峰得知后,说我趁他们最困难的时候收钱。我让方澜把客户报价和技术内容发给他看。
价格比市场均价低两成。
我多要的部分,只是把夜间响应和故障赔付写进去。
交接持续了三周。
我带着新团队梳理服务依赖、存储容量和灾备流程。每完成一个模块,就由原公司、客户和新团队三方签字确认。以前这种确认会被嫌繁琐,现在没人敢省。
最后一次演练,我们故意切断主数据库。
备用节点在二十八秒内接管,所有支付请求正常返回。客户负责人看着监控,说这是他第一次相信系统不是靠某一个人活着。
我说:“系统本来就不能只靠一个人。”
他说:“那你们公司以后会不会也变成这样?”
“会,如果管理者忘了今天的代价。”
他笑,说至少你今天记得。
演练结束后,周舟请我吃饭。
她现在已经能独立处理夜间变更,工资比以前高了一截。她说公司重新招了两个运维,终于不用一个人扛所有电话。
“林姐,我有时候还会梦见那晚。”
“梦见什么?”
“梦见电话一直响,没人接。”
“现在呢?”
“现在醒了会先看值班表,确认有人在。”
我点头。
事故不会因为复盘结束就从人心里消失。它会在某个凌晨、某个突然安静的手机、某条系统通知里重新出现。
但只要制度真的改变,那些记忆会慢慢从恐惧变成警觉。
又过了半年,孙博的新公司出过一次事故。
他从别人那里听说我做的故障手册,托人问能不能买一份。我让律师回复,可以购买公开培训课程,不提供公司内部文档。
他最后没买。
我不关心原因。
有些人只有在失去以后才会想起,专业不是成本,是安全带。
陈峰后来带队来我们公司交流。
他站在演示屏前,看我们展示双人复核和告警闭环,问这套系统建设花了多少钱。
“不到你们那晚损失的四分之一。”
他沉默了一会儿,说当初如果批了四十五万扩容预算,就好了。
“不是四十五万的问题。”
“那是什么?”
“是你听见风险时,第一反应是问能不能明年再做。”
他点头,没有再辩解。
交流结束,他问我有没有兴趣回去讲一堂管理课。
“可以,按顾问费算。”
他笑,说你还是这样。
“我这样,系统才没再半夜响过。”
他沉默两秒,说好。
回办公室后,我把下一次夜班表贴到墙上。
三个人轮值,有人休假就自动补位。每一条告警后面都有名字,每一次停机都有审批,每一份复盘都归档。
系统仍然会出错。
只是再也不会因为一个人离开,就整夜没人接电话。
半年后的审计报告,把事故损失算到了具体数字。
订单退款、客户索赔、临时云资源、外包违约处理和品牌影响,合计一千三百万。董事会要求管理层说明,当初为什么为省四十五万扩容费,承担了二十倍以上的风险。
陈峰在报告上签了字。
孙博没有再出现。他离职后去了外地一家小公司,听说仍然负责技术,仍然把预算压到最低。周舟有一次在行业群里看见他发招聘,要求运维“能抗压、接受弹性值班”,没有提补贴。
她把截图发给我。
我回:“别去。”
“我知道。”
“也提醒你认识的人。”
她发了个“收到”。
原公司后来建立了新的值班制度,三个工程师轮班,夜班有补贴,超过晚上十点处理故障可以第二天调休。制度刚发布时,有人说是林知夏回来以后才有的。
其实我并没有要求这些。
是董事会终于算清了,靠人硬撑的成本比按制度付钱更高。
周舟转正后,第一次独立值夜班。
她给我发消息,说监控屏幕看起来没有以前那么可怕。
“为什么?”
“因为出问题的时候,我知道该先找谁,而不是先找林姐。”
我回了一个“很好”。
她发来一张值班表,上面三个名字排得整整齐齐。
我看着那张表,想起自己被裁那天,公司连一个完整交接人都找不到。现在至少有三个人知道密码放在哪里,知道告警响了先做什么,知道没有谁应该永远在线。
后来,平台做年度供应商评审,我被邀请做外部技术顾问。
评审到原公司时,陈峰亲自介绍整改结果。
他说系统可用性达到百分之九十九点九九,故障恢复时间控制在十分钟以内。
评审组问,如果值班负责人突然离职呢?
陈峰停了一下,说:“我们有三名经过演练的替代人员。”
评审组又问他,监控阈值由谁调整。
“技术委员会,不由业务单方面决定。”
他回答得不算流畅,但至少没有再拿“多的是人干”来应付。
会议结束后,他走过来和我握手。
“当初那十七个电话,我一直记得。”
“我也记得。”
“你恨我吗?”
我想了想。
“不恨。”
“真的?”
“恨你要花时间。”
他苦笑。
我拿起资料离开。
回公司的地铁上,年轻同事问我,为什么不再追究孙博。
“法律该追的已经追了。”我说,“剩下的,是让他自己面对结果。”
“可他还是可以在别的地方当技术总监。”
“那是别人的公司要承担的风险。我们能做的是让自己的制度不依赖某一个人,也不放过任何一次预警。”
她点头。
地铁经过一段没有灯的隧道,车窗映出我的脸。
我想起被裁那天下午,自己抱着纸箱站在写字楼门口,不知道下个月会怎样。
现在我知道了。
下个月不会由某个老板的心情决定。
它由我签过的合同、留下的证据、学会的规则决定。
手机亮了一下,是新公司的值班群。
一条低级别告警弹出来,值班工程师已经接单。
我没有回复。
这说明系统正在按它该有的方式运行。
我关掉手机屏幕,继续吃面。
面凉了一点,但不难吃。
夜里十二点,值班群又弹出一条消息:低级别告警已恢复,无需人工处理。
我看了两秒,把手机扣在桌上。
今晚可以睡个整觉。
第二天到公司,陈峰把新的值班制度贴在会议室门口。
三名运维的名字并排列着,下面是夜班补贴和调休规则。
我看了两秒,走进办公室。
周舟正在给新来的工程师讲告警分级,声音不大,但说得很清楚。
我没有打断。
这一次,系统不需要我先开口。
中午,陈峰请我吃饭。
他说董事会准备把运维预算提高到原来的两倍,问我够不够。
“先别急着加钱。”我说,“把人员、流程和演练做起来。”
“钱不重要?”
“钱重要,但钱不能替代岗位责任。”
他点头,说这次学到了。
我没有接这句话。
有些学费不该由员工用彻夜不眠来交。
但至少,公司这次真的开始改。
我拿起筷子,开始吃饭。
手机里的值班群很安静。
这是我最想听到的告警。
下午回到工位,我在值班制度最后一页签上名字。
不是替公司背书,是确认这套规则曾经被一个被裁过的人亲手验证。
以后再有人问,为什么夜里必须有人值班。
这份文件会替他回答。
我关掉电脑,拿起外套。
今天没有未接来电。
我把外套搭在手臂上,走向电梯。
走廊的灯一盏盏亮着。
我按下电梯,准备下班。
系统还在运行,值班的人还在。
我终于可以放心离开。
电梯门合上,值班表留在身后的公告栏里。
三个人,三组名字,一整夜都有人。
我走进夜色里,手机安静地贴在口袋中。
这一次,不用等它响。
我走回家,脚步很稳。
楼下的灯已经亮了,窗口没有人等我处理故障。
我抬头看了一眼,然后回家。
这一晚,没有电话追上来。
系统有人守着,我可以好好睡觉。
明早醒来,只处理自己该处理的事。
手机放在床头,整夜没有响。