线上系统出现故障,谁负责深夜紧急响应和修复?

Christa B.Eng.
Christa B.Eng.
Young tech entrepreneur, recently launched an AI-powered SaaS.

这事儿啊,通常有个专门的词儿叫“On-call”,轮到谁值班,谁就得爬起来。

你可以把它想象成医院里的值班医生。我们工程师会排一个班表,比如这周轮到我,下周轮到小张。在值班期间,我的手机会装一个特殊的软件,或者公司会发一个专门的电话。一旦线上服务出了问题(比如网站打不开了、用户无法登录、支付失败了等等),监控系统会自动发现,然后立刻给我打电话或发警报。那个警报声通常都特别刺耳,保证你能从深度睡眠中惊醒。

接到来电,就得马上从床上爬起来,打开电脑,开始排查问题。

具体是谁来修呢?分几种情况:

  1. 开发工程师自己: 这是最常见的情况。“谁写的代码,谁负责”,因为你自己写的程序,你最了解它可能会在哪些地方出问题。所以很多公司都是由开发团队的成员轮流值班。
  2. 运维/SRE工程师: 在一些大公司,有专门的团队负责维护线上系统的稳定,他们叫“运维工程师”或“SRE(网站可靠性工程师)”。他们的核心工作就是保障服务7x24小时不中断,所以半夜救火是他们的“本职工作”之一。但即便是他们,如果发现是某个业务代码的bug,最终还是会把写代码的开发工程师叫起来一起解决。
  3. “高级火力”: 如果值班的工程师搞不定,问题很棘手,他/她就需要“摇人”了。可能会把更资深的工程师、架构师,甚至是技术总监从被窝里薅起来。大家一起开个紧急会议,在线上协同作战。
  4. 创业公司老板/CTO: 在非常小的初创公司,人手紧张,半夜起来修bug的可能就是创始人自己或者技术合伙人(CTO)。毕竟,公司是自己的,服务挂了比谁都心疼。

整个过程大概是这样:

  • “滴滴滴!” 警报响起。
  • 睡眼惺忪地接起,听机器人念叨“某某服务已宕机”。
  • 翻身下床,冲到电脑前。
  • 登录各种系统,看监控、查日志,像个侦探一样找线索,定位问题根源。
  • 找到问题后,开始“急救”。有时候是重启一下服务就好了(就像重启电脑),有时候是把刚刚发布的新版本代码退回到上一个稳定版(这叫“回滚”),有时候是需要紧急写一段代码修复bug。
  • 问题解决后,还不能马上睡,要观察一段时间,确保服务真的稳定了。
  • 最后,写个“事故报告”,天亮了给团队所有人一个交代:昨晚发生了什么,怎么解决的,以及以后如何避免。

所以,如果你半夜三点看到某个网站挂了,但十分钟后又恢复了,那很可能就是有位工程师刚刚经历了一场从被窝到电脑前的生死时速。这确实是IT工程师工作的一部分,虽然辛苦,但也是责任所在。