谷歌SRE的7条原则
谷歌SRE的7条原则
拥抱合理的风险
最大化系统的稳定性不仅毫无意义,而且会适得其反。不切实际的可靠性目标限制了新功能交付给用户的速度,而且用户通常不会注意到极端的可用性(比如99.99999%),因为他们的体验是由最不稳定的组件决定的。
拥有100%的可用性需求严重限制了团队向系统交付更新和改进的能力。想要交付许多新特性的服务所有者应该选择不那么严格的SLOs,从而让他们在出现无关紧要的bug时可以继续交付。
服务所有者关注可靠性,因此他们可以选择更高的SLO。SRE准则将这种可接受的风险量化为“错误预算”。当错误预算耗尽时,重点就应该从新功能开发转移到提高可靠性。
服务水平目标SLO(Service Level Objectives)
站点可靠性工程(SRE)规程决定系统的可用性目标,并使用来自工程师、项目所有者和客户的输入来度量可用性。
如果没有一致的方式来描述系统的正常运行时间和可用性,团队间的交流和合作将会很有挑战性。运维团队不断地灭火,但是开发人员很少主动地修复错误。如果没有对正常运行时间的清晰度量,产品团队可能不同意可靠性是一个问题。
所以SLO是推动SRE学科发展的主要因素。SRE确保每个人都同意当可用性超出规范时应该做什么,以及如何度量可用性。这个过程包括所有项目相关的人员的领导。SREs与相关人员一起决定Service Level Indicators (SLIs) and Service Level Objectives (SLOs)。
SLIs是作为请求延迟的时间度量,即每秒请求的吞吐量。通常随着时间的推移而聚集,然后转化为一个速率,可以将与一个阈值比较。
SLOs是在相关人员一致同意的时间段内SLIs累积成功的目标。
SLIs、SLOs和SLAs更接近于“度量一切”的DevOps支柱,这也是我们说SRE实现DevOps的原因之一。
消除Toil
Toil不只是指自己不喜欢做的事。例如,下面的任务是费时的,但具体来说不是Toil: 提交费用报告,参加会议,回复电子邮件,通勤上班,等等。相反,Toil是与正式的prod环境服务的运行联系在一起的。这种工作往往是重复性的、手工的、可以自动化的、没有长期的价值。每当操作员需要操作系统时,例如响应页面、处理票据,就可能会出现Toil。
站点可靠性工程(SRE)学科的目标是通过关注SRE的“工程”部分来减少工作量。SRE的工作是设计一个解决方案,减少Toil,实现任务的自动化。
谷歌的目标是确保每个SRE至少有50%的时间花在工程项目上,这些SRE每个人都在季度调查中报告他们的Toil,以确定运营超负荷的团队。话虽如此,Toil并不总是坏事。重复性的和可预测的任务是让新成员加入的好方法,并且通常可以在低风险和低压力的情况下产生一种即时的满足感和成就感。
分布式系统的检测
监视一个复杂的应用程序是相当困难的。即使存在大量用于仪表、显示、收集和警报的现有基础设施,拥有10-12名成员的谷歌站点可靠性工程(SRE)团队通常也只有一到两名成员主要任务是为整个服务构建和维护监视系统。
随着SRE对公共监视基础设施进行泛化和集中,这个数字正在减少,但是每个SRE团队通常至少有一个“监视人员”。为人类生成警报的规则应该简单易懂,并代表明显的失败。
自动化
SRE的主要工作是实现自动化,从而改进系统。例如,集群可以增长,可以引入更多的特性,而不需要增加团队的规模。
发布自动化
发布工程师对源代码管理、构建配置语言、编译器、自动构建工具和安装程序有更好的理解。他们的技能包括对开发、配置管理、测试、系统管理和客户支持等多个领域的深入了解。
运行可靠的服务需要可靠的发布流程。站点可靠性工程师需要知道,他们所使用的配置是以一种可重复的、自动化的方式构建的,因此发布是可重复的,而不是一次性的。对发布过程的任何方面的更改都应该是有意的,而不应该是偶然的。SREs总是关心从源代码到部署的所有这些过程。
简单化
软件系统具有内在的动态性和不稳定性。一个系统只有存在于真空中才能完全稳定。如果我们停止改变代码库,我们就会停止引入新的错误。如果库永远不变,那么这两个组件都不会引入bug。如果我们冻结当前的用户群,我们就永远不需要扩展系统。
事实上,对SRE方法和管理系统的一个很好的总结是: 我们的工作是保持系统与敏捷性和稳定性的平衡
谷歌SRE的7条原则的更多相关文章
- 防御XSS攻击的七条原则
本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...
- 还在为CSS布局发愁?你该看看这7条原则
一.网页结构分析七条原则 这以下7个原则是经过多年网站实战经验之后的总结,只要掌握这7个原则,可以解决大部分在编写网站布局中的问题. 1.先结构后样式. 2.能用CSS表现出来的效果,就尽量少用图像. ...
- 防御 XSS 的七条原则
本文将会着重介绍防御XSS攻击的一些原则,需要读者对于XSS有所了解,至少知道XSS漏洞的基本原理,如果您对此不是特别清楚,请参考这两篇文章:<Stored and Reflected XSS ...
- MySQL数据库开发的36条原则【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- MySQL数据库开发的36条原则
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),验证通过后,输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动&quo ...
- 谷歌SRE运维模式解读
谷歌SRE运维模式解读 前面我和你分享了一些关于运维组织架构和协作模式转型的内容,为了便于我们更加全面地了解先进的运维模式,今天我们再来谈一下谷歌的SRE(Site Reliability Engin ...
- 【php】页面加载优化的14条原则
1. 尽可能的减少 HTTP 的请求数 [content] 2. 使用 CDN(Content Delivery Network) [server] 3. 添加 Expires 头(或者 Cach ...
- mysql优化20条原则
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...
- Web2.0应用程序的7条原则
个人看好Web的发展潜力,本文字摘自<Collective Intelligence 实战> 网络是平台 使用传统许可模式软件的公司或用户必须运行软件.定期更新至最新版本,以及扩展它来满足 ...
- 谷歌大牛 Rob Pike 的 5 个编程原则
谷歌大牛 Rob Pike 的 5 个编程原则 简介: Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作 ...
随机推荐
- Android基础入门教程-参考资料
2)看视频 网上关于Android的视频教程有很多,这里分享下基神力荐的黑马教程吧: 黑马28期Android全套视频无加密完整版:密码:h7jz 52期不加密版:密码:zve8 当然下面这些视频学习 ...
- runoob-matplotlib(python)
https://www.runoob.com/matplotlib/matplotlib-tutorial.html Matplotlib 教程 Matplotlib 是 Python 的绘图库,它能 ...
- 加速 AI 训推:Lepton AI 如何构建多租户、低延迟云存储平台
Lepton AI 是一款面向开发者的 AI 平台,旨在提供易用.高效且可扩展的基础设施能力.该平台适用于各种训练.推理需求,GPU充足,在保证高性能的同时,能够灵活应对不断变化的工作负载.用户可以快 ...
- openSSL学习-1
上一节[openSSL学习-0]了解openSSL和安装,本节以des.h为例,学习DES分组密码算法 DES 加密分组 调用函数,实现一个分组的加解密(DES-ECB模式) #include < ...
- ASP.NET Core 快速轻量级的浏览器检测和设备检测库
在 .NET Framework 4.7 中那样,通过 HttpContext.Request 的 Browser 属性轻松获取发起 HTTP 请求的浏览器信息,ASP.NET Core 并未直接提供 ...
- npm run的时候报错: this[kHandle] = new _Hash(algorithm, xofLen);
在前面加入以下配置信息 set NODE_OPTIONS=--openssl-legacy-provider && 后面跟原来的启动配置信息 另外一种方式,可以避免修改package. ...
- 0425-FileRead字符输入流
package A10_IOStream; import java.awt.datatransfer.StringSelection; import java.io.IOException; impo ...
- Nessus 扫描Web服务
Nessus 扫描Web服务 1.点击 New Scan,选择 Web Application Tests 2.填写扫描名称和扫描目标 3.点击 Discovery ,选择 Scan Type 为全端 ...
- Q:oracle表空间满了怎么办?
查询表空间使用率: --查看表空间使用率 SELECT a.tablespace_name as "TABLESPACE_NAME", DECODE(TRUNC(total),0, ...
- 【COM3D2Mod 制作教程(1)】教程简介
[COM3D2Mod 制作教程(1)]教程简介 教程来自:https://bdffzi.github.io/opencom3d2/#/Research/MakeMod(含配套视频) 前言 没有Mod ...