把代码推上线
凌晨一点十七分,我按下了那次部署。
屏幕上的进度条开始往前走,CI 跑起来,单元测试、集成测试一个一个变绿。我盯着那串日志,像盯着一颗刚点火的火箭,不知道它会不会在半空炸掉。鼠标停在那儿,没敢立刻切走。
一
这套服务我写了快三周。不算多复杂,但牵扯的边界条件多,和另外三个系统的接口要一个一个对齐,错一个字段,下游就报一串红。白天在办公室写,晚上回家接着写,咖啡喝了不知多少杯,杯子底结了一圈圈褐色的印。
同事问我急什么,我说不急,就是想把它做完。其实我是怕。怕拖久了,那点想把事情做漂亮的心气,会被日常的开会、评审、临时插进来的需求一点点磨掉。很多东西不是做不成,是被拖黄的——拖到后来,连自己都忘了当初为什么要较这个劲。所以这回我逼着自己,写完就发,不等「再看看」。
说起来这功能也没多伟大,就是让用户在列表页少点一次。可就是这「少点一次」,背后是三周的打磨。做我们这行的,成就感常常不在宏大的叙事里,而在这种不起眼的地方——你改了一行,成千上万的人不用再烦那一下。
二
部署到预发环境的时候,一切正常,接口响应漂亮,日志干干净净。可我心里清楚,预发和线上之间,隔着一条河。线上的数据是真实的,用户是真实的,半夜要是崩了,告警会直接打到我手机上,连着响,响到我把枕头边的灯摁亮。
我设了分批发布,先放百分之五的流量。盯着监控面板上那条曲线,错误率一直是平的,延迟也稳,没有突起的小刺。那一刻的松弛,不是开心,是终于可以把悬了一晚上的那口气,慢慢吐出来。五 percent,十,二十……数字一格一格跳,像看着自己的孩子一步步走进人群,没回头哭。
早些年我吃过亏。有回周五下午兴冲冲全量推了一个改动,结果线上缓存击穿,页面卡了半个多小时,我被电话叫回去救火,折腾到后半夜。从那以后我就信分批,信灰度,信「慢就是快」。年轻人笑我保守,我笑他们没在凌晨三点对着报警短信发呆过。
三
等全量推完,已经两点四十。我靠在椅背上,没急着关电脑。窗外黑着,屋里只有显示器的光,照在键盘上,键帽泛着一层冷白。四十五岁写代码,和二十多岁不一样了。那时候追求快,谁先合并、谁 star 多,像比赛;现在更在意稳,能安安静静把一件事交付出去,半夜不用被叫起来,比什么都强。
我把这次的改动在脑子里过了一遍——配置对了,回滚脚本备好了,文档也补了——确认没什么遗漏,才合上笔记本。
明天一定会有新的 bug,新的需求,新的「这个也得改一下」。但今晚,这段代码是活的,跑在成千上万台机器上,替某个素不相识的人,省下几秒钟。
这就够了。关灯,睡觉。
评论 0
还没有评论,来说两句吧。