林夏盯着监控屏幕上跳动的红色告警,指尖在机械键盘上悬停了三秒。凌晨两点的技术部办公室只剩下服务器散热风扇的嗡鸣,他面前摊开的笔记本上,密密麻麻的流程图被红笔圈出三个断点,最下方一行小字写着“核心算法迭代风险未评估”——这是他三小时前在评审会上提出,却被产品总监以“赶进度”为由搁置的问题。
“林总,存储集群的IOPS(每秒输入输出操作)还在掉,已经跌破阈值30%了。”运维工程师小陈的声音带着明显的疲惫,他面前的显示屏上,代表数据传输速率的折线像断了线的风筝,直直向下俯冲。
林夏站起身,西装外套搭在椅背上,衬衫袖口挽到小臂,露出腕上那块磨损严重的机械表——还是他刚升技术主管那年买的。他走到服务器机柜前,冷光透过玻璃门照在脸上,映出眼底的红血丝。“先切灾备集群,把核心业务迁移过去,”他的声音很稳,听不出丝毫慌乱,“通知算法组全员线上待命,我要实时看参数调整曲线。”
小陈愣了一下:“可是王总说过,非极端情况不能动灾备,会影响季度可用性指标……”
“现在就是极端情况。”林夏打断他,指尖在机柜控制面板上快速操作,“指标没了可以补,用户数据丢了,我们整个技术部都得担责。出了事我扛,你照做。”
蓝色的操作指令在屏幕上逐条闪过,小陈看着林夏的侧影,突然想起上周部门聚餐时,有人说林总监是“技术部的定海神针”。当时林夏只是笑着摇头,说自己不过是比别人多踩过几次坑。现在看来,那些坑早就成了他预判风险的底气。
灾备集群切换成功的提示音响起时,天边已经泛起鱼肚白。林夏揉了揉发胀的太阳穴,打开企业微信,置顶对话框里躺着王总凌晨一点发来的消息:“必须保证早上八点前恢复服务,不然影响电商大促预热,你我都不好交代。”
他回了个“已处理,待观察”,刚放下手机,算法组长张锐的视频电话就打了进来。屏幕里的张锐顶着鸡窝头,背景是凌乱的书房,桌上还放着没吃完的泡面:“林总,昨晚的算法迭代有问题,新增的推荐权重逻辑和旧数据模型不兼容,导致缓存雪崩了。我查了半宿,发现是测试环境的数据集没覆盖到边缘场景……”
“是我的问题。”林夏突然开口,张锐愣住了。“上周评审会我只关注了算法效率,没要求你们做跨场景兼容性测试,是我疏忽了。”他顿了顿,语气里没有丝毫指责,“现在先把权重逻辑回滚到上一版本,中午之前,我们重新过一遍测试方案,这次必须覆盖所有边缘场景,包括用户行为异常的极端情况。”
挂了电话,林夏靠在椅背上,闭上眼睛。作为技术总监,他早就明白,团队出了问题,第一个该问责的永远是自己。三年前他刚接手技术部时,也曾因为把责任推给下属,导致核心程序员离职。那之后他就改了——技术可以犯错,管理不能逃避,信任比什么都重要。
早上七点半,办公室陆续有人来上班。林夏把写好的故障复盘报告发给王总,刚起身想去茶水间冲杯咖啡,就看见产品部的李曼抱着笔记本匆匆走来。她穿一身干练的职业装,脸上却带着焦虑:“林夏,大促预热的活动页面加载速度还是慢,运营那边反馈,用户点击进去要等三秒以上,跳出率快到40%了。”
林夏接过她的笔记本,打开浏览器调试模式。Network面板里,一张首页轮播图的加载时间赫然显示着2.8秒。“图片没做懒加载,也没压缩,”他指着屏幕说,“你们产品需求里只写了‘高清展示’,没提性能指标。现在马上联系设计部,把图片压缩到100KB以内,前端这边加个懒加载逻辑,优先加载首屏内容。”
李曼急得跺脚:“可是设计部说高清图是品牌要求,不能压缩,不然影响视觉效果。而且今天就要上线,改代码根本来不及……”
“来不及也要改。”林夏语气坚决,“用户不会因为‘品牌视觉’等三秒,他们只会直接关掉页面。你去跟设计部沟通,就说技术部可以用WebP格式保留清晰度,同时把体积压下来,要是谈不拢,我去找品牌总监。”
他说话时眼神很亮,李曼突然想起去年大促,也是因为页面性能问题,林夏带着前端团队熬了两个通宵,把加载速度从五秒优化到八百毫秒。那时候她还跟同事吐槽过林夏“太较真”,现在才明白,这种较真背后,是对用户体验的极致负责。
等李曼拿着压缩好的图片回来时,林夏已经让前端工程师改好了懒加载代码。测试环境里,活动页面的加载时间降到了九百毫秒,李曼松了口气,递给他一杯热咖啡:“谢了林夏,每次都要麻烦你救火。”
“不是救火,是我们本来就该考虑到这些。”林夏接过咖啡,指尖传来暖意,“下次产品需求评审,记得把性能指标写清楚,我们技术部不是只会‘实现功能’的工具人,是帮你们‘做好产品’的合作伙伴。”
这章没有结束,请点击下一页继续阅读!