SRE方法论之拥抱风险

简介: 系统不可能100%可靠,人都不可能100%健康,更何况我们人类创造的系统?所以,任何软件系统都不应该一味地追求 100%可靠。事实证明,可靠性超过一定值后,再提高可靠性对于一项服务来说,结果可能会更差而不是更好

一、系统不可能100%可靠

系统不可能100%可靠,人都不可能100%健康,更何况我们人类创造的系统?所以,任何软件系统都不应该一味地追求 100%可靠。事实证明,可靠性超过一定值后,再提高可靠性对于一项服务来说,结果可能会更差而不是更好!极端的可靠性会带来成本的大幅提升:比如过分追求稳定性限制了新功能的开发速度和产品交付速度,并且很大程度地增加了投资成本和运维成本。

二、管理风险

不可靠的系统会影响产品的信誉,虽然系统不可能100%可靠,但我们也要减少系统出故障的几率。然而,经验表明,可靠性进一步提升的成本并不是线性增加的:可靠性的下一个改进可能比之前的改进成本增加100倍。基于以上矛盾点,SRE的做法是管理风险,目标是:我们会努力提高一项服务的可靠性,但不会超过该服务需要的可靠性。管理风险旨在寻求快速创新和系统可靠性的平衡,而不是简单地将可靠性最大化。

三、度量风险

SRE的做法是通过一个客观的指标来体现一个系统的可靠性(或者是风险)。对于大多数服务而言,最直接的能够代表风险承受能力的指标就是对于计划外停机时间的可接受水平。对于系统而言,这个指标通常是基于系统正常运行时间比例的计算得出的。

可用性=系统正常运行时间/(系统正常运行时间+停机时间)

使用这个公式,我们可以计算出一年内可接受的停机时间,从而可以使可用性达到预期目标。举例来说,一个可用性目标为99.99%的系统最多在一年中停机52.56分钟,就可以达到预计的可用性目标。当然,并不是所有的系统或者组件适用于这个公式,比如也可以通过请求成功率来定义服务可用性,具体如何度量还要结合实际情况灵活应对。

四、确定服务可靠性目标

如果 100% 不是一个正确的可靠性目标,那么多少才是呢?这其实并不是一个技术问题而是一个产品问题。要回答这个问题,必须考虑以下几个方面:

  • 基于用户的使用习惯,服务可靠性要达到什么程度用户才会满意?
  • 如果这项服务的可靠程度不够,用户是否有其他的替代选择?
  • 服务的可靠程度是否会影响用户对这项服务的使用模式?

为了建立起一个合理的可靠性目标,SRE必须与产品负责人一起努力,将一组商业目标转化为明确的可以实现的工程目标。在实践中,这种转化说起来容易做起来难,SAAS层软件和IAAS层基础设施转化的方式又各不相同。

五、错误预算

SRE和产品负责人必须对每个系统建立起一个合理的可靠性目标。一旦建立,“错误预算”就是“1-可靠性目标”。如果一个服务的可靠性目标是99.99%,那么错误预算就是0.01%,这意味着产品研发部门和SRE部门可以在这个范围内将这个预算用于新功能上线或者产品的创新等任何事情。

错误预算可以用于什么范畴呢?研发团队需要用这个预算上线新功能,吸引新用户。理想情况下,我们应该使用错误预算来最大化新功能上线的速度,同时保障服务质量。这个基本模型建立起来之后,许多常见的战术策略,例如灰度发布、AB测试等手段就全说得通了。这些战术性手段都是为了更合理地使用整个服务的错误预算。

SRE通过引进“错误预算”的概念,解决了研发团队和 SRE 团队之间的组织架构冲突。SRE 团队的目标不再是“零事故运行”,SRE团队和产品研发团队目标一致,都是在保障业务服务可靠性需求的同时尽可能地加快功能上线速度。这个改动虽小,意义却很大。一次“生产事故”不再是一件坏事,而仅仅是创新流程中一个不可避免的环节,两个团队通过协作共同管理它。

相关文章
|
4月前
|
运维 监控 Devops
持续提升敏捷度,你需要实施Sitecore DevOps
作为打破产品和开发团队之间的隔阂障碍的工具,DevOps透过自动化“软件交付”和“架构变更”的流程,推进构建、测试、发布软件能够更加地快捷、频繁和可靠。
101 8
|
11月前
|
存储 运维 监控
什么是 SRE?一文详解 SRE 运维体系
什么是 SRE?一文详解 SRE 运维体系
1590 1
|
20天前
|
运维 监控 Devops
DevOps文化下的企业运维转型
【8月更文挑战第22天】在数字化转型的浪潮中,DevOps不仅仅是一种技术实践,更是一种企业文化。本文将探讨如何在DevOps文化的引导下,实现企业运维的高效转型,包括理念更新、流程优化和团队协作等方面。我们将一起思考如何打破传统壁垒,构建一个更加灵活、高效和协同的运维体系,以应对不断变化的市场和技术挑战。
30 1
|
1月前
|
运维 监控 安全
运维之道:从反应到预防的演变
【8月更文挑战第10天】在数字化浪潮的推动下,运维工作已经从过去的被动式问题处理转变为主动式的系统维护。本文将探讨这一转变背后的动因、实践方法以及对未来的启示,旨在为运维专业人士提供一条从传统运维向现代运维演进的清晰路径。
52 1
|
搜索推荐 测试技术
持续提高软件研发团队效能
提高软件研发团队效能是一个持续的过程,想要快速提高效能的实践几乎都是以失败告终。
148 0
|
供应链 安全 Cloud Native
APIaaS:实现敏捷转型的利器
在今天数字化世界中,各种软件系统、服务和设备之间进行通信并共享资源时,API 扮演着至关重要的角色。近年来,随着企业需要敏捷且可扩展的解决方案以跟上不断扩大的数字生态系统,APIaaS 提供商已经迅速增长。 通过为企业提供无缝访问广泛范围内服务和功能而无需在内部构建和维护 API, APIaaS 为企业带来了显著优势。此外,它还赋予企业采纳新技术进步(如云计算、大数据和物联网)等方式,并释放各种数字资产与能力。
137 0
|
安全 架构师 网络安全
积极防御体系进阶:《DevSecOps敏捷安全》
积极防御体系进阶:《DevSecOps敏捷安全》
|
移动开发 前端开发 小程序
团队和技术建设的方法论
团队和技术建设的方法论
331 0
|
运维 安全 Devops
了解DevOps文化和一些实施方法
太多的错误,太多的时间投入生产功能,编码了数周,太多可避免的事件,今天每个人都意识到了:开发人员和运维必须相互交谈。好的。但是一旦我们说了那句话,具体我们该怎么做呢?本文的目的是告诉您更多有关DevOps 的信息,以及如何在业务中实施 DevOps。
190 0
了解DevOps文化和一些实施方法