系统管理员和站点可靠性工程师的区别

在IT相关的公司中,sa和sre一般都会被称为运维。 原先我一直认为并没有特别大的区别,但是这2者的概念其实是有很大的区别,出发点也是不一样的。

sa(system admin)这个岗位在大宋是在20多年前产生的,也是伴随着第一代互联网公司产生的。 而他们的工作职责主要是维护服务器,交换机,高级点还有点防火墙什么的。而这些事情可能就花费了大量的时间。当年就看到某游戏公司的2个运维在机房里待了1个月,就为了上架30多个机柜的服务器。

而当年会用kickstart安装操作系统也算是小有成就。更高点的还要进行驱动更新,kernel裁剪这些事情。以及要对整个操作系统的启动流程要烂熟于心。
而我当年还干了一点什么测量服务器最大电流,平均工作负载的电流,就是为了一个机柜里塞更多的机器。

魔都电话电报局的那个机房因为年代久远,管理混乱,经常你推着机房小推车就不知道把谁家的网线电源给兜走了。能知道的就给人插回去,不知道插哪里的就只能扔那里了。

这个第一代sa主要就是针对硬件,操作系统相关的工作。因此他们一般对于操作系统,网络协议都会非常熟悉。这些是跟后面几代的区别差异。

而第二代sa的成长是由于整个硬件和操作系统的成熟度越来越高,而且远程控制卡(iDRAC)这些越来越成熟,终于可以脱离物理的限制进行远程工作了。那时间更多的在操作系统之上的基础软件上了。http server,db server, cache server这些事情上花的时间更多了。

同时因为成熟度越高,对于可靠性大家也不能像第一代那样了。网络层面的heartbeat和keepalived这些就是必备了,而数据库层面的mmm,mha架构也是耳熟能详的。

可见这个时候大家的关注点是在基础软件上,以及针对这些基础软件的监控报警上。我还记得自己把wikipedia上一些完整性比较高的监控软件都测试了一遍。之前也写过一遍贵司监控软件的5代更新。

也就是这里大家借助于一些工具摆脱了很多手动工作的事情了。这个也是现在大部分初中级别运维的所在位置。他们会对一些常用软件和工具非常熟悉,好一点的会关注这些软件背后的原理和常见问题处理。

而贵司的研发评审基本也属于在这个层次,列了很多的研发规范,各种中间件数据库的使用规范,各种的性能优化意见都是在这个层次上的。

再后面一代就比较乱了,devops, sre这些概念层出不穷。相对而言sre是从业务和用户体验上的考量。

因此到了sre就是针对业务本身的运维了,而不只是那些软件了。软件最终也是为了业务服务的。因此整个评审体系从关注使用规范到关注用户体验和产品安全上来进行考量。

随着云计算的兴起,sre们也把那些基础软件的工作更多的是外包给了云厂商来负责,他们也许可以做的更好在特定软件上。

sre的关注点就变成了:如何快速的故障转移,异地多活,业务模块如何横向扩展和水平扩展,接口异常调用处理,模块之间的调用依赖,系统的降级,限流,调用链分析,灰度发版,快速扩缩容,智能报警。

在《sre运维之道》一书的第九章其实就是讲了这个。