我们还需要 SRE 吗?

news2024/11/25 19:40:26

在 「一文讲透研发,SRE,运维,DevOps 的区别」里,我们讲了几大工种的区别,这篇我们重点讲一下 SRE (Site Reliability Engineering)。

file

SRE 的兴起

SRE 最早起源于 2003,由 Google 提出。SRE 既是一种理念,也是一套围绕这个理念的实践,由这个实践也诞生了一个新的工种,同样叫 SRE。SRE 的兴起有多方面的原因:

  • 天时 - 互联网在线服务大规模普及。一边服务复杂度极具提升,一边稳定性的要求越来越高。
  • 地利 - 由 Google 带头的一批头部科技公司背书,尤其是 2016 年 Google SRE 团队撰写的 Site Reliability Engineering: How Google Runs Production Systems 堪称行业里最经典的著作。
  • 人和 - Ops 们需要找新的出路,因为云服务等基础设施的完善消灭了传统运维 (IT Ops) 的大量工作。

SRE 和 Dev 间的生产关系

关于 SRE 和 Dev 之间的关系,网上读到的一个精彩描述:

file

再具体一点,我们可以拿 DORA 的四大核心指标来看:

file

  1. Deployment frequency (部署频率)
  2. Lead Time for Changes (从代码提交到最终发布耗时)
  3. Change Failure Rate (发布失败率)
  4. Time to Restore Services (服务恢复时间)

前两个指标指向的是 Velocity (速度),后两个指向的是 Stability (稳定性)。Dev 的目标是优化迭代速度,而 SRE 的目标则是优化稳定性。DORA 报告里提到的精英团队能做到即快又稳,但这也是相对而言的。毕竟大家都知道,变更是造成生产故障的第一大根因,这也是为什么许多团队会定下周五不发布的规矩。每一个研发组织还是要在 Velocity 和 Stability 之间做权衡,这也自然导致负责 Velocity 的 Dev 和盯着 Stability 的 SRE 团队间发生摩擦。正好前不久 Google SRE 团队又发表了一篇文章 How Google SRE And Developers Collaborate 着重谈了这点:

file

SRE 和 Dev 之间的生产关系,顶层是 Peer,执行层则是 Funding,SRE 的 HC 是由 Dev 团队提供的。具体几点:

  1. Funded by Dev
  2. Strategic Partnership
  3. Dev Ownership
  4. Joint Partnership
  5. Shared Endeavor

总体而言在 SRE 和 Dev 的关系里,Dev 还是占主导地位。在 Google 的组织架构里,虽然 SRE 是一条独立的汇报线,但 SRE 的日常工作是嵌入在 Dev 团队中的。那为什么不直接把 SRE 归并到 Dev 组织中,而要单独设一条线呢:

  1. 更好地制衡 Dev,Dev 无论是从自身还是因为产品经理的压力总是想着尽快上线功能,而忽视长期的服务稳定性和可运维性建设。把 SRE 独立出来可以起到更好的监督作用。
  2. SRE 组织里面也有两部分,一部分是嵌入在 Dev 团队中的,叫作业务 SRE,同时也有横向的 (在 Google 里叫 Horizontal) ,来制定整体的规范,提供通用的基础设施和工具。
  3. SRE 的工作内容和 Dev 还是有明显差别,比如负责稳定性就要随时应急,需要全球 7 x 24 覆盖。Google SRE 团队通常会分布在美国和欧洲,而许多 Dev 团队都只需要在一个时区。

其他公司也会采用不同于 Google 的组织架构,比如采用双线汇报,SRE 既汇报给 SRE 的负责人,同时又汇报给 Dev 负责人。有些公司的 SRE 会有自主 HC,并不需要 Dev 团队的资助。不同的架构取决于组织希望 SRE 和 Dev 走得有多近,过近达不到制衡的目的,而过远则会造成更多的协同摩擦。但两个部门的存在,摩擦是很难避免的。以下是一个常见的 Dev 和 SRE 关系发展时间线:

Dev: 运维压力太大,还要做业务需求,开发团队忙不过来了,看上周又出了个 P1 故障,还是找个 SRE 团队来帮忙吧。

