谷歌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操作 ...
随机推荐
- 分布式文件系统KFS基础知识介绍
Kosmos distributed file system,简称KFS,是一个类GFS的分布式文件系统,被设计用于分布式的结构化存储.下面将对KFS的体系结构进行简单介绍,最后给出一个使用KFS C ...
- WebSocket详解:技术原理、代码演示和应用案例
1.内容简介 本文将简要介绍 WebSocket 的由来.原理机制以及服务端/客户端实现,并以实际客户案例指导并讲解了如何使用 WebSocket 解决实时响应及服务端消息推送方面的问题.本文适用于熟 ...
- langchain-agent
Agent 参考:LangChain 实战:Agent思维 大模型是被训练出来的,知识是有时间限制的,所以当进行问答时,可以结合本地知识库和调用搜索或在线API来增强自身能力,这些不属于大模型的内部数 ...
- 密码学报如何正确Latex投稿?
记录一下<密码学报>投稿遇到的坑,要不研究一下,投稿都不会投!(死在第一步) 模版地址 http://www.jcr.cacrnet.org.cn/CN/column/column13.s ...
- UTS Open '21 P7 - April Fools
传送门 前言 本题是笔者keysky与同学yangbaich讨论+推式子一整个晚上以及讨论前ybc的一整个下午做出来的,综合起来是 \(34\) 个转移方程,对于整道题来说,贡献大抵为我 \(2\) ...
- java重载-构造方法也存在重载-数据类型的提升
重载 1.一个类中不能声明多个相同的方法,属性. 2.上面的相同指的是方法名,参数列表相同.和返回值类型无关. 3.如果方法名相同,但是参数列表(个数,顺序,类型)不相同,会认为是不同的方法,在jav ...
- 探索 QuestPDF:全平台支持、多功能、专业级的 .NET PDF 库
QuestPDF 是一个用于生成 PDF 文件的 .NET 库,它提供了一个简洁的 API 和灵活的布局选项,使得在 .NET 应用程序中创建 PDF 文件变得更加简单. 支持多平台,支持的功能有 合 ...
- 在table中tr的display:block显示布局错乱问题
参考链接:https://blog.csdn.net/zj853975468/article/details/51554054?utm_medium=distribute.pc_relevant_do ...
- 『Python底层原理』--Python属性的工作原理
Python中的属性操作(如获取.设置和删除属性)是我们日常编程中非常常见的操作. 但你有没有想过,当我们写下obj.attr或obj.attr = value时,Python 内部究竟发生了什么? ...
- Typecho 从零开始搭建个人博客详细教程
搭建Typecho个人博客需要进行一些准备工作.以下是大致的教学步骤: 1. 准备工作: - 一台支持PHP和MySQL的服务器,可以是虚拟主机或者自己搭建的服务器. - 一个域名,用于访 ...