运维在硅谷被称为 SRE(Site Reliability Engineer)。我觉得这个名字比运维好。运维听起来更像操作员,SRE 则听起来更有一种使命感和高端感。而且现在很多公司的情况,SRE 比运维对工作的描述更准确。
硅谷很多公司公司,线上出了问题,并不一定都是运维负责,而是所有的工程师轮流 Oncall(这个词还真不知道要怎么翻译)。只有 Oncall 中遇到是和服务器相关的问题的时候,才会找专门的运维。
我刚进入 Square 的时候,对各种系统的维护和操作几乎是一窍不通。很多命令行的指令都不熟。遇到问题该去哪里看数据,查日志,几乎都是抓瞎。好在组里有一个工程师 Ken,是之前 Google 做 SRE 的。来了 Square 之后,转成普通的工程师,没有再做 SRE。
当时组里一共二十个左右的工程师,我和他两个人负责 Square Store 的 Search Backend。每次我们组的项目线上出了问题,我都会去找他。我很喜欢坐在他旁边看他处理各种问题,他特别熟练,每次命令敲得飞快,在各个界面间自如地切换着,让我羡慕不已。他人也很好,每次都很耐心细致地跟我解释,还分享给我一些他自己列出的常见的命令和链接。一来二去,一些基本的监控、排查、修复操作,我也能自己搞定了。
后来,从 Square 离开,去了 Airbnb。那个时候,Airbnb 还没有专门的 SRE,一些各个组里对系统比较有经验的人,组成了早期的全民运维,叫做 Sysops。Sysops 并不是一个单独的组,而是别的组的人的「兼职」,轮流处理各种线上问题,有点儿全民运维的味道。
我因为在 Square 的经历和积累,也有幸成为其中的一员。Square 和 Airbnb 在系统 Monitoring 和 Alerting 上用的很多开源工具都是一样的。当然遇到特别棘手的问题,还是要去请公司更老的司机帮忙。
再后来,Airbnb 慢慢更大了,系统组也越来越完备。就开始招全职的 SRE 了。之前的 Sysops 就变得不那么重要,主要只负责在线上有问题的时候找到对应的组的人,通知他们处理。而 Sysops 的成员不需要太多的运维技术了。
我们招前几个 SRE 的时候,我经常是面试官之一。SRE 的面试题总的说来和普通工程师差不多,但是更侧重于系统的理解,写的代码也是脚本多于算法。因为此,我和公司最早期的几个 SRE 也都认识。感觉都很牛,知道的东西都很多。
总的说来,我觉得如今的运维或 SRE,不是简单的维护,更多的是搭建更好的工具和系统,让很多重复性工作自动化、让系统更稳健。需要的知识和能力,即广且深。因为多数 SRE 会接触大量的开源工具和云平台,基于其上搭建新的工具和系统,所以总是有机会接触很多最前沿的技术。且具有这些技能的人才,不论大公司还是小公司,都是必不可少的。