SRE: 这些 xx 监控指标先加一下,我们看看现在服务的稳定性再说。

(过了一段时间)

Dev: 我们弄了一些,但业务压力太大了,我们实在不行了,你们赶紧来吧。

SRE: 好吧。

(又过了一段时间)

Dev: SRE 好像也只会接个告警,排查还是要我们上。还老是卡上线,每做一个功能,都要加这加那指标。本来上周的发布又被 SRE 叫停了。

SRE: Dev 开发功能都不测试,一上线各种问题,让我们半夜起来擦屁股,上周又出了一个 P1 故障,这个月 SLA 已经破线了,不能让 Dev 发布了。

(开始逐渐互相看不惯对方,要么将就相处,要么一拍两散)

即使是 SRE 届的标杆 Google,SRE 和 Dev 都发生过炒对方鱿鱼的事情。在 Google 内部,每当生产事故发生后,都会写 postmortem。有时 SRE 和 Dev 在分手的时候,也会以 postmortem 的方式写分手信,这总会引起大家的围观,因为每个人对于 SRE 和 Dev 间的相爱相杀都或多或少地感同身受吧。

SRE 的身份认同

由于 SRE 在组织架构中的模糊性,导致 SRE 团队的自身定位也一直是个问题。

首先,许多组织设立的 SRE 团队只是把原来的 Ops 团队换了一个高大上的名字,这显然会造成部门内外的认知困扰。

而在真正的 SRE 团队内部,业务 SRE 更多是参与到 Dev 团队的项目里。虽然不属于 Dev 团队,却又扮演着不讨好的看门人角色,以及负责压力更大的线上稳定性工作。横向 SRE 更多的时间则花在基础设施建设上,其所做的工作又基本和 Infra Dev 无异。前面提到的 Google SRE 文章里还提到 Meaningful Work:

file

Dev 通常更容易找到 Meaningful Work,因为用户感知到的功能主要由 Dev 来开发,SRE 则需要在 Dev 圈好的地之外再去发掘机会,难度更高。

SRE 们往往负重前行,但相比 Dev 们更缺少鲜花和掌声。优秀的 SRE 容易流失,毕竟一个具备研发能力的 SRE,可以转成 Dev。在 Google,从 SRE 转成 Dev 的数量是要远远多于 Dev 转成 SRE 的。

SRE 还被需要吗

来到标题里的疑问,首先 SRE 承担的职能还是会长期存在,但是只要 SRE 和 Dev 间的生产关系跳不出 Google 当初所设计的范畴,SRE 的发展就有局限性。我们总是听到 Dev 抱怨 SRE 只会接一个告警,问题最终还是要交给 Dev 来看。很大程度上这是组织设计的锅,因为 SRE 和 Dev 不是同一个团队,SRE 关注的 Stability 往往又站在 Dev 的 Velocity 对立面,而产品则还是由 Dev 团队 own。这也是为什么现在更多的团队选择纯 DevOps,只有 DevOps 一个工种,自己 Dev 自己 Ops,这样没有协同的损耗,从激励机制上也是更合理的。

当年互联网大潮开启,从单机应用走向互联网服务。快速迭代,海量并发,时刻在线,这些互联网业务独有的特性对于服务的稳定性带来了巨大挑战。那时 Dev 忙着上线业务,Ops 又希望转型,而行业又缺少体系化的手段来解决稳定性问题,SRE 的出现恰好补了位。经过这些年的打磨,解决服务稳定性的方法论和最佳实践已经成型,云基础设施保证了底层的稳定性,各种 SaaS 服务,开源产品也大大降低了 Dev 自己做 Ops 的门槛,这个时候 SRE 团队和 Dev 团队之间的组织摩擦就逐渐上升为了主要矛盾。过去 20 多年,行业从没有 SRE,到拥抱 SRE,再到去 SRE:

file

这个过程和中台演进也颇为相似,前些年是建中台,这两年开始去中台,SRE 就类似提供系统稳定性的中台职能。去掉 SRE,并不是放弃稳定性,而是看到 DevOps 本身可以在保障系统相对稳定的情况下更快地进行业务迭代。当靠 DevOps 团队也能做到 99.9% 的 SLA (Service Level Agreement) 时,许多团队便不会再引入 SRE ,以牺牲迭代速度的代价换取提升 SLA 到 99.99%。

SRE 留下的财富

即使将来 SRE 风光不再,但整个 SRE 周期也留下了一堆的财富。

首先 Google 想出了 SRE 这个好名字,Site 代表规模,Reliability 代表稳定性,Engineering 代表工程,正好描述了 SRE 是用工程的方法来解决规模化后的稳定性问题。

因为 SRE 而诞生的 SLI (Service Level Indicator), SLO (Service Level Objective), SLA (Service Level Agreement) 定义了稳定性工作的北极星指标;Blameless, Postmortem 的文化也是经过 SRE 和 Dev 的不断磨合成为了业界共识;Logs, metrics and traces 三大件,Chaos Engineering 这些也都是由 SRE 推动成为了最佳实践,在此之上也建立起了 Datadog, Elastic 这样的商业帝国。

其次 SRE 帮助传统 Ops 完成了转型,如果没有 SRE 作为过渡,Ops 很难直接转型为 Dev,是 SRE 让 Dev 和 Ops 可以 meet in the middle。而经过 10 多年的 battle,SRE 最终燃烧了自己,融化了 Dev,再一起合体成了 DevOps。

船停在码头是最安全的,但那不是建造他的目的。告别 SRE,也告别 Dev,直接挂上 DevOps 的旗子,不用再争论今天是否可以出海,这实在是太好了。

Ship it

file


💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/666072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux Vim三种工作模式(命令模式、输入模式和编辑模式)详解

Linux 系统中所有的内容都以文件的形式进行存储,当在命令行下更改文件内容时,常会用到文本编辑器。 我们首选的文本编辑器是 Vim。使用 Vim 编辑文件时,存在 3 种工作模式,分别是命令模式、输入模式和编辑模式,这 3 种…

一文讲透研发,SRE,运维,DevOps 的区别

研发,SRE ,运维是工种,而 DevOps 是体系。如果拿足球来打比方,研发,SRE ,运维对应的就是前锋,中场,后卫这样的位置,而 DevOps 则是诸如 4-3-3 这样的阵型。 研发 也叫研…

聊聊如何独立使用ribbon实现业务客户端负载均衡

前言 ribbon是Netflix开源的客户端负载均衡工具,ribbon实现一系列的负载均衡算法,通过这些负载均衡算法去查找相应的服务。ribbon被大家所熟知,可能是来源于spring cloud,今天就来聊聊如何单独使用ribbon来实现业务客户端负载均衡…

我心中的编程语言之王:Python

我心中的编程语言之王:Python 在当今日益发展的信息技术领域,编程语言的地位愈发重要。它们是构建现代软件和应用的基石,也是实现科技进步的关键工具。在众多编程语言中,Python 以其简单、易用、高效等诸多优点,成为了…

Dubbo架构分层总结

进来闲来无事看了些有关dubbo源码的书籍和《极客时间》何辉老师的课程,由于知识点比较碎,遂以笔记的方式纪录,毕竟好记性不如烂笔头,也希望对感情趣的同学提供点帮助 假设你是个新手开发者,可能只是简单使用过dubbo框…

数字孪生世界建设核心能力:数据治理能力

随着世界经济由工业经济向数字经济转型,数据逐步成为关键的生产要素,企业开始将数据作为一种战略资产进行管理。数据从业务中产生,在IT系统中承载,要对数据进行有效治理,需要业务充分参与,IT系统确保遵从&a…

前端开发必须要知道的package.json文件

前言 package.json 文件是一个 Node.js 项目的配置文件,用于描述项目的元数据信息(如名称、版本、作者、依赖等),以及运行和构建该项目所需的脚本命令。 在项目开发过程中, package.json 文件的维护和更新是非常重要…

Axure8 零基础操作入门

参考:黑马产品经理课程 视频资源:day1&day2,Axure部分 Axure8常用功能 选择/缩放 选择 包含选中:全部选中才有效(避免误操作,建议使用这个)相交选中:相交即全选中 缩放 元件等…

PHP开发工具22-PHP中安装和使用xdebug

文章目录 前言配置详解总结 前言 本文已收录于PHP全栈系列专栏:PHP快速入门与实战 作为一个程序员,千万不要说你没有用过debug工具,不然有点说不过去。xdebug是PHP语言一个强大的利器,用他可以做很多事情。 xdebug是PHP开发者常…

提升编程效率:你不能错过的18款VS Code扩展

微信搜索 【大迁世界】, 我会第一时间和你分享前端行业趋势,学习途径等等。 本文 GitHub https://github.com/qq449245884/xiaozhi 已收录,有一线大厂面试完整考点、资料以及我的系列文章。 快来免费体验ChatGpt plus版本的,我们出的钱 体验地…

LTV-5341-ASEMI代理台湾光宝高速光耦LTV-5341

编辑:ll LTV-5341-ASEMI代理台湾光宝高速光耦LTV-5341 型号:LTV-155E 品牌:光宝 封装:LSOP-5 引脚数量:5 类型:光耦 特性:台湾光宝、IGBT驱动器、储能专用光耦\高速光耦 封装…

pnpm项目运行启动以及如何迁移到内网

1.迁移前的准备 首先看对node版本和pnpm版本的要求是什么,我的是自己电脑(windows系统)和内网电脑(windows系统)上的环境一致的 我的项目要求是 1.node版本 16.20.0 2.pnpm版本 8.6.2 需要先将node 和 pnpm 安装好相应…

今年前改BUG,下午就被通知在改进优化了

内卷可以说是 2023 年最火的一个词了。2022 年刚开始,在很多程序员网站看到很多 Java 程序员的 2023 年度总结都是:Java 越来越卷了(手动狗头),2023 年是被卷的一年。前有几百万毕业生虎视眈眈,后有在职人员…

slam十四讲 03 Eigen实践之三维空间刚体运动

目录 1 初始化 2 旋转空间中的向量 3 欧拉角 4 变换矩阵 5 四元素 完整程序 1 初始化 旋转的两种办法: (1)旋转矩阵:a Ra, a R^T a, 旋转矩阵的特性:是一个行列式为1的正交矩阵. 三维空间的旋转是3x3矩阵&am…

基于SpringBoot的校园请假管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 校园请假信息管理系统…

php质量检查工具 phpmd的使用

PHPMD简介 团队在使用php-cs-fixer 代码格式自动式化工具之后,在格式,代码错误等方面带来了很大便利,不过在命名,代码质量,代码复杂度,缺少一些检查,在网上搜索后,发现PHPMD 一个PHP代码静态分析工具. 安装 官方网站 github 你可以直接到下载页面封装好的 phar 包&#xff1…

云原生数据库受到青睐,亚马逊云科技数据库提供多项功能

小小的改变,标志一个新时代的全面开启,一个数据库的云原生时代。前不久,Gartner公布了一组数据,引起了不小的讨论度。在2022年全球数据库管理系统的市场份额排名中,作为纯云厂商的亚马逊云科技,超越了老牌传…

一种基于目标的可解释的自动驾驶预测和规划策略

摘要: 本文介绍了一种通过理性逆向规划进行目标识别和多模态轨迹预测的方法。通过将目标识别与MCTS 计划相结合,为自车生成优化计划。 最近炒得比较火的影子模式实际就是在通过数据收集的方式不断模拟自动驾驶系统按照人类驾驶习惯实现人之间的交互过程…

QML 快速上手3 - QuickControl2

目录 QuickControl2简介风格设置control 配置文件图像浏览器案例component 组件报错问题StackViewSwipeView QuickControl2 简介 quickcontrol 用于快速构建风格化的用户界面 它包括了以下几个预制的组件风格 Default QT 默认风格Universal windows 桌面风格Material 谷歌推…

【FPGA】译码器、计数器及数码管显示

写在前面 万万没想到最后去了FPGA岗位,但是FPGA只在研一学过,确实忘得差不多了,因此从头把东西过亿边 这是某本书上的第一章节,感觉写的还是挺不错的,大概看了一下让我回想起很多知识,个人感觉比较适合学习…