文章目录
- [什么是 SRE(站点可靠性工程)?](#什么是 SRE(站点可靠性工程)?)
什么是 SRE(站点可靠性工程)?
SRE,Site Reliability Engineering,中文翻译为站点可靠性工程师,这个词诞生于谷歌内部。
站点可靠性工程师的职责是什么?
站点可靠性工程师是一个独特的岗位,要么必须具有系统管理员背景、或有运维经验的软件开发人员;要么必须是有软件开发技能的 IT 运维人员。
SRE 团队负责部署、配置和监控代码,以及生产服务的可用性、延迟、变更管理、应急响应和容量管理。
SRE 并不是要实现 100% 可靠性,而是针对故障做好计划并妥善应对。
自动化是站点可靠性工程师工作中的重要部分。如果他们一直在反复处理同一个问题,就很可能会实现解决方案自动化。
保持运维和开发工作之间的平衡是 SRE 的重要组成部分。
SRE与我们传统认知的运维工程师有什么不同呢?
传统运维模式的普遍做法是招聘运维工程师来运维计算机系统。运维工程师负责将现成的软件组件部署在生产环境中,主要工作在于应对系统中产生的各种需要人工干预的事件,以及来自业务部门的变更需求。随着系统变得越来越复杂,组件越来越多,用户流量不断上升,相关的事件和变更需求也会越来越多。于是公司需要招聘更多的运维工程师来应对日益增多的事件。可以看出,传统运维工程师的日常工作与研发工程师相差甚远,他们通常分属两个不同的团队:开发(Dev)和运维(Ops)。
从本质上来说,由于研发团队和运维团队背景各异,技术能力与工具使用习惯差距巨大,工作目标也截然不同。
传统的研发团队和运维团队分歧的焦点主要在软件新版本、新配置的变更的发布速度上。研发部门最关注的是如何能够更快速地构建和发布新功能,而运维部门更关注的是如何能在他们值班期间避免发生故障,因为绝大部分生产故障都是由于部署某项变更导致的,不管是部署新版本,还是修改配置,甚至有时只是因为改变了用户的某些行为。
这两个团队的目标从本质上来说是互相矛盾的。极端的说,研发团队想要"随时随地发布新功能,没有任何阻拦",而运维团队则想要"一旦一个东西在生产环境中正常工作了,就不要再进行任何改动"。
SRE模式
针对以上传统运维模式带来的问题,SRE模式从Google内部诞生:通过招聘软件工程师开发软件系统来维护系统运行以替代传统运维模式中的人工操作 。换句话说,SRE就是在用软件工程的思维和方法论,通过设计、构建自动化工具完成以前由运维工程师手动操作的任务。
SRE和DevOps的关系
DevOps\]旨在打破IT组织中开发、运维、测试和安全各自为政的局面,它不是一个平台,不是一个岗位,也不是什么组织团体和角色,它是一种基于人与技术互动以改善关系和结果的指导原则和文化运动。SRE可以是一个工作岗位,也是我们探索的一系列工作的实践方式,如果认为DevOps是一种理念和工作方法,那么就可以认为SRE实现了DevOps中所描述的部分理念,换句话说,**SRE是DevOps文化的具体实践**。