SRE 和运维到底差在哪
SRE 和运维这俩词在国内经常混用。本文聊聊我的体会。
表面:title 区别
- 运维(Ops):偏操作、值班、应急响应
- SRE:偏工程化、自动化、可靠性指标
工作内容差异
| 维度 | 运维 | SRE |
|---|---|---|
| 主要产出 | 操作 / 维护文档 | 代码 / 平台 |
| 时间分配 | 70% 运行,30% 改进 | 50% 工程,50% 运营 |
| 故障态度 | 修好就行 | 必须复盘 + 写代码避免再发 |
| 工具 | 现成工具 + 脚本 | 自研平台 / Operator |
| KPI | 系统可用性 | SLO + Error Budget |
SLO 是 SRE 的精髓
运维的 KPI 经常是"99.9% 可用"——但这只是个空口号。
SRE 把它做成可执行的:
SLO: 服务 X 的 99 分位延迟 < 200ms,月可用率 >= 99.9%
Error Budget:
- 30 天 99.9% = 允许 43 分钟不可用
- 已用:12 分钟(上周一次故障)
- 剩余:31 分钟
规则:
- Error Budget 充足 → 允许激进发布
- Error Budget 见底 → 冻结发布,专注稳定性
Toil 这个概念
SRE 把"重复、自动化、无长期价值"的工作叫 toil。SRE 的目标是 toil < 50% 工作时间。
典型 toil:
- 每天看监控
- 手动重启挂掉的服务
- 手动扩容
- 收集故障数据
每出现一个 toil,要么自动化掉,要么消除。
实操差异举例
场景:某个服务凌晨经常 OOM
运维思路:
1. 加内存
2. 写脚本检测 OOM 自动重启
3. 加监控告警
SRE 思路:
1. 拉 OOM 时段的内存曲线 + GC 日志
2. 找开发改代码(内存泄漏)
3. 加 HPA 基于 memory 自动扩
4. 写 postmortem,更新 runbook
5. 把这类问题做成共性检查项加到 CI
国内现状
国内很多公司 title 叫 SRE 但实际干运维的活。原因:
- 工程师文化没那么强
- 老板觉得"维护好就行,写啥代码"
- 业务变化快,工程化投入 ROI 看不出来
但好的公司在转:阿里、字节、美团内部都有真正意义的 SRE 团队。
想从运维转 SRE 怎么干
- 写代码:Python / Go,至少能写中等复杂度工具
- 学 SLO 设计:Google SRE 三本书必读
- 拥抱 IaC:手动操作的事都用 Terraform / Ansible 管起来
- 跟开发结对:参与 design review,把可观测性塞进去
- 量化一切:操作数、自动化率、故障数、MTTR
反过来呢?SRE 转运维有意义吗
有的。SRE 在大公司久了容易"工程化过度"——动不动写平台,但小公司根本承担不起。
转去做 ops 反而能保持"做对一件事"的能力——不是所有问题都要平台化。
我的观点
SRE 不是"运维 2.0",是不同的工种。但都要懂工程化思维。
最值钱的人是:能像运维一样灵活解决眼前问题,又能像 SRE 一样消除问题根源。
教训:title 不重要,重要的是你解决的问题在系统里"消失"了,还是只是被你"压住"了。