仅为个人知识总结与记录
Site Reliability Engineer:站点可靠性工程(SRE = 软件工程师 + 运维专家 + 可靠性专家)
相对传统的运维工程师,SER 注重开发,效率,追求自动化。对于 SRE 工程师,追究的就是利用或者使用开发工具,来降低开发或者运维的手动处理任务的时间。
一. SRE的核心职责与目标
1. 确保系统的可靠性
这是首要目标。通过设计、构建工具和流程来最大化服务的可用性(Uptime)、性能、延迟和容错能力。
2. 自动化运维任务
SRE厌恶重复性手工操作。他们会编写代码(通常是Python、Go等)来自动化部署、配置管理、监控告警响应、故障恢复等任务,消除“Toil”(枯燥、重复、手动、战术性、无持久价值的工作)。
3. 容量规划与管理
预测系统未来的资源需求(计算、存储、网络),确保在业务增长时系统能平滑扩展,同时优化资源利用率,控制成本。
4. 监控与可观测性
- 监控: 建立全面的监控系统(Metrics、Logs、Traces),实时了解系统健康状态。
- 告警: 设计精准、可操作的告警策略,避免告警疲劳。
- 可观测性: 深入理解系统内部状态,快速定位和诊断复杂问题。
5. 应急响应与事后复盘
- On-Call: 参与轮值待命,快速响应和处理线上故障。
- 故障处理: 领导或参与故障排查、恢复和根因分析。
- 事后复盘: 组织并撰写事后报告,坦诚分析故障原因,制定切实可行的改进措施(Action Items),并跟踪落实,防止同类故障再次发生。强调“不指责文化”。
6. 性能优化
识别系统瓶颈(应用、数据库、网络、基础设施等),进行优化以提升效率和用户体验。
7. 变更管理
8. 定义和跟踪SLO/SLI/SLA:
- SLI: 服务等级指标(量化衡量服务可靠性的指标,如请求延迟、错误率)。
- SLO: 服务等级目标(SLI应达到的目标值或范围)。
- SLA: 服务等级协议(对客户承诺的SLO,通常带有业务层面的后果)。
9. 平衡可靠性与创新速度
SRE的关键哲学之一是管理“错误预算”。如果服务可靠性(满足SLO)很高,说明有“预算”可以承受一定的风险,可以允许开发团队进行更激进的发布或变更,推动创新。反之,如果预算耗尽,则需要优先提升可靠性。
二. SRE工程师的核心技能栈
三. SRE 的地位
1. 支撑业务增长
2. 提升研发效率
3. 控制成本
4. 数据驱动决策
5. 促进DevOps文化
附录:
-
SRE和运维的区别是什么?
-
什么是站点可靠性工程 (SRE